חיפוש באתר

קישורים

עמודים

קטגוריות

ארכיב עבור 'דטה סיינס'

איך חוזים תוצאה של מונדיאל?

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

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

איך חוזים תוצאה של מונדיאל?

הסקירה הזו מתבססת בחלקה על המאמר הזה שפורסם באקונומיסט לפני פתיחת המונדיאל של 2018[1].

כדי לחזות את התוצאה של המונדיאל (או כל טורניר ספורט אחר) יש צורך במספר שלבים. ראשית, צריך לדרג באופן כלשהו את הנבחרות/קבוצות המשתתפות בטורניר ואת הבדלי הרמות ביניהן. בשלב השני צריך לספק הערכה/חיזוי לתוצאות של משחקים ספציפיים[2], ובשלב השלישי לנסות לחזות על סמך החיזויים של תוצאות המשחקים את המנצחת הסופית. המאמר שפורסם באקונומיסט מתעמק בעיקר בשלב הראשון.

שלב ראשון: דירוג הנבחרות

יש שתי דרכים לדרג את האיכות של נבחרת או קבוצת ספורט: על ידי הערכת ביצועי הקבוצה, או על ידי הערכת ביצועי השחקנים.

להערכת ביצועי הקבוצה משתמשים בעיקר במודלים מסוג Elo , מודל שפותח במקור עבור משחק השחמט. הרעיון הוא שכל קבוצה מקבלת ניקוד על כל משחק שהיא שיחקה, אבל בניגוד לליגה או לטורנירים שבהם מקבלים 3 נקודות על כל ניצחון, לא משנה באיזה משחק, ב- Elo הניקוד משתנה בהתאם ליריבה, מיקום המשחק, חשיבותו, וכדומה. אם למשל גרמניה מנצחת את סעודיה במשחק ידידות שנערך בלוורקוזן, הניצחון הזה לא שווה הרבה נקודות, כי היריבה נחותה, המשחק לא ממש חשוב, וגרמניה שיחקה במגרש הביתי. לעומת זאת, ניצחון על ברזיל, במשחק שנערך בברזיל, במסגרת חצי הגמר של המונדיאל, שווה הרבה מאוד נקודות. יש כל מיני וריאציות למודל, מה שמסביר חלק מההבדלים בניבויים השונים. למודלים שונים יש מפתח נקודות שונה, ויש גם מודל שנותן ניקוד לא על פי תוצאת המשחק אלא על פי מספר השערים שהובקעו, וכך ניצחון בתוצאה 7:1 שווה הרבה יותר מניצחון 1:0. כמו כן, צריך להחליט על איזה אופק זמן מסתכלים. יכול להיות משחק ששוחק במונדיאל מקסיקו 70 או אפילו בדרום אפריקה ב-2010 כבר לא ממש משמעותי. עם זאת, באחת הכתבות תואר מודל שלקח בחשבון את כל התוצאות מאז המונדיאל הראשון שנערך ב-1930. אני מניח שהמודלים משקללים את המשמעות של כל משחק בהתחשב בזמן שעבר.

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

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

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

אפשר גם לשקלל את את הערכת הנבחרת עם הערכת השחקנים, ויש כל מיני שקלולים: 50-50, 75-25 וכולי. זה כנראה לא כל כך משנה. לפחות לפי הנתונים שהובאו באקונומיסט, יש מתאם גבוה בין שתי שיטות ההערכה:

 

שלב שני: חיזוי תוצאות של משחקים

אחרי שיש לנו מדד שמעריך את האיכות של כל נבחרת, אפשר להתחיל לדבר על חיזוי תוצאות של משחקים. שוב, יש כל מיני דרכים לעשות את זה, אבל העיקרון דומה. לוקחים נתונים של המון משחקים שרלוונטיים בעינכם. אתם יכולים לקחת את הנתונים של המשחק בן גרמניה וסעודיה שנערך בלוורקוזן ביוני 2018 (גרמניה ניצחה 2:1), וגם את המשחק בין גרמניה והולנד בגמר מונדיאל 1974 (מצטער שאני משבית שמחות). לכל משחק הנתונים יכולים לכלול כל מיני פרטים שנראים חשובים למי שבונה את המודל – כגון הערכת הנבחרות לפי מודל Elo כזה או אחר, מקום משחק, חשיבותו, מסורת ניצחונות, מזג האוויר, המשכורת של השחקנים, או מספר הנעליים של השוער. אלה הם המשתנים המסבירים. לכל משחק יש גם תוצאה – זה המשתנה המוסבר, ויש שלוש תוצאות אפשריות. אפשר לשפוך את כל הנתונים לתוך אלגוריתם שמיישם מודלרגרסיה לוגיסטית, random forest, דיפ לרנינג, מה שבא לכם.

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

שלב שלישי: חיזוי מהלך הטורניר

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

