ערכי סף ומטריצת הבלבול

נניח שיש לכם מודל רגרסיה לוגיסטית לזיהוי אימיילים של ספאם, שמנבא ערך בין 0 ל-1 שמייצג את ההסתברות שאימייל נתון הוא ספאם. תחזית של 0.50 מציינת שיש 50% סיכוי שהאימייל הוא ספאם, תחזית של 0.75 מציינת שיש 75% סיכוי שהאימייל הוא ספאם וכן הלאה.

אתם רוצים לפרוס את המודל הזה באפליקציית אימייל כדי לסנן ספאם לתיקיית אימייל נפרדת. אבל כדי לעשות זאת, צריך להמיר את הפלט המספרי הגולמי של המודל (למשל, 0.75) לאחת משתי הקטגוריות: 'ספאם' או 'לא ספאם'.

כדי לבצע את ההמרה הזו, בוחרים את הסבירות הסף שנקראת סף סיווג. דוגמאות עם הסתברות גבוהה מהערך הסף מוקצות להקלאס החיובי, כלומר לקלאס שאתם בודקים (כאן, spam). דוגמאות עם הסתברות נמוכה יותר מוקצות להקלאס השלילי, כלומר לקלאס החלופי (כאן, not spam).

כאן מפורט מידע נוסף על סף הסיווג

יכול להיות שתתהו: מה קורה אם הציון הצפוי שווה לסף הסיווג (לדוגמה, ציון של 0.5 כאשר סף הסיווג הוא גם 0.5)? הטיפול במקרה כזה תלוי בהטמעה הספציפית שנבחרה למודל הסיווג. הספרייה Keras תחזה את הכיתה השלילית אם הציון והסף זהים, אבל כלים או מסגרות אחרים עשויים לטפל במקרה הזה בצורה שונה.

נניח שהמודל העניק לכתובת אימייל אחת ציון של 0.99, והוא צופה שיש לה 99% סיכוי להיות ספאם, ולכתובת אימייל אחרת ציון של 0.51, והוא צופה שיש לה 51% סיכוי להיות ספאם. אם תגדירו את סף הסיווג ל-0.5, המודל יסווג את שתי הודעות האימייל כספאם. אם תגדירו את הסף ל-0.95, רק האימייל שקיבל ציון 0.99 יסווג כספאם.

הערך 0.5 עשוי להיראות כסף גבול אינטואיטיבי, אבל הוא לא מומלץ אם העלות של סוג אחד של סיווג שגוי גבוהה יותר מהסוג השני, או אם יש חוסר איזון בין הכיתות. אם רק 0.01% מהודעות האימייל הן ספאם, או אם סימון של הודעות אימייל לגיטימיות כספאם גרוע יותר מאשר לאפשר לספאם להיכנס לתיבת הדואר הנכנס, סימון כספאם של כל מה שהמודל סבור שיש לו סיכוי של 50% לפחות להיות ספאם יניב תוצאות לא רצויות.

מטריצת בלבול

ציון ההסתברות הוא לא המציאות, או האמת המוחלטת. יש ארבע תוצאות אפשריות לכל פלט ממחלק בינאר. בדוגמה של סיווג ספאם, אם פורסים את האמת כעמודות ואת התחזית של המודל כשורות, התוצאה היא הטבלה הבאה שנקראת מטריצת בלבול:

תוצאה חיובית בפועל ערכים שליליים בפועל
תחזית חיובית חיובי אמיתי (TP): הודעת אימייל שסווגה כספאם בצורה נכונה. אלו הודעות הספאם שנשלחות באופן אוטומטי לתיקיית הספאם. חיובי שגוי (FP): הודעת אימייל שאינה ספאם מסווגת באופן שגוי כספאם. אלה הודעות האימייל החוקיות שמגיעות לתיקיית הספאם.
תחזית שלילי False negative (FN): הודעת ספאם שסווגה באופן שגוי כ'לא ספאם'. אלו הודעות ספאם שלא מזוהות על ידי מסנן הספאם ויוצאות לתיבת הדואר הנכנס. True negative (TN): כתובת אימייל שאינה ספאם שסווגה כראוי כלא ספאם. אלה הודעות האימייל החוקיות שנשלחות ישירות לתיבת הדואר הנכנס.

שימו לב שהסה"כ בכל שורה כולל את כל התחזיות החיוביות (TP + FP) ואת כל התחזיות השליליות (FN + TN), ללא קשר לתקפות. לעומת זאת, הסכום הכולל בכל עמודה מייצג את כל התוצאות החיוביות האמיתיות (TP + FN) ואת כל התוצאות השליליות האמיתיות (FP + TN), ללא קשר לסיווג של המודל.

אם הסכום הכולל של האירועים החיוביים בפועל לא קרוב לסכום הכולל של האירועים השליליים בפועל, מערך הנתונים לא מאוזן. דוגמה למערך נתונים לא מאוזן יכולה להיות קבוצה של אלפי תמונות של עננים, שבהן סוג הענן הנדיר שמעניין אתכם, למשל ענני ערפל, מופיע רק כמה פעמים.

