Confusion matrix ומדדים להערכת המודל

מחבר:
בתאריך:

אחרי שסיימנו לפתח את המודל במדריך הקודם השאלה היא עד כמה הוא טוב. תשובה אחת שראינו משתמשת במדד "דיוק" (accuracy). הבעיה עם המדד accuracy שהוא יודע להעריך באופן כללי עד כמה המודל הוא מדויק אבל הוא לא יודע להגיד לנו אילו שגיאות המודל עשה. כדי לזהות את השגיאות משתמשים ב- Confusion matrix ומדדים להערכת המודל (model evaluation metrics).

שימו לב, ה-confusion matrix והמדדים שנראה במדריך טובים לבעיות של סיווג לקבוצות מובחנות (mutually exclusive), ולא לבעיות של רגרסיה.

בואו ניקח לדוגמה מכונה שלומדת להבחין בין אנשים חולים לחצבת לבריאים (=מי שאינם חולים בחצבת). לפני תהליך הלמידה צריך להכין את הדוגמאות, ולשם כך רופא מיומן צריך לסווג 300 אנשים לקבוצת החולים והבריאים. בשלב הבא, נפריד את האנשים לשתי קבוצות, אימון (train) וביקורת (test). שני שליש מהאנשים (200) יוקצו לקבוצת האימון שממנה תלמד המכונה, והיתר (100) ישמרו בצד בקבוצת הביקורת, שתשמש להערכת המודל שפיתחה המכונה. אחרי שהמכונה התאמנה ופיתחה את המודל, נעריך את המודל על קבוצת הביקורת ששמרנו בצד, ונקבל את התוצאות הבאות:

n=100 לא חולה לפי המודל חולה לפי המודל
לא חולה במציאות 50 2
חולה במציאות 1 47

העמודות מכילות את הקבוצות כפי שסווגו על ידי המודל, והשורות את הסיווג בפועל.

הטבלה לעיל היא מקרה פרטי של Confusion matrix שבה כל תא מוקדש למקרה אחר. זיהוי נכון או שגוי. המקרה הכללי הפשוט ביותר של Confusion matrix מחלק לשתי קבוצות מובחנות. "בריאים" לעומת "חולים", "לא" לעומת "כן", 0 לעומת 1, או negative לעומת positive.

Predicted positive Predicted negative
False positive True negative Actual negative
True positive False negative Actual positive

המודל צודק בשני המקרים שבהם הוא משייך את הדוגמאות לקבוצות הנכונות. True positive ו-True negative.

המודל טועה כאשר הוא משייך לקבוצות הלא נכונות (2 התאים הוורודים).

הטעויות מחולקות לשני סוגים:

False positive - כאשר הערך האמיתי הוא negative אולם התחזית של המודל היא positive. בדוגמה שלנו, המודל משייך בטעות אדם בריא לקבוצת החולים.

False negative - כאשר הערך האמיתי הוא positive והתחזית היא negative. בדוגמה שלנו, חולה במציאות מזוהה כבריא על ידי המודל.

False positive ידועים גם כ-Type I error בעוד False negative ידועים גם כ-Type II error.

הטבלה הזו מלמדת אותנו איזה סוג של שגיאות המודל עושה.

 

מתי להשתמש ב-Confusion matrix?

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

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

Confusion matrix לא יכול לשמש להערכת בעיות של רגרסיה ליניארית שבוחנות קשר בין גדלים (תחזית יבול העגבניות על פי מספר ימי הקרה בשנה).

 

מדדים להערכת המודל

כדי להעריך את ביצועי המודל באופן כללי נלך צעד נוסף קדימה ונפיק מה-Confusion matrix מדדים נוספים להערכת המודל.

 

דיוק (accuracy)

המדד הפשוט ביותר הוא דיוק (accuracy), שהוא היחס בין הסיווגים הנכונים לבין סך כל הסיווגים.

accuracy =(tp+fn)/(tp+tn+fp+fn)

בדוגמה שלנו:

accuracy=(50+47)/100=0.97