נניח לצורך הדוגמה שההסתברויות שהפיק המודל היו 70% לניצחון גרמניה, 20% לתיקו, ו-10% לניצחון מקסיקו. שמים בתוך שק 10 כדורים: 7 לבנים, 2 ירוקים, וכדור שחור אחד. מערבבים טוב טוב את הכדורים ומוציאים כדור אחד. אם הוא לבן, נגיד שגרמניה "ניצחה", אם הוא ירוק נגיד שהמשחק "הסתיים בתיקו", ואם הכדור שהוצאנו הוא שחור נגיד שזה היה יום שחור לגרמניה. אפשר לעשות את זה גם בעזרת מחשב כמובן.

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

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

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

אם המודל שממנו התחלנו הוא מודל טוב, והנתונים שבהם השתמשנו כדי לאמוד את הפרמטרים של המודל הם נתונים טובים, אז גם התחזיות יהיו טובות. אבל…

נקודת תורפה: הנחת אי-תלות

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

למה בכלל צריך סימולציה?

בדף של הבלוג בפייסבוק, Mickey Ktv שאל את השאלה הזו: "מה המשמעות של ביצוע הסימולציה? הרי אם יש לנו הסתברות מסויימת לכל משחק, אנחנו יכולים לפי זה לחשב את ההסתברות של כל קבוצה לנצח. בגלל חוק המספרים הגדולים, תוחלת הסימולציה צריכה לצאת קרובה מאוד להסתברות שמחושבת 'ידנית'. האם זה בגלל שיותר פשוט להריץ סימולציה במחשב מאשר לחשב את ההסתברות? (למרות שבמידה שקולה ניתן לבנות מודל שמחשב את ההסתברות עצמה)"

בתיאוריה אין שום בעיה לקחת נייר ועיפרון ולחשב את כל ההסתברויות וההסתברויות המותנות. אבל הנה ההבדל בין התיאוריה והמציאות. בכל בית יש ארבע נבחרות, ולכן יש 24 אפשרויות שונות לתוצאה הסופית של טבלת הבית. אבל בואו ניתן הנחה – מה שמעניין זה מיהן שתי הנבחרות שמסיימות במקום הראשון והשני, ולכך יש רק 12 תוצאות אפשריות. פרט למקרים מאוד נדירים, לכל התוצאות האלה יש הסתברות חיובית. יש 8 בתים מוקדמים, ולכן מפר התרחישים האפשריים לשמינית הגמר הוא 12 בחזקת 8. זה יוצא קצת פחות מ-430 מיליון (429981696). אז קצת קשה לעשות את זה עם נייר ועיפרון. גם אם נכתוב תכנית מחשב שתבצע את כל החישובים, לא סביר שהיא תסיים לרוץ לפני סיום המונדיאל הבא… במקרה כזה הדרך ובכן, בתיאוריה אין שום בעיה לקחת נייר ועיפרון ולחשב את כל ההסתברויות וההסתברויות המותנות. אבל הנה ההבדל בין התיאוריה והמציאות. בכל בית יש ארבע נבחרות, ולכן יש 24 אפשרויות שונות לתוצאה הסופית של טבלת הבית. אבל בוא ניתן הנחה – מה שמעניין זה מיהן שתי הנבחרות שמסיימות במקום הראשון והשני, ולכך יש רק 12 תוצאות אפשריות. פרט למקרים מאוד נדירים, לכל התוצאות האלה יש הסתברות חיובית. יש 8 בתים מוקדמים, ולכן מפר התרחישים האפשריים לשמינית הגמר הוא 12 בחזקת 8. זה יוצא קצת פחות מ-430 מיליון (429981696). אז קצת קשה לעשות את זה עם נייר ועיפרון. גם אם תכתוב תכנית מחשב שתבצע את כל החישובים, לא סביר שהיא תסיים לרוץ לפני סיום המונדיאל הבא.. היחידה לאמוד את ההסתברויות באופן יעיל היא בעזרת סימולציה.

מה עשו המודלים?

בטבלה שפורסמה באקונומיסט יש תחזיות של כמה מודלים. הסיכויים של ברזיל נעו בין 13 ל-32%, של גרמניה בין 5 ל-16%, של צרפת בין 5 ל-11%, ושל קרואטיה בין 1 ל-3%. שימו לב שהאחוזים בטורים לא מסתכמים ל-100%. מכאן שהמודלים האלה נתנו הסתברויות חיוביות לזכייה של נבחרות "פחות נחשבות" – אולי מצרים או קמרון.

האם המודלים האלה הצליחו או נכשלו? זה תלוי כמובן איך מגדירים הצלחה או כישלון. המודל של Goldman Sachs, למשל, נתן לצרפת הסתברות של 11% לזכות. הוא לא אמר שצרפת לא תזכה. גם מאורעות שהסתברותם 11% מתרחשים לפעמים. הוא גם נתן לברזיל הסתברות של 19% לזכות, או במילים אחרות, אמר כי יש הסתברות של 81% שברזיל לא תזכה. צדק או לא צדק?[4]

