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

נניח שיש לכם מודל רגרסיה לוגיסטית לזיהוי אימיילים של ספאם, שמנבא ערך בין 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): אימייל שאינו ספאם שסווג בטעות כספאם. אלה הודעות האימייל החוקיות שמגיעות לתיקיית הספאם.
תחזית שלילית תוצאה שלילית שגויה (FN): הודעת אימייל שסווגה בטעות כלא ספאם. אלה אימיילים של ספאם שלא זוהו על ידי מסנן הספאם והגיעו לתיבת הדואר הנכנס. שלילית נכונה (TN): אימייל שאינו ספאם שסווג כראוי כלא ספאם. אלה הודעות האימייל החוקיות שנשלחות ישירות לתיבת הדואר הנכנס.

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

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

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

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

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

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

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

בדיקת ההבנה

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. מה קורה למספר הזיהויים השגויים שליליים ולזיהוי השגויים שליליים אמיתיים?