הדיוק של המודל הוא 0.97 כי 97 מתוך 100 הדוגמאות סווגו לקבוצה הנכונה.

הבעיה עם המדד accuracy שהוא אמין רק בתנאי שהדוגמאות מאוזנות (אותה פרופורציה לכל קבוצה לדוגמה, 50 חולים ו-50 בריאים). אבל לא תמיד זה המצב וכדי לפתור את הבעיה נהוג להשתמש במדד F1 score. כדי לחשב את ה-F1 score צריך להכיר עוד שני מדדים, שיעור ה-recall, ושיעור ה-precision.

 

Recall

Recall היא הפרופורציה של דוגמאות חיוביות שזוהו נכונה (true positive) מכל הדוגמאות החיוביות שהמודל זיהה.

recall=tp/(tp+fn)

שמות נוספים ל-recall הם: true positive rate וגם sensitivity.

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

נחשב את שיעור ה-recall עבור הדוגמה שלנו:

accuracy=47/(47+1)=0.98

 

Precision

Precision הוא היחס של תצפיות חיוביות שהמודל זיהה נכונה מכל התצפיות שהמודל זיהה שהם חיוביות (בצדק או שלא בצדק).

precision=tp/(tp+fp)

בדוגמה שלנו, Precision עונה על השאלה מה שיעור החולים בקרב מי שהמודל סיווג כחולים?

accuracy=47/(47+2)=0.96

 

F1 score

מדד F1 עושה ממוצע משוקלל של ה-Precision וה-Recall, ובכך לוקח בחשבון את השגיאות משני הסוגים. כך נראית הנוסחה:

f1 score=(2*recall*precision)/(recall+precision)

החישוב הוא בהתאם לנוסחת הממוצע ההרמוני.

נחשב את ערך F1 עבור הדוגמה שלנו:

accuracy=(2*0.96*0.98)/(0.96+0.98)=0.97

הערך הגבוה ביותר ש-F1 יכול לקבל הוא 1. בדוגמה שלנו קיבלנו 0.97 שהוא ערך F1 גבוה מאוד שמעיד על כך שהמודל הצליח במשימת הסיווג שהוא למד.

עד עכשיו טפלנו במקרה פשוט של 2 קבוצות מובחנות אבל מה לגבי 3 קבוצות מובחנות או יותר.

 

הערכת המודל עבור 3 קבוצות מובחנות

כפי שניתן להשתמש ב-confusion matrix והמדדים שראינו במדריך עבור 2 קבוצות מובחנות ניתן להשתמש באותם הרעיונות עבור 3 קבוצות מובחנות או יותר.

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

Predicted s3 Predicted s2 Predicted s1
0 0 15 Actual s1
1 10 0 Actual s2
12 0 0 Actual s3
  • את ה-confusion matrix צריך לקרוא כטבלה. השורות הם הסיווג בפועל שהם הזנים כפי שהוגדרו במסד הנתונים. העמודות הם מספר הדוגמאות שסווגו על ידי המודל לזנים השונים.
  • בכל שורה זן אחר של פרחים לפי הסיווג בפועל שאותו קיבלנו עם מסד הנתונים. השורה הראשונה שייכת לזן הראשון, השנייה לשני, וכיו"ב.
  • בעמודות מופיעות מספר הדוגמאות שסווגו על ידי המודל לזנים השונים. העמודה הראשונה, את הסיווג לזן הראשון. השנייה את הסיווג לשני, וכיו"ב.
  • בשורה הראשונה, 15 מתוך 15 דוגמאות שצריכות להיות מסווגות לזן הראשון אכן זוהו נכונה על ידי המודל.
  • בשורה השנייה אפשר לראות שהמודל טועה ומשייך את אחת הדוגמאות לזן השלישי במקום לזן השני.

ואילו התוצאות שחישב עבורנו sklearn עבור המדדים Recall, Precision וכמובן F1.

מדד f1 להערכת ביצועי המודל

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

לכל המדריכים בסדרה על לימוד מכונה

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

הוסף תגובה חדשה

 

= 7 + 5