על המשמעות של המודלים

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

בעולם שלנו יש שונות אינהרנטית, או כמו שכתבתי למעלה, דברים קורים. מה קרה במשחק של גרמניה מול מקסיקו? קרו המון דברים, ואת רובם אנחנו אפילו לא יודעים. אולי לאחד השחקנים של גרמניה כאב הראש, ושחקן אחר סתם בא במצב רוח לא טוב, ואילו השוער של מקסיקו מאוד נהנה בארוחת הבוקר ועקב כך חש אנרגיות חיוביות. לך תדע. מצד שני, בעשרים השנים האחרונות גרמניה מנצחת באופן עקבי ולאורך זמן ב-75% מהמשחקים שלה, ולכן אני מוכן להתערב שאם גרמניה ומקסיקו יישחקו 100 משחקים, גרמניה תנצח לפחות ב-75 מהמשחקים האלה[7].

וזו הפרשנות שאני נותן לחיזוי – פרשנות שכיחותנית[8].

לפי הפרשנות הזאת, אם אומרים לכם שמחר יש 30% סיכוי לגשם[9], המשמעות היא שבשלושים אחוז מהימים שדומים ליום שיהיה מחר ירד גשם. שימו לב שהפרשנות לפיה ב-30% ממשך היום יורד גשם אינה נכונה – זה כמו להגיד שברזיל תזכה ב-19% מהגביע. ואם המודל של אמזון חוזה שיש סיכוי של 20% שאקנה את הספר שהאלגוריתם מציע לי – פירוש הדבר הוא ש-20% מהאנשים שדומים לי יקנו את הספר.

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

אם לעומת זאת, אנחנו מנסים לחזות תוצאות של הרבה מאורעות דומים ו/או נשנים, התחזיות הופכות להיות יותר אמינות, או כפי שאני מעדיף לומר, יותר סבירות. היו בלונדון הרבה ימים כמו מחר, וב-30% מהם ירד גשם, ולכן התחזית כי מחר יש סיכוי של 30% לגשם היא סבירה. ולאמזון יש מיליון לקוחות כמוני[10], ואם המודל שמציע את הספר הוא מודל טוב, אז 20% מהאנשים האלה יקנו אותו, ובעלי המניות של אמזון מרוצים.


הערות
  1. תודה לצליל אברהם שהפנתה את תשומת ליבי אליו []
  2. גרמניה מול מקסיקו, מישהו? תיכף נדבר על זה []
  3. או כמו שאנשי המשין לרנינג אוהבים להגיד – "אימנתם אותו" []
  4. יש הרבה דרכים להעריך את האיכות של מודלים האופן כמותי. לא אכנס לפרטים []
  5. אם אתם לא בישראל, כמובן []
  6. זו לא תובנה מקורית שלי, שמעתי אותה ממורי ורבי פרופ' צבי גילולה []
  7. על איזה סכום להתערב? צריך כמובן לחשב את ההסתברות שגרמניה תנצח ב-75 משחקים לפחות אם הסיכוי שלה לנצח במשחק בודד הוא 75% []
  8. סטטיסטיקאים אחרים ייתנו אולי פרשנויות אחרות, ואני לא אכנס כאן לפרטים []
  9. כמובן בהנחה שאתם לא בתל אביב אלא בלונדון []
  10. רק שלא קוראים להם יוסי לוי, ואם יש ביניהם יוסי לוי אחר, אז הוא חיקוי זול []

"המחשב טעה. שלא תדעו עוד צער."

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

כל השאלות האלה עלו בעקבות פוסט בבלוג  Toward Data Science שפרסם יו הארווי, רופא המתמחה ברדיולוגיה. הארווי טוען כי האלגוריתמים לא יחליפו את הרדיולוגים בעתיד הנראה לעין, אם בכלל. בדיון בקבוצת Machine & Deep learning Israel בפייסבוק הופיע הפניה לפוסט של לוק אוקדן-ריינר, גם הוא רופא המתמחה ברדיולוגיה.  הפוסט של אוקדן-ריינר מתייחס למאמר שפורסם ממש לפני כמה חודשים (נובמבר 2017), מאת רג'פורקאר ועמיתיו, שתיאר אלגוריתם לפענוח תצלומי רנטגן. בין העמיתים החתומים על המאמר זה נמנה אנדרו אנג, מה שמחייב התייחסות רצינית ביותר למאמר.

ברשימה זו אביא את דבריהם של הארווי ואוקדן-ריינר, ואתייחס למאמר של רג'פורקאר. כמו כן, אומר מה לדעתי צריכים להיות הקריטריונים לפיהם יהיה ניתן לקבוע כי אלגוריתם כזה יכול להחליף רופא מומחה. בנוסף אענה באופן מסודר לטענות (הטובות) שהועלו בקבוצת הפייסבוק.[1]

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

