דיוק-חיובי (Precision)

יסודות בינה מלאכותית

הגדרה

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

ההגדרה: 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 ומעלה אזהרה, במקום לקרוס על חלוקה באפס.

שאלות נפוצות ❓

מה ההבדל בין Precision ל-Accuracy?

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

איך מחשבים Precision כשיש יותר משתי מחלקות?

מחשבים Precision בנפרד לכל מחלקה (מול כל שאר המחלקות יחד), ואז מאחדים לפי שיטת-ממוצע — macro, weighted או micro — בהתאם לשאלה אם רוצים לתת משקל שווה לכל מחלקה או משקל לפי שכיחותה.

האם אפשר להשיג Precision מושלם בלי מודל טוב?

כן — מודל שממעט מאוד לסמן 'חיובי' ובוחר רק מקרים בטוחים במיוחד יכול להגיע ל-Precision גבוה מאוד, במחיר Recall נמוך שמפספס רוב המקרים החיוביים-האמיתיים. זו הסיבה שבודקים את שני המדדים יחד.

מה הקשר בין Precision ל'ערך-ניבוי-חיובי' ברפואה?

אלו שני שמות לאותו חישוב בדיוק. ברפואה, 'ערך-ניבוי-חיובי' (Positive Predictive Value) בודק מתוך כל התוצאות החיוביות של בדיקת-סקר, כמה מהנבדקים חולים באמת — בדיוק אותה נוסחה כמו Precision בלמידת-מכונה.