ציון F1 (F1 Score)
הגדרה
ציון F1 (F1 Score) הוא ממוצע הרמוני בין Precision ל-Recall, שמצמצם את שני המדדים למספר יחיד לדירוג והשוואת מודלי-סיווג.
ההגדרה: ממוצע הרמוני, לא חשבוני
ציון F1 משלב Precision ו-Recall למספר יחיד באמצעות ממוצע הרמוני, לא ממוצע חשבוני רגיל: F1 = 2 כפול (Precision כפול Recall) חלקי (Precision ועוד Recall) — או, בנוסח שקול במונחי-בסיס, 2TP חלקי (2TP ועוד FP ועוד FN), כפי שמציג מדריך-scikit-learn. הבחירה בממוצע הרמוני, ולא בממוצע פשוט, אינה מקרית: ממוצע הרמוני 'מעניש' בחומרה פער גדול בין שני המדדים, בעוד ממוצע חשבוני מטשטש אותו.
למה זה משנה: דוגמה שממחישה את ההבדל
מודל היפותטי עם Precision של 1.0 ו-Recall של 0.0 יקבל ממוצע חשבוני של 0.5 — ציון שנשמע סביר, למרות שהמודל הזה כמעט חסר-תועלת (הוא צדק תמיד כשכן ניבא 'חיובי', אבל פספס לגמרי את כל המקרים החיוביים). ה-F1 של אותו מודל, לעומת זאת, יוצא 0 בדיוק — הממוצע ההרמוני קורס לאפס ברגע שאחד המרכיבים הוא אפס. בדוגמה המספרית שמופיעה במדריך-scikit-learn — Precision של 1.0 ו-Recall של 0.5 — ה-F1 יוצא 0.66, נמוך משמעותית מהממוצע החשבוני (0.75), משום שהוא רגיש יותר לפער בין השניים.
מקור המושג: ועידת MUC-4, 1992
ציון F1 הוצג לראשונה בוועידת Message Understanding Conference הרביעית (MUC-4) ב-1992 — סדרת-ועידות שמימן DARPA כדי לעודד ולהשוות שיטות חילוץ-מידע מטקסט, שאופיין התחרותי חייב סטנדרט-הערכה משותף. שם המדד עצמו מיוחס לפונקציה נפרדת מספרו של ואן-רייסברגן על אחזור-מידע (1979), שממנו נגזרה הנוסחה המקורית של 'מדד-האפקטיביות' — נוסחה כללית יותר שמאפשרת גם משקל שונה בין Precision ל-Recall, לא רק משקל שווה.
הכללה: F-beta ומשקל לא-שווה
F1 הוא מקרה פרטי של נוסחה כללית יותר, F-beta: F_β = (1 ועוד β בריבוע) כפול Precision כפול Recall, חלקי (β בריבוע כפול Precision ועוד Recall). כש-β שווה 1 מתקבל F1, שנותן משקל שווה לשני המדדים. β גדול מ-1 (למשל F2) מעניק משקל גבוה יותר ל-Recall, ומתאים למצבים שבהם פספוס יקר יותר מהתראת-שווא; β קטן מ-1 (למשל F0.5) מעניק משקל גבוה יותר ל-Precision, למצבים הפוכים. על אותה דוגמה ממדריך-scikit-learn (Precision 1.0, Recall 0.5), F0.5 יוצא 0.83 — קרוב יותר ל-Precision הגבוה — בעוד F2 יוצא 0.55 בלבד, קרוב יותר ל-Recall הנמוך, מה שממחיש בבירור איך β מזיז את הציון לכיוון המדד שמקבל יותר משקל.
מתי F1 משמש, ומה החיסרון שלו
F1 נפוץ בעיקר כשצריך לדרג או להשוות כמה מודלים לפי ציון יחיד — בלוחות-תוצאות של תחרויות, או כשמחלקה חיובית נדירה הופכת את Accuracy הרגיל לבלתי-אמין. החיסרון המרכזי: F1 מתעלם לחלוטין מהשליליים-האמיתיים (True Negatives) — שני מודלים עם אותו F1 יכולים להיות שונים מאוד בהתנהגותם מול מקרים שליליים. בנוסף, המשקל השווה שהוא נותן ל-Precision ול-Recall לא תמיד משקף את עלות-הטעות האמיתית של המשימה — שיקול שמחייב לפעמים לעבור ל-F-beta עם β שונה מ-1.
שימוש בפועל: fbeta_score ואיחוד ל-multiclass
בספריות כמו scikit-learn, הפונקציה f1_score (ו-fbeta_score הכללית יותר) מחשבות את הציון גם לבעיות עם יותר משתי מחלקות, באותה שיטת-איחוד כמו Precision ו-Recall — 'macro', 'weighted' או 'micro', לפי הפרמטר average. בדוגמה מתועדת של שלוש מחלקות, F1 עם average='weighted' יוצא 0.267 — נמוך בהרבה מ-1.0 המושלם, כי הממוצע המשוקלל 'מעניש' על ביצועים חלשים במחלקות שכיחות. מכיוון ש-F1 נבנה משני מדדים שכל אחד יכול להתאפס בנפרד, הוא יורש את אותה בעיית-קצה: כש-Precision או Recall אינם מוגדרים (חלוקה באפס), גם F1 דורש טיפול מפורש דרך הפרמטר zero_division, בדיוק כמו שני המרכיבים שממנו הוא נבנה.
📬 הגיליון השבועי של Wiki-AI
פעם בשבוע, ביום ראשון: שלושת הדברים החשובים שקרו בעולם הבינה המלאכותית, בעברית פשוטה, וערכים חדשים באנציקלופדיה. לגיליונות
| Precision | Recall | F1 | |
|---|---|---|---|
| השאלה שהוא עונה עליה | מתוך מה שסומן 'חיובי', כמה נכון? | מתוך כל החיוביים-האמיתיים, כמה נתפס? | איך משקללים את שניהם למספר אחד? |
| נוסחה | TP / (TP+FP) | TP / (TP+FN) | 2·Precision·Recall / (Precision+Recall) |
| איך משיגים ערך מושלם בקלות-יתר | לסמן 'חיובי' רק במקרה בודד בטוח | לסמן הכול כ'חיובי' | אי-אפשר — קורס לאפס אם אחד המרכיבים אפס |
| מתי הוא המדד המועדף | חיובי-כוזב יקר (ספאם, המלצות) | שלילי-כוזב יקר (אבחון, הונאות) | צריך ציון יחיד להשוואה או דירוג |
שאלות נפוצות ❓
למה משתמשים בממוצע הרמוני ולא בממוצע רגיל?
ממוצע הרמוני מעניש בחומרה פער גדול בין Precision ל-Recall, ומתאפס לגמרי אם אחד מהם אפס — בעוד ממוצע חשבוני רגיל היה מסתיר את הפער ונותן ציון גבוה מדי למודל חד-צדדי.
מה ההבדל בין F1 ל-F2 או F0.5?
כולם מקרים פרטיים של נוסחת F-beta הכללית. F1 נותן משקל שווה ל-Precision ול-Recall. F2 נותן משקל גדול יותר ל-Recall (מתאים כשפספוס יקר יותר), ו-F0.5 נותן משקל גדול יותר ל-Precision.
למה לא מספיק להסתכל על Accuracy?
כשמחלקה חיובית נדירה יחסית לשלילית, מודל יכול להשיג Accuracy גבוה רק מכך שהוא תמיד מנחש 'שלילי' — בלי שיהיה שימושי בפועל. F1 מתמקד רק בביצועי המודל על המחלקה החיובית, ולכן פחות ניתן לרמות בו.
האם F1 מתאים לכל משימת-סיווג?
לא בהכרח. F1 מניח שעלות חיובי-כוזב ושלילי-כוזב שוות — הנחה שלא תמיד נכונה. כשעלות-הטעות שונה במובהק בין שני הכיוונים, F-beta עם β שונה מ-1 מתאים יותר.