הארווי: אינטליגנציה מלאכותית לא תחליף את הרדיולוגים

ד"ר הארווי, שכנראה לא היה מודע למאמר של ראג'פורקאר כשכתב את דבריו[2] משיב לטענתו של ג'פרי הינטון, מומחה לרשתות נוירונים, שאמר כי "ברור שצריך להפסיק להכשיר רדיולוגים". הוא מביא שלושה טיעונים כתשובה להינטון.

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

הנימוק השני של הארווי הוא שבסופו של דבר מי שנושא באחריות הסופית הם בני אדם. הארווי מציג אנלוגיה בין התעופה ובין הרפואה (לא מוצלחת, לדעתי), אולם בסופו של דבר מדגיש את הנקודה המהותית: כשהרופא טועה, ורופאים אכן עלולים לטעות, הרופא אחראי. מי יהיה אחראי במקרה שבו האלגוריתם טעה? האם החברה שמכרה לבית החולים את המערכת שמפענחת תצלומי רנטגן תהיה מוכנה לקחת אחריות על מקרה שבו חולה ימות כי האלגוריתם טעה ולא זיהה כי הפציינט חולה בדלקת ריאות? אולי החולה שהסכים להפקיד את בריאותו בידיו של האלגוריתם (בהנחה שהייתה לו ברירה) אחראי? הרי אף אחד לא יעלה בדעתו שהרופא ששלח את החולה הבייתה כי האלגוריתם אמר שהוא בריא יהיה אחראי. או שכן? הארווי טוען שאף מערכת AI לא תהיה מדוייקת ב-100%. זה נכון, אבל לדעתי הטענה הזו מחלישה את הטיעון שלו. הרי גם רופאים טועים. עם זאת טוען הארווי כי רופאים עשויים לתפקד טוב יותר מאלגוריתם במקרי קצה, וכאן אני נוטה להסכים איתו.

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

ראג'פורקאר: האלגוריתם יכול לאבחן דלקת ריאות יותר טוב מהרופאים

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

ראג'פורקאר ועמיתיו (שמכאן והלאה אכנה בשם "החוקרים") נעזרו בבסיס נתונים שהכיל יותר מ-100 אלף תצלומי רנטגן של החזה, של כ-38 אלף חולים ב-14 מחלות שונות, וביניהן דלקת ריאות. כל חולה סווג כחולה בדלקת ריאות, או כלא חולה בדלקת ריאות. הנתונים חולקו לפי כל כללי הטקס[4] לשלושה קובצי נתונים נפרדים.

ראשית הם השתמשו בנתונים של כ-29 אלף חולים, ובסך הכל כ-99 אלף תצלומים לצורך "אימון המודל"[5], כ-3.5 תצלומים לחולה, בממוצע.

לאחר שאימנו את המודל, עברו לקובץ השני, בו היו כ-6400 צילומים של כ-1700 חולים (3.8 צילומים לחולה, בממוצע). בעזרת קובץ זה הם ביצעו תיקוף (ולידציה) של המודל.

לסיום, בחנו את ביצועי המודל על הקובץ השלישי, שהכיל 420 צילומים של 389 חולים (כ-1.08 תצלומי רנטגן לחולה, בממוצע).[6]

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

החוקרים חישבו לכל אחד מהרדיולוגים, וגם עבור האלגוריתם, מדד ביצוע מקובל בשם F1. [7]  הם הראו כי ההפרש בין המדד שהתקבל לאלגוריתם גבוה ב-0.051 מהמדד הממוצע של ארבעת הרדיולוגים, וכי ההפרש הזה מובהק סטטיסטית (רווח הסמך להפרש ברמת סמך של 95% הוא 0.005-0.084).

החוקרים מודים כי למודל שלהם יש שלוש מגבלות, אך מציינים רק שתיים[8]. ראשית, הנתונים כללו רק צילומי חזה פרונטליים, בעוד שבכ-15% מהמקרים של דלקת ריאות יש צורך גם בתצלומי צד כדי לבצע אבחנה מדוייקת. שלישית[9] , החוקרים מודים כי העובדה שהמודל והחוקרים לא נעזרו בנתונים נוספים, כגון היסטוריה רפואית, פוגעת בביצועים של הרופאים (ושל המודל כמובן).

אוקדן-ריידר: אלגוריתמים הם מגניבים, אבל…

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

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

עד כמה מדויקים הסיווגים? הם התקבלו בשיטות של text mining. הם לא התבוננו בתצלומים. אוקדן-ריינר טוען שרמת הדיוק של הסיווגים בקובץ אינה מספקת. הוא קבע זאת על ידי התבוננות בתצלומים. אמנם לא בכולם, אלא רק במדגם. הסיווגים שלו, כרדיולוג מומחה, היו שונים באופן מהותי מהסיווגים שבקובץ הנתונים.

השאלה השנייה היא מה המשמעות הרפואית/קלינית של הסיווגים. הנה הבעיה: הקביעה האם לחולה יש או אין דלקת ריאות היא קביעה קלינית. צילום רנטגן של החזה הוא נתון התומך באבחון (surrogate measure) ואינו מספיק לבדו לקבוע האם לחולה יש דלקת ריאות, או שה-"עננים" הנראים בצילום הם סימפטום לבעיה רפואית אחרת. המצב בו רואים "עננים" נקרא קונסולידציה. למעוניינים בהסבר רפואי מפורט יותר אני מפנה לפוסט אחר שלו. השורה התחתונה היא שהסיווג של ואנג ועמיתיו במקרה של "עננים" הוא סיווג של יש קונסולידציה או יש דלקת ריאות. אולם, מבחינה רדיולוגית קשה מאוד להחליט מתי קונסולידציה היא דלקת ריאות או משהו אחר. דלקת ריאות היא סוג של קונסולידציה. ההיפך לא נכון. כאשר ואנג ועמיתיו מציינים בנתונים שיש קונסולידציה, יכול להיות שלחולה יש דלקת ריאות. גם יכול להיות שלא. אוקן-ריינר טוען כי הנתונים שבדק מראים שהבעיה הזו קיימת.

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

מה הבעיה במאמר של רג'פורקאר?

אני סומך ב-100% על העבודה שעשו רג'פורקאר ועמיתיו. ההבנה שלי בתחום בו עוסקים היא בסיסית, ומבוססת בעיקר על לימוד עצמי. לצורך הדיון, אני מוכן להתעלם מהביקורת של אוקדן-ריידר על טיב הנתונים. זה לא משפיע על האיכות של המודל, שהרי התחרות בין ארבעת הרדיולוגים ובין המודל התבססה על אותם נתונים, והמודל ניצח. החוקרים מצאו כי במונחי F1, המודל היה יותר טוב מהרדיולוגים בשר ודם ב-0.051, וההבדל הזה מובהק סטטיסטית.

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

מה הבעיה המרכזית במודל של רג'פורקאר?

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

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

איך צריך להעריך את הביצועים של מודל רג'פורקאר? (וגם את ביצועי הרופא)

תסלחו לי, אבל אני לא מבין מה המשמעות האינטואיטיבית של מדד F1, ומה זה אומר אם הוא שווה ל-0.435. אני ביוסטטיסטיקאי. אחד מתפקידיי הוא לתקשר את התוצאות לצוות הקליני, כדי שהם יוכלו להעריך את המשמעות שלהם. כשהמטרה היא להעריך כלי דיאגנוסטי[10] אני בהחלט מציג בפניהם מדדים כמו accuracy, specificity, ו-sensitivity, למרות שבמקרים רבים גם להם אין משמעות אינטואיטיבית ברורה[11]. אבל כל המדדים האלה לא מספיקים. אלוהים נמצא בפרטים הקטנים, ולכן צריך להתעמק בהם.

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

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

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

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

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

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

השאלה הגדולה היא: האם המודל והרדיולוג טועים את אותן הטעויות?

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

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

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

הדיון בקבוצת הפייסבוק ותשובות לשאלות

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

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

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

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

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

לי יש בעיה עם האמירה הזו. המחשב לא טועה, גם לא המודל (או יותר נכון, האלגוריתם).[13] מקור הטעויות הן בפיתוח האלגוריתם.

  • כאן מתערב בדיון ים פלג ושואל מה אם יש רעש בדאטה.

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

  • ים ממשיך ושואל האם סך התועלת הוא לא ההפרש בין ביצועי האלגוריתם לביצועי האדם.

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

  • ים המשיך והקשה עלי. הוא טען כי אם יש לך אדם שמאבחן נכון X אנשים ומציל את חייהם ויש אלגוריתם שמאבחן נכון X+Y אנשים נכון (מהנתון שהוא יותר מדויק) ומציל את חייהם. יש לך Y יותר אנשים חיים.

זה כמובן נכון, אבל זה רק צד אחד של המטבע. מספר התוצאות החיוביות האמיתיות, או יותר מדוייק – שיעורן. ה-True Positive Rate הוא בהחלט מדד חשוב, אבל כפי שעניתי בקצרה בקבוצת הפייסבוק והסברתי כאן בפירוט, יש עוד צד למטבע, עוד שלושה צדדים למעשה. הבעיות העיקריות, כפי שהסברתי למעלה, נובעות מהאבחונים הלא נכונים: תוצאות חיוביות שגויות (False Positive) ותוצאות שליליות שגויות (False Negative).

  • ערן חוזר ושואל: בוא נניח לרגע שמודל לא יהיה יותר מדוייק, אלא יהיה יותר קרוב ל(1,1) על הROC או לכל מדד אחר שתבחר מבן אדם, עכשיו הטיעונים בסדר? כמו כן הוא מציין כי בדיון גם לא לקחנו בחשבון את העלויות של הקמת חוות GPU לעומת העלות של הכשרת רדיולוג, זה גם משפיע על התועלת?

אני טוען שבמצבים רפואיים התועלות והנזקים הם לא 0-1. נכון שאולי ב-ROC המודל יעשה טוב יותר, עם זה אני לא מתווכח. אני טוען שלטעויות שונות יש משמעויות שונות, וכמו כן, גם במצבים של חוסר טעות, TP ו-TN, עדיין יש משמעויות שונות. המצב נעשה הרבה יותר חמור אם עוברים מדלקת ריאות לסרטן, למשל. מי ייקח אחריות על חולה סרטן שלא יאובחן בזמן בגלל שהמודל היה רועש מדי?

  • אמיר רוזנפלד שואל: יהי המדד האולטימטיבי כפי שאתה מגדיר אותו. נניח שתחת מדד זה מכונה מתעלה על אדם. במי תבחר?

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

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

  • ערן טוען כי אני סתם מתחמק מתשובה, ושואל: הנה, מודל, שעבור רמת הFP והFN של רופא נותן יותר TP מרופא אבל עדין טועה, מחליף את הרופא?

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

סיכום

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

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

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

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

אבל הבעיה העיקרית אינה טכנולוגית אלא אתית.

מי אחראי במקרה שהאלגוריתם טועה? מספר הדעות יהיה כנראה כמספר המשיבים.

בואו נראה מה יכול לקרות בארצות הברית, מכיוון שסביר להניח כי היא תהיה בין המדינות הראשונות בהן יוכנסו אלגוריתמים כאלה לשימוש (בהנחה שבכלל יוכנסו). במדינה בה תביעות על רשלנות רפואית[15] נפוצות מאוד, הנפגעים לא יהססו לתבוע את החברה שמיישמת את האלגוריתמים, את בעלי הפטנט, ומי יודע את מי עוד. האם חברות הביטוח יסכימו לבטח את החברה שמיישמת את האלגוריתם? איש אינו יודע.

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

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

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

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

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

מה בקשר למכונית אוטונומית? כאן כבר מתחילים לדבר על חיי אדם. מישהו יודע כמה טעויות שליליות שגויות (False Negative) יש לאלגוריתם של מובילאיי? וכמה מהטעויות האלה מובילות לתאונות? וכמה מהתאונות האלה כוללות פגיעות בגוף? אני לא יודע. אני לא בטוח שיש מי שיודע.

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

מה בקשר למטוס אוטונומי? מי מוכן לעלות על טיסה טרנס אטלנטית במטוס ללא טייס?

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


הערות
  1. עם זאת, לא אתייחס לטענה "תן תמונה היום לעשרה רדיולוגים ותקבל 11 חוות דעת" []
  2. שכן הוא לא התייחס אליו []
  3. כגון תצלומי רנטגן, סריקות CT ו-MRI, ועוד []
  4. כלומר, באופן רנדומלי []
  5. שזה תיאור מרשים לתהליך של אמידת פרמטרים []
  6. אעיר ואומר כי יש כאן בעיה מסויימת – נתוני הבדיקה שונים באופן מהותי מנתוני האימון והתיקוף. []
  7. זהו הממוצע ההרמוני של הרגישות – recall ושל הדיוק – precision. ראו הגדרות בויקיפדיה []
  8. השלישית ירדה בכביסה? יותר סביר להניח כי אחרי מחשבה נוספת הם הגיעו למסקנה כי המגבלה הנוספת שחשבו עליה אינה באמת מגבלה []
  9. או בעצם שנית, לא משנה []
  10. כמו בדיקת דם חדשה, או אלגוריתם מגניב שפיתחו החבר'ה בסטנפורד []
  11. יש מחקרים שמראים כי הרבה רופאים מפרשים אותם באופן לא נכון, אבל לא ניכנס לזה עכשיו []
  12. כלומר, אני סבור כי ההסתברות לכך גדולה מאפס []
  13. מכאן הגיעה הכותרת הצינית והפרובוקטיבית של הפוסט הזה []
  14. או אפילו יעבור ניתוח מיותר []
  15. ובארצות הברית גם טעות בתום לב נחשבת כרשלנות []

ניתוח מרכיבים ראשיים (PCA) – למה, איך ואיך לא

ברשימה זאת אתן הסבר אינטואיטיבי ולא מתמטי אודות שיטת ה-PCA, ואסביר כיצד להשתמש בה בצורה נכונה.

למה להשתמש ב-PCA?

PCA, או בעברית ניתוח מרכיבים ראשיים, היא שיטה סטטיסטית פופולרית בקרב Data Scientists. כאשר יש קובץ נתונים ובו מספר גדול של משתנים, מעוניינים לצמצם את מספר המשתנים כדי להקל על החישובים. יש מספר דרכים לעשות זאת, ו-PCA היא אחת הדרכים האלה. ה-PCA יכול להחליף קבוצה של משתנים בקבוצת משתנים אחרת, קטנה יותר.

איך להשתמש ב-PCA

לצורך ההדגמה אשתמש בקובץ נתונים body, המכיל נתונים אודות מימדי הגוף של 507 נבדקים. הקובץ זמין לציבור בארכיון הנתונים של ה-Journal of Statistical Education. הקובץ נמצא כאן, והסבר על הנתונים שבקובץ תוכלו למצוא כאן. אני אתרכז בשלושה משתנים בקובץ, המודדים שלושה אספקטים של היקף החזה: ,Chest_depth  Chest_diameter ו- Chest_girth.

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

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

הרעיון הבסיסי של פירסון יוסבר כעת, תוך כדי שימוש מינימלי במתמטיקה.

האינפורמציה שבנתונים מתבטאת בשוניות שבין המשתנים ובשונויות המשותפות שבינהם. לכן הציע פירסון הציע להסתכל על טבלת השונויות המשותפות המשתנים[1] .[2]

Chest_depth Chest_girth Chest_diameter
20.35 4.59 6.33 Chest_diameter
23.93 7.59 4.59 Chest_girth
100.555 23.99 20.35 Chest_depth

בטבלה שמוצגת כאן אנו רואים, למשל, כי השונות המשותפת של המשתנים Chest_diameter ו-Chest_girth היא 23.93. גם מקדם המתאם בין שני המשתנים גבוה, וערכו הוא 0.87. גם המתאמים האחרים גבוהים. ככל שהמתאמים בין המשתנים גבוהים יותר, כך ה-PCA יביא יותר תועלת. לכן מומלץ לבדוק את מקדמי המתאם בין המשתנים לפני הפעלת ה-PCA.

המתמטיקאים מכנים טבלה של מספרים בשם "מטריצה", ובהתאם טבלת השונויות המשותפות נקראת בפי הסטטיסטיקאים "מטריצת השונויות המשותפות". למטריצה הזו יש כל מיני תכונות מתמטיות. יש לה, למשל, שלושה מספרים האופייניים לה, שנקראים בפי המתמטיקאים "ערכים עצמיים[3] . לכל ערך עצמי מתאים יצור מתמטי שנקרא "וקטור עצמי", שהוא בעצם, בדוגמא שלנו, סדרה של 3 מספרים.

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

בדוגמה שלנו הערכים העצמיים של המטריצה הם 110.52, 2.33 ו-1.55. הערך העצמי הגדול ביותר הוא, לכן, 110.52. הוקטור העצמי המתאים לערך עצמי זה הוא: (0.953, 0.230, 0.197 ).   לכן השקלול האופטימלי הוא להכפיל את Chest_depth ב-0.197, להכפיל את Chest_diameter ב-0.230, ולהכפיל את Chest_girth ב-0.953, ולבסוף לחבר הכל. המשתנה המתקבל כך נקרא "המרכיב הראשי הראשון". כמה אינפורמציה נשמרת? ובכן, סכום הערכים העצמיים הוא 114.4. 110.52 חלקי 114.4 זה 0.966. המרכיב הראשי הראשון שומר 96.6% מהאינפורמציה.

באופן דומה אפשר להגדיר את המרכיב הראשי השני והשלישי. בדוגמא שלנו אפשר להסתפק במרכיב הראשי הראשון.

מבחינה גיאומטרית השיטה מתאימה לנתונים מערכת צירים חדשה, על ידי "סיבוב" של ערכי המשתנים. בדוגמה המלאכותית הבאה רואים שני משתנים, X ו-Y, כמו שהם (לפני הפעלת ה-PCA) ואת שני הרכיבים הראשיים (אחרי הפעלת ה-PCA). ניתן לראות כי הנתונים "הסתובבו", וכעת השונות בין המשתנים מתבטאת בעיקר לאורך הציר האופקי.

 

איך לא להשתמש ב-PCA

מי שטרח להסתכל בקובץ הנתונים ראה שיש בו 25 משתנים. מדוע, אפשר לשאול, לא ניקח את כל המשתנים ונפעיל עליהם את פרוצדורת ה-PCA? זה אפשרי מבחינה מתמטית. אם תכניסו את כל הנתונים לתוכנה שמחשבת PCA תקבלו משהו. אבל יש כאן כמה בעיות[4] .

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

שנית, אם תבחנו היטב את רשימת המשתנים, תראו שבקובץ יש משתנה המתאר את מינו של כל אחד מהאנשים שנמדדו. 1 מציין זכר, 0 מציין נקבה. הבחירה של 0 ו-1 היא שרירותית. זהו משתנה שמי. אין כלל משמעות לשונות של המשתנה הזה, או לשונות המשותפת שלו עם משתנים אחרים. הכלל השני: PCA נועד למשתנים כמותיים, כלומר, למשתנים שנמדדים בסולם מנה או סולם רווח. מה לגבי משתנים שנמדדים בסולם סודר? למשל, שביעות הרצון בסולם 1-5? גם כאן בחירת המספרים היא שרירותית. מי שמכניס משתנה כזה לתוך PCA מניח כי שביעות הרצון הזאת היא משתנה כמותי, כלומר ההפרש בין 1 ל-2, למשל, שווה להפרש בין 4 ל-5. הנחה כזו צריך להצדיק. ההצדקה היחידה שראיתי לגבי התייחסות למשתנה כזה כאל משתנה כמותי היא שכנוע עצמי.

גם כשיש נתוני ספירה (count variables), למשל מספר ההתקפים שעבר חולה במשך תקופת זמן מסויימת, צריך להזהר. זה אמנם משתנה כמותי, אבל הוא עלול להיות skewed[5] , ומכאן ייתכן כי המתאם בין משתנה כזה ומשתנים כמותיים אחרים עלול להיות נמוך, ולפיכך לא תהיה תועלת רבה בהכנסתו למודל.

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


הערות
  1. שונות משותפת בין שני משתנים דומה בתכונותיה למקדם המתאם בין המשתנים למעשה, מקדם המתאם מחושב על ידי שקלול של השונות המשותפת. []
  2. כן, אני יודע על  centering ו-scaling ודברים כאלה []
  3. ואפשר להוכיח כי הם יהיו ממשיים וחיוביים []
  4. הניתוח מכאן והלאה תקף גם לשיטות אחרות להקטנת מימדי הנתונים, כגון SVD, MDS וכדומה []
  5. איך מתרגמים את זה לעברית? []

מה עושים כשיש 180000 משתנים מסבירים?

בקבוצת Machine & Deep learning Israel בפייסבוק מישהו שאל את השאלה הבאה:

 I have a feature matrix of about 4000 samples and 180,000 features. Naturally, I want to reduce its dimensions for applying a machine learning algorithm on the reduced matrix.

  1. How do I handle such a big matrix in python for calculations (pandas, other?)
  2. How can I apply feature selection on such a big matrix and what feature selection methods would you try first?

למעשה יש פה שתי שאלות, הראשונה טכנית במהותה (שימוש בשפת פייתון). אני רוצה להתייחס לשאלה השניה.

ראשית, בואו נבהיר אותה בעברית.

לשואל יש קובץ נתונים, עם 4000 תצפיות. בכל תצפית נתונים ערכים של 180,000 משתנים (features בשפת ה-machine learning). ברור לשואל שיש לו יותר מדי משתנים (חלק מהמשיבים לשאלה ציינו זאת במפורש, ויעצו לשואל לאסוף עוד תצפיות) , והוא שואל איך יוכל לבחור מתוכם קבוצה קטנה יותר של משתנים, כך שמימד הבעיה יקטן. כשכמובן הוא מעוניין לבחור את המשתנים המשמעותיים ביותר לבעיה שלו.

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

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

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

השלב הבא הוא לבנות מודל שיכיל כמה משתנים מסבירים. בהנחה שהשואל חילק את קובץ הנתונים שלו לשני חלקים (חלק אחד לצורך פיתוח, והאחר לצורך ולידציה), יש לו 2000 תצפיות, ולכן מספר המשתנים המסבירים צריך להיות נמוך מ-2000 באופן משמעותי, כדי שיהיו לו מספיק דרגות חופש לאמידת הפרמטרים של המודל. נניח שהולכים על מודל עם 500 משתנים מסבירים.

בשלב הראשון בונים מודל הכולל את 500 המשתנים בעלי הערך הפרדיקטיבי הגבוה ביותר. מחשבים את הערך הפרדיקטיבי של המודל.

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

1) בחר את אחד המשתנים שבתוך המודל באופן מקרי.

2) בחר אחד מהמשתנים שלא נכנסו למודל באופן מקרי.

3) הוצא מהמודל את המשתנה שבחרת בשלב (1) והכנס במקומו למודל את המשתנה שבחרת בשלב (2).

4) חשב את הערך הפרדיקטיבי של המודל החדש.

5) אם הערך הפרדיקטיבי של המודל החדש גבוה יותר מהערך הפרדיקטיבי של המודל הישן, השאר עם המודל החדש. אחרת חזור למודל הישן.

6) חזור לשלב (1).

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

לאחר שהתכנסנו למודל כלשהו עם 500 משתנים, נוכל להפעיל עליו את אחת השיטות המקובלות של variable/feature selection, למשל LASSO regression.

כעת, אם עדיין יש צורך, אפשר לקחת משתנים המתארים משתנים דומים או קרובים זה לזה (נניח הטמפרטורה בשעה 10 בבוקר והטמפרטורה בשעה 12 בצהריים), ולהחליף אותם במשתנה שירכז בתוכו את רובה של השונות במשתנים אלה, על ידי הפעלת PCA למשל.

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

בהצלחה!

הסבר קצר על overfitting