ככל שקבלת ההחלטות על בסיס מודלי ML הופכת פופולרית יותר ויותר, ניטור הביצועים של אותם מודלים חשוב מתמיד.
היבט קריטי בתהליך הניטור הוא זיהוי סחף של ביצועי המודל (Performance monitoring), מצב בו דיוק המודל או מדדי ביצועים אחרים משתנים עם הזמן. עם זאת, זיהוי סחף של ביצועים בזמן אמת לא תמיד אפשרי מכיוון ש״תיוג האמת״ (True label) לא תמיד זמין באופן מיידי. דוגמא אחת למקרה בו ״תיוג האמת״ לא זמין באופן מיידי היא העברה בנקאית, לוקח בדר״כ כמה ימים עד שניתן להכריז שההעברה בוצעה בהצלחה או לא.
כאן זה המקום שבו ניטור סחף הנתונים (Data drift monitoring) נכנס לפעולה!
ניטור סחף נתונים מיידי ביחס לניטור ביצועי המודל מאחר והוא תלוי רק בנתוני הקלט ולא ב״תיוג האמת״. ניטור סחף נתונים הוא תהליך שמטרתו זיהוי שינויים במאפיינים הסטטיסטיים של נתוני הקלט (Model input) לבין נתונים המשמשים כייחוס עבור ההתפלגויות שהמודל ״מכיר״ מזמן האימון (למשל, Train set).
כדי לבצע פעולות על מנת לתקן את המצב ולטפל בסחף (פעולות לדוגמא - להכשיר את המודל מחדש, להחליף את המודל עם מודל אחר, לבצע שינויים בשכבת העיבוד המקדים (Pre-processing layer), לבצע שינויים ב-ETL וכו'), עלינו לזהות את מקור הסחף ולקבוע האם השינויים אינם רק מובהקים סטטיסטית אלא גם ״שווים״ לפעול לפיהם. לשם כך, עלינו להשתמש במבחנים הסטטיסטיים המותאמים לבעיה. עם מבחנים סטטיסטיים נכונים, נוכל למנוע התראות שווא ומקביל למקסם התראות אמת ועל ידי כך לשמור על מודל איכותי לאורך זמן.
במאמר זה, נבין מדוע זה חיוני להשתמש במבחנים סטטיסטיים הנכונים בעת ניטור סחף נתונים ונדון בכמה מבחנים סטטיסטיים נפוצים.
ללא בדיקות סטטיסטיות מתאימות לזהות סחף נתונים זה קשה!
כאשר מנטרים סחף נתונים, חיוני להבחין בין שינויים "אמיתיים" בנתונים לבין תנודות "אקראיות" המתרחשות באופן טבעי. בדיקות סטטיסטיות יכולות לעזור לנו לקבוע אם השינויים שנצפו עשויים להיות כתוצאה מקרית או שהם משמעותיים מספיק כדי להצדיק חקירה נוספת. נצטרך להתמקד ביישום נכון של הבדיקות הסטטיסטיות על הפיצ'רים. זה יעזור למנוע high FPR/TPR (יותר מדי התרעות כאשר אין איום או לא מספיק כאשר יש איום).
מבחנים סטטיסטיים נפוצים
ישנן מספר מבחנים סטטיסטיים נפוצים שניתן להשתמש בהם כדי לנטר סחף נתונים. לכל מבחן סטטיסטי יש מאפיינים מסוימים והנחות מובנות. הנה כמה מהם:
- מבחן מאן-וויטני (Mann–Whitney) הוא מבחן סטטיסטי לא פרמטרי המשמש להשוואה בין שני מדגמים בלתי תלויים. מבחן שימושי לזיהוי סחף נתונים מכיוון שהוא יכול לזהות הבדלים בהתפלגות של מדד בין שתי תקופות זמן או קבוצות, גם אם הנתונים אינם מחולקים באופן רגיל או מכילים חריגים (Outliers). עם זאת, יש לו הספק נמוך יותר מבדיקות פרמטריות, הוא יכול לזהות רק הבדלים בחציון, אינו יכול לקבוע את הכיוון או גודל השינויים, ודורש שיקול זהיר של רמת המובהקות וגודל ההשפעה.
- מבחן חי ריבוע (Chi-square test) הוא מבחן סטטיסטי המשמש להשוואת נתונים קטגוריים בין שתי קבוצות או יותר. מבחן שימושי לזיהוי סחף נתונים מכיוון שהוא יכול לזהות שינויים בהתפלגות הנתונים הקטגוריים לאורך זמן ואינו מניח הנחות לגבי התפלגות הנתונים. עם זאת, הוא דורש גודל מדגם גדול יחסית, מתקשה כאשר יש מספר רב של קטגוריות (20 או יותר) במשתנים הבלתי תלויים או התלויים ואינו יכול לקבוע את כיוון או גודל השינויים. המבחן מיועד לנתונים קטגוריים בלבד.
- אנובה (ANOVA) הוא מבחן סטטיסטי המשמש להשוואת הממוצעים של שלוש קבוצות או יותר. מבחן שימושי לאיתור שינויים בממוצע של משתנה רציף לאורך זמן או בין קבוצות. ANOVA יכול להתמודד עם מספר קבוצות והוא מבחן פרמטרי, המספק כוח סטטיסטי גדול יותר מאשר בדיקות לא פרמטריות כאשר ההנחות מתקיימות. עם זאת, הוא מניח נורמליות ושונות שוות של הקבוצות, ואינו יכול לקבוע את הכיוון או גודל השינויים. זה עשוי להיות פחות מתאים לגדלים קטנים של מדגם או נתונים עם חריגים (Outliers).
- מבחן טי (t-test) הוא מבחן סטטיסטי המשמש להשוואת האמצעים של שתי קבוצות. מבחן שימושי לזיהוי שינויים בממוצע של משתנה רציף בין שתי תקופות זמן או קבוצות. יתרון אחד הוא הפשטות והיכולת שלו לטפל בנתונים מבוזרים נורמליים. עם זאת, הוא מניח נורמליות, רגיש לחריגים (Outliers), ויכול להשוות רק בין שתי קבוצות.
- מבחן קולמוגורוב-סמירנוב (KS-test) הוא מבחן סטטיסטי לא פרמטרי המשמש להשוואת התפלגות של משתנה רציף בין שתי אוכלוסיות או פרקי זמן. מבחן רב תכליתי שיכול להשוות התפלגות בכל צורה או גודל. לעתים קרובות הוא ברירת המחדל לזיהוי שינוי בהתפלגות בפיצ'רים נומריים. למרות שהוא עושה את העבודה במקרים רבים, הבדיקה יכולה להיות "רגישה מדי" כאשר יש שינוי משמעותי בקנה המידה בין ה-Train set לבין ה-Input data. המבחן עלול להפעיל התראות שווא עבור מקרי שימוש רבים בעולם האמיתי, רק בגלל שגודל המדגם משמעותית גדול יותר מגודל הדאטה סט עליו המודל התאמן. עלינו לקחת בחשבון התנהגות זו בעת בחירת מדד הסחיפה שלנו.
זכרו שאין דבר כזה סחף נתונים "אובייקטיבי" ומבחן "מושלם" עבורו - זה תלוי במקרה השימוש והנתונים. לדוגמה, בדיקות מסוימות רגישות יותר מאחרות ולכן אינטואיטיבית עשויות להתאים לפיצ'רים בעלי חשיבות גבוהה במודל.
בעת התאמת המבחן הסטטיסטי פיצ'רים, חשוב להתמקד ב:
- המתאם בין פיצ'ר לביצועי המודל (שימוש בערכי SHAP יכול להיות שימושי)
- סוג הפיצ'ר וההתפלגות שלו (Feature type and distribution)
- גודל הדגימות שאנו משווים
- גודל הסחף שברצוננו לזהות
- עלות הביצועים במידה ואיכות המודל יורדת
לסיכום
ניטור ביצועי המודל וסחף נתונים חיוניים להבטחת הצלחה ארוכת טווח של מודלים מבוססי למידת מכונה. השימוש במבחנים סטטיסטיים יכול לעזור לנו להבדיל בין שינויים בעלי משמעות בנתונים לבין תנודות אקראיות. על ידי שימוש במבחנים סטטיסטיים מתאימים, אנו יכולים לבצע פעולות מבוססות נתונים שישפרו את ביצועי המודל שלנו ויניבו תוצאות טובות יותר עבור החברה.