ההגדרה: TP חלקי כל מה שסומן חיובי
Precision עונה על שאלה ממוקדת: מתוך כל המקרים שמודל-הסיווג חזה כ'חיוביים', כמה מהם היו חיוביים באמת? הנוסחה, כפי שמגדיר אותה תיעוד-scikit-learn, היא TP חלקי (TP ועוד FP) — מספר החיוביים-האמיתיים (True Positives) מחולק בסך כל התחזיות-החיוביות, כלומר TP בתוספת החיוביים-הכוזבים (False Positives, מקרים שהמודל סימן 'חיובי' בטעות). ערך של 1.0 פירושו שכל תחזית-חיובית שהמודל נתן הייתה נכונה; ערך נמוך פירושו שהמודל מציף תוצאות-חיוביות שחלק ניכר מהן שגוי. שלא כמו Accuracy הכללי, Precision מתמקד אך ורק באיכות התחזיות-החיוביות, ומתעלם לגמרי ממה שקורה במקרים שהמודל חזה 'שלילי'.
מקור המושג: אחזור-מידע ורפואה
Precision צמח מתחום אחזור-המידע (Information Retrieval) — תחום שעסק במקור בדירוג תוצאות-חיפוש רלוונטיות מתוך אוסף מסמכים, עוד לפני שהיה 'למידת-מכונה' במובן המודרני. ספר-היסוד של ואן-רייסברגן על אחזור-מידע (1979), וההמשך שלו בספרות התחום (למשל אצל באיזה-ייטס וריביירו-נטו, 1999), עומדים בבסיס ההגדרה שעדיין בשימוש היום. ברפואה ובאפידמיולוגיה, אותו מדד בדיוק מוכר תחת שם אחר — 'ערך-ניבוי-חיובי' (Positive Predictive Value) — למשל בבדיקת-סקר: מתוך כל מי שהבדיקה סימנה כחולה, כמה אכן חולים. ויקיפדיה מציינת את שני הכינויים כשמות-נרדפים לאותו חישוב בדיוק, מה שממחיש עד כמה המדד הזה רחב מעבר לתחום למידת-המכונה בלבד.
דוגמה מספרית
מדריך-המשתמש הרשמי של scikit-learn נותן דוגמה מינימלית שממחישה את החישוב: על ארבע דוגמאות עם תיוג-אמת [0, 1, 0, 1] ותחזיות-מודל [0, 1, 0, 0], ה-Precision יוצא 1.0 — המודל חזה 'חיובי' (1) פעם אחת בלבד, ואותה תחזית הייתה נכונה. לעומת זאת, ה-Recall של אותו מודל בדיוק הוא 0.5 בלבד, כי הוא פספס תחזית-חיובית אחת מתוך שתיים שהיו אמורות לצאת חיוביות. הדוגמה הקטנה הזאת חושפת את הפער המהותי בין שני המדדים: Precision לא 'מעניש' מודל על מה שהוא פספס, רק על מה שהוא טעה בו כשכן ניבא.
המלכודת: Precision גבוה בלי שהמודל באמת טוב
אפשר להשיג Precision מושלם בקלות מטעה: מודל ששומר על שתיקה כמעט מוחלטת ומסמן 'חיובי' רק במקרה אחד שהוא בטוח בו לחלוטין, יקבל Precision גבוה מאוד — פשוט כי הוא כמעט אף פעם לא מסתכן. הבעיה: מודל כזה מפספס כמעט את כל שאר המקרים החיוביים-האמיתיים, כלומר ה-Recall שלו קורס. בגלל זה Precision לבדו כמעט אף פעם לא מספיק כדי לשפוט מודל-סיווג — הוא נבדק כמעט תמיד יחד עם Recall, ולעיתים קרובות משולב עמו למדד יחיד כמו ציון-F1.
מתי Precision הוא המדד החשוב מביניהם
המשקל שנותנים ל-Precision תלוי בעלות-הטעות. במסנן-דואר-זבל, למשל, חיובי-כוזב (הודעה לגיטימית שסומנה בטעות כספאם) עלול לגרום למשתמש לפספס מייל חשוב — טעות שלרוב חמורה יותר בעיני המשתמש מאשר הודעת-ספאם בודדת שעברה בטעות. באותו אופן, במערכת-המלצות שמציעה תוכן לגולש, תחזית-חיובית שגויה פוגעת ישירות באמון בשירות. בשני המקרים האלה מעדיפים לרוב מודל עם Precision גבוה גם במחיר Recall נמוך יותר — עדיף לפספס כמה מקרים חיוביים מאשר להציף את המשתמש בתוצאות שגויות.
שימוש בפועל: multiclass וטיפול בקצוות
בספריות למידת-מכונה כמו scikit-learn, הפונקציה precision_score מחשבת את המדד גם לבעיות עם יותר משתי מחלקות, על-ידי חישוב Precision נפרד לכל מחלקה ולאחר-מכן איחוד לפי הפרמטר average — 'macro' (ממוצע פשוט בין המחלקות), 'weighted' (ממוצע משוקלל לפי שכיחות) או 'micro' (ספירה גלובלית של TP ו-FP על-פני כל המחלקות יחד). מקרה-קצה שהתיעוד מטפל בו במפורש: כשמודל לא מסמן אף מקרה כ'חיובי' כלל, המכנה TP+FP מתאפס — ואז, כברירת-מחדל, הכלי מחזיר 0 ומעלה אזהרה, במקום לקרוס על חלוקה באפס.