ההשפעה של הסף על תוצאות חיוביות אמיתיות, תוצאות חיוביות שגויות ותוצאות שליליות

ערכי סף שונים בדרך כלל מובילים למספרים שונים של תוצאות חיוביות ושליליות חיוביות ושקריות, ומספר שלילי של true ו-false. הסרטון הבא מסביר למה זה קורה.

אפשר לנסות לשנות את הסף בעצמך.

הווידג'ט הזה כולל שלושה מערכי נתונים לדוגמה:

  • נפרדות, שבהן בדרך כלל יש הבחנה טובה בין דוגמאות חיוביות לדוגמאות שליליות, ורוב הדוגמאות החיוביות מקבלות ציונים גבוהים יותר מהדוגמאות השליליות.
  • לא מופרדת: מקרים שבהם הרבה דוגמאות חיוביות קיבלו ציונים נמוכים מדוגמאות שליליות, והרבה דוגמאות שליליות קיבלו ציונים גבוהים יותר מדוגמאות חיוביות.
  • לא מאוזנת, מכילה רק כמה דוגמאות של המחלקה החיובית.

בדיקת ההבנה

1. נניח שיש מודל לסיווג של פישינג או תוכנות זדוניות, שבו אתרים של פישינג ותוכנות זדוניות נמצאים בכיתה שמסומנת ב-1 (true), ואתרים לא מזיקים נמצאים בכיתה שמסומנת ב-0 (false). המודל הזה מסווג בטעות אתר לגיטימי כתוכנה זדונית. איך זה נקרא?
תוצאה חיובית שגויה
דוגמה שלילית (אתר לגיטימי) סווגה בטעות כדוגמה חיובית (אתר זדוני).
חיובית אמיתית
אתר חיובי אמיתי פירושו אתר של תוכנה זדונית שמסווג כראוי כתוכנה זדונית.
תוצאה שלילית שגויה
תוצאה שלילית שגויה היא אתר זדוני שסווג בטעות כאתר לגיטימי.
תוצאה שלילית אמיתית
תוצאה שלילית אמיתית היא אתר לגיטימי שמסווג כאתר לגיטימי.
2. באופן כללי, מה קורה למספר הזיהויים השגויים כאשר סף הסיווג עולה? מה לגבי תוצאות חיוביות אמיתיות? אפשר להתנסות בפס ההזזה שלמעלה.
גם התוצאות החיוביות האמיתיות וגם התוצאות החיוביות השגויות יורדות.
ככל שהסף יעלה, סביר להניח שהמודל יחזה פחות תוצאות חיוביות באופן כללי, גם תוצאות חיוביות אמיתיות וגם תוצאות חיוביות כוזבות. סיווג ספאם עם ערך סף של 0.9999 יסמן הודעת אימייל כספאם רק אם הסבירות לסיווג היא לפחות 99.99%. כלומר, הסבירות לסימון שגוי של הודעת אימייל לגיטימית נמוכה מאוד, אבל גם הסבירות להחמיץ הודעת אימייל ספאם אמיתית גבוהה.
גם מספר התוצאות החיוביות האמיתיות וגם מספר התוצאות החיוביות הכוזבות יגדל.
בעזרת פס ההזזה שלמעלה, נסו להגדיר את הסף ל-0.1 ואז לגרור אותו ל-0.9. מה קורה למספר התוצאות החיוביות הכוזבות ולתוצאות החיוביות האמיתיות?
מספר הזיהויים החיוביים האמיתיים יגדל. ירידה בתוצאות חיוביות מוטעות.
בעזרת פס ההזזה שלמעלה, נסו להגדיר את הסף ל-0.1 ואז לגרור אותו ל-0.9. מה קורה למספר התוצאות החיוביות הכוזבות ולתוצאות החיוביות האמיתיות?
3. באופן כללי, מה קורה למספר השגיאות השליליות המזויפות כשסף הסיווג עולה? מה לגבי מילות מפתח שליליות אמיתיות? כדאי להתנסות עם פס ההזזה שלמעלה.
גם מספר הזיהויים השליליים האמיתיים וגם מספר הזיהויים השליליים הכוזבים גדלים.
ככל שהסף עולה, סביר להניח שהמודל יחזה יותר תוצאות שליליות באופן כללי, גם תוצאות שליליות אמיתיות וגם תוצאות שליליות שגויות. בסף גבוה מאוד, כמעט כל האימיילים, לא ספאם ולא ספאם, יסווגו כלא ספאם.
גם מספר הזיהויים השליליים האמיתיים וגם מספר הזיהויים השליליים הכוזבים יורדים.
בעזרת פס ההזזה שלמעלה, נסו להגדיר את הסף ל-0.1 ואז לגרור אותו ל-0.9. מה קורה למספר התוצאות השליליות המוטעות והשליליות הנכונות?
מספר הערכים השליליים האמיתיים עולה. מספר הזיהויים השגויים השליליים יורד.
בעזרת פס ההזזה שלמעלה, נסו להגדיר את הסף ל-0.1 ואז לגרור אותו ל-0.9. מה קורה למספר הזיהויים השגויים שליליים ולזיהויים השגויים שליליים אמיתיים?