לאחרונה השתתפתי בכמה דיונים בפייסבוק שהגיעו למבוי סתום. ניסיתי להבין למה זה קורה ולבסוף הבנתי: אני דיברתי על מודלים והם דיברו על אלגוריתמים.
לכאורה לא צריכה להיות שום בעיה. מודל זה דבר אחד, אלגוריתם זה דבר אחר. אם תחפשו בגוגל מודל, לא תמצאו שום מקום שיטען כי מודל הוא אלגוריתם. גם ההיפך נכון. אז מה קורה כאן?
כדי להסביר למה אני מתכוון, יש צורך במספר שלבים. תחילה אתן הסבר קצר וכללי (ויש יאמרו: פשטני) מהו מודל ומהו אלגוריתם. אחר כך אסביר ביותר פירוט מהו מודל סטטיסטי, ואיך הוא מתקשר למושג האלגוריתם. לבסוף אסביר מנין נובע הבלבול בין שני המושגים, לפחות בהקשר הסטטיסטי, ואצביע על בעיה העולה מכך.
מהו מודל?
מודל הוא תיאור תיאורטי של תופעה מציאותית. המציאות היא בדרך כלל מורכבת, והמודל מנסה להתרכז בגורמים החשובים שבעזרתם אפשר לתאר את התופעה, לאפיין אותה, ובעיקר לחקור אותה. המודל כמובן אינו תיאור מדוייק לגמרי של המציאות, אבל הוא מספיק טוב כדי לתת תשובה אמינה לשאלות מעניינות. כל מודל מתבסס על הנחות. מודל טוב מסוגל להסביר תצפיות על המציאות ולחזות תצפיות עתידיות. מודל צריך להיות ניתן לפירוש, כלומר אינו קופסה שחורה. מודל טוב הינו חסכוני – כלומר פשוט ככל האפשר. מודל יכול להיות פיזי, למשל חלקיק הטס לו בתוך מאיץ חלקיקים, או עכבר – במדעי החיים או ברפואה. יש מודלים המבוטאים על ידי משוואות מתמטיות.
מהו אלגוריתם?
אלגוריתם הוא סדרה של הוראות לביצוע משימה מסויימת, כך שהמשימה תסתיים במספר סופי של צעדים. מתכון להכנת עוגה הוא אלגוריתם. כאשר למדתם בבית הספר (או ניסיתם ללמוד) חילוק ארוך, למדתם אלגוריתם. לכל אלגוריתם יש קלט. במקרה של הכנת עוגה, אלה החומרים שמשמים להכנתה: קמח, ביצים וכולי. אולם כאשר הדברים על אלגוריתמים מדברים בדרך כלל על אלגוריתמים מתמטיים, והקלט שלהם הוא בדרך כלל מספרים/נתונים. התוצר של האלגוריתם נקרא פלט. פלט יכול להיות למשל מנה של עוגה, או המנה המתקבלת כתוצאה של חילוק ארוך. כמו למודל, גם לאלגוריתמים יש הנחות, ויש גם תכונות, ואני לא אכנס כאן לפירוט מכיוון שידיעותיי בנושא מוגבלות.
מהו מודל סטטיסטי?
מודל סטטיסטי הוא מודל מתמטי הכולל בתוכו אלמנט מקרי. בדרך כלל המודל עוסק במדגם מתוך אוכלוסייה, ומתאר תכונות של האוכלוסייה וקשרים אפשריים ביניהם.
אתן כאן דוגמה למודל סטטיסטי פשוט, מודל הרגרסיה הלינארית. זהו אחד המודלים הפשוטים ביותר בסטטיסטיקה. יהיו נוסחאות, אך לא צריך להיבהל מהן. אלה רק אותיות וסימנים מתמטיים כמו חיבור וכפל. אסביר בדיוק ובפשטות מה זה כל דבר. הנה המודל:
מה רואים כאן?
בשורה/נוסחה הראשונה יש אותיות לטיניות גדולות: X ו-Y. אלה הם המשתנים של המודל. המודל מנסה להסביר את הקשר בין המשתנים. X יכול להיות למשל המשקל של אדם, ו-Y יכול להיות הגובה שלו. אפנה את תשומת ליבכם לכך שהמודל מניח כי X ו-Y הם משתנים כמותיים ורציפים, למרות שזה לא כתוב במפורש בנוסחה. X ו-Y יכולים להיות משקל, גובה, גובה המשכורת, דברים כאלה, אבל לא מספר ההתקפים שהיו לחולה במשך שנה, לא מספר נעליים, ובטח לא מספר קו האוטובוס שעובר בשכונה.
נמשיך בהסבר: בנוסחאות יש גם אותיות יווניות קטנות: אלפא, ביתא, וגם סיגמה. אלה הם הפרמטרים של המודל. הם מתארים את הקשר בין המשתנים X ו-Y.
בעולם מושלם, אלפא וביתא לבדם היו מספיקים לתאר את הקשר בין X ל-Y. קח את המשקל של אדם בקילוגרמים (X), תכפיל אותו ב-0.5, תוסיף 136, ותקבל את הגובה שלו בסנטימטרים. (( את הערכים המספריים שנתתי כאן לאלפא וביתא חישבתי על פי קובץ הנתונים body, בו השתמשתי גם ברשימה על ה-PCA )) קשר כזה בין המשתנים נקרא “קשר לינארי”. זוהי ההנחה השניה של המודל: בעולם מושלם, הקשר בין X ל-Y הוא לינארי.
אבל העולם אינו מושלם. בעולם מושלם הייתי צריך להתנשא לגובה של 188 ס”מ, אבל גובהי רק 180. האות e מבטאת את ההבדל בין העולם המושלם והעולם האמיתי – במקרה שלי 8 ס”מ.
אם יש לכם קובץ עם הרבה נתונים של משקל וגובה, יהיו לכם גם הרבה ערכים של e. המודל מניח כי אם תציירו גרף של כל הערכים של e תקבלו צורת פעמון – התפלגות הערכים של e היא נורמלית. ההנחה הזו – השלישית במודל שלנו, מתוארת בשורה השניה על ידי הסימן ~ והאות N. המודל מניח עוד הנחה על הפעמון: המרכז שלו, הממוצע של כל הערכים של e, נמצא ב-0. יהיו ערכים חיוביים של e, יהיו גם ערכים שליליים, והם יקזזו אחד את השני. הפרמטר סיגמה מבטא את צורת הפעמון. אם לסיגמה יש ערך גבוה יחסית, נקבל פעמון נמוך ורחב. זה אומר שיש הרבה ערכים של סיגמה שרחוקים מאפס. יש הרבה טעויות גדולות, לשני הכיוונים. אם לסיגמה יש ערך נמוך, הפעמון הוא גבוה וצר, כלומר רוב הטעויות הן קטנות וקרובות יחסית לאפס. ככל שסיגמה קרוב יותר לאפס, העולם “יותר מושלם”. אם סיגמה שווה לאפס – זה אומר שאנחנו באמת בעולם מושלם (לא יקרה).
אציין שיש למודל הזה עוד הנחה אחת, אך היא יותר טכנית במהותה ולא אתאר אותה כאן.
עד כאן תיאור המודל.
נניח עכשיו כי יש לנו קובץ, ובו יש לנו נתונים על גובהם ומשקלם של מדגם של אנשים. אנחנו יכולים לשאול הרבה שאלות מעניינות. למשל: האם המודל של רגרסיה לינארית מתאים לנתונים? האם ההנחות של המודל מתקיימות? האם הקשר בין הגובה למשקל הוא לינארי? ואם לא, עד כמה הקשר קרוב לקשר לינארי? מהם הערכים של אלפא, ביתא וסיגמה? ועד כמה הם שונים באופן מובהק מאפס? ועוד הרבה שאלות אחרות. יש דרכים לקבל תשובות לשאלות האלה, כמובן לא בוודאות מלאה, שהרי מדובר כאן במדגם.
לערכים של אלפא ביתא וסיגמה, למשל, אפשר לקבל אומדנים. מייד יופיעו כאן נוסחאות לחישוב האומדנים לאלפא ולביתא. לא להיבהל, הן ממש לא חשובות לדיון שלנו, אני מציג אותן רק למקרה שמישהו יפקפק בקיומן. תסתכלו להן בעיניים ותעברו הלאה:
למודל. (כשהייתי בשנה ב’, כתבתי בעצמי תכנית מחשב כזו, בשפת פורטרן).
מה שחשוב כאן זה להבין שהנוסחאות האלה מסבירות איך לקחת את הנתונים, שמסומנים על ידי x ו-y, ולבצע איתם חישובים שיתנו לנו אמדנים לערכים של אלפא וביתא. הנוסחאות האלה מגדירות אלגוריתם. הנתונים הם הקלט, האמדנים הם הפלט. אפשר לכתוב תכנית מחשב שתבצע את החישובים האלה עבורכם, ועוד הרבה חישובים אחרים, שיענו לשאלות אחרות שאפשר לשאול בקשר למודל. (כשהייתי בשנה ב’, כתבתי בעצמי תכנית מחשב כזו, בשפת פורטרן).
ככלל, לכל מודל סטטיסטי מתלווים כמה אלגוריתמים, שמגדירים כיצד למצוא את התשובות לשאלות שאפשר לשאול על המודל.
מה בקשר להיפך? האם לכל אלגוריתם יש מודל שעומד בבסיסו (לא בהכרח סטטיסטי)? האמת היא שאני לא בטוח בתשובה. אני מזמין את מי שיודע (או חושב שהוא יודע) לענות לשאלה מעניינת זו.
אז מה הבעיה?
הבעיה הגדולה היא שהאלגוריתם עיוור למודל. הנוסחאות שהצגתי לחישוב האומדנים לאלפא וביתא “לא יודעות” שהן נובעות מהמודל, ולא איכפת להן אם ההנחות של המודל מתקיימות או לא. אתם יכולים, למשל, לקחת קובץ נתונים על שחקני כדורסל, להחליט ש-x הוא מספר הנעליים של שחקן, ו-y הוא מספר החולצה שלו. הנוסחאות יעבדו. תכנית המחשב לא תוציא הודעת שגיאה. פייתון לא יקרוס.
וזה נכון גם לאלגוריתמים אחרים. אתם יכולים גם לחשב את מקדם המתאם בין מספרי הנעליים של השחקנים ומספרי החולצה שלהם. או לחשב לכל שחקן את הממוצע של מספר החולצה ומספר הנעליים. נשמע מופרך? בפורום סטטיסטיקה והסתברות בפייסבוק היו כאלה חשבו שלחשב את מקדם המתאם בין המספר הסידורי של סרט בדטהבייס ובין הרייטינג הממוצע שלו זה בסדר גמור. ובפורום ML הסבירו לי שאין שום בעיה לשקלל את משקלו של אדם עם מנת המשכל שלו (אם רק עושים סקיילינג. אל תשכחו לעשות סקיילינג!). וכשטענתי שאין משמעות לשקלול של משקל הגוף ומנת המשכל, ענה לי סניור דטה סיינטיסט אחד כי “המשמעות אינה חשובה”.
נכון שאפשר להריץ את כל האלגוריתמים האלה בלי להבין את המתמטיקה שעומדת בבסיסם. אפשר “לבנות מודל” – זאת אומרת, לבנות איזשהו אלגוריתם קצת יותר מסובך מאבני בניין של אלגוריתמים יותר פשוטים. אפשר לקחת את כל הנתונים ולזרוק אותם ל-xgboost . אני יודע שיש אנשים שעושים את זה, ומה איכפת להם? אם זה יביא לחברה שלהם עוד 30,000 דולר, זה מה שחשוב, ואני לא אומר שזה לא חשוב.
אני חושב שהמשמעות חשובה. אני חושב שאם אתה משתמש במודל, אתה צריך להבין מה הפירוש של המודל, לדעת מה ההנחות שעומדות בבסיסו, וכן, גם לדעת מה המגבלות שלו. ומי שלא מבין, ולא יודע, ולא איכפת לו, הוא מהנדס במקרה הטוב, טכנאי במקרה הפחות טוב, ובשום אופן לא מדען. במה שהוא עושה יש אכן הרבה דטה, אבל מעט מאוד סיינס. וצריך להכיר בזה. וכל אחד צריך לשאול את עצמו מה הוא באמת.
לגבי שקלול מנת המשכל עם משקל הגוף: למה הכוונה ב”שקלול”? אם הכוונה היא לחישוב מתאם, לא קשה לי לקבל בדיקה כזאת (כל עוד היא לא מצפה להראות סיבתיות, כמובן). אני יכול לראות בה “משמעות”.
למה התכוונת?
בוא נחשוב, אודי, על הדוגמא הכי פשוטה של שקלול. בוא נחשוב על ממוצע. נניח שהמשקל שלי הוא 104 ק”ג, וה-IQ הוא 90 (אחד מהנתונים נכון, אחד לא). הממוצע שלהם הוא 97. וכאן צריך לעצור ולשאול: 97 מה? אתה יכול להסביר את מה זה?
לחשב ממוצע בין המשקל למנת המשכל אכן יהיה חסר משמעות. לכן נתתי כאפשרות את חישוב המתאם, שאני יכול לראות בו משמעות.
במאמר, השתמשת במילה “שקלול”, כך ש-לפחות אני-לא יכול להבין מכך מה נעשה במאמר המקורי, והאם מה שנעשה הוא בעל משמעות או לא.
אני מסכים שיש משמעות לחישוב מקדם המתאם בין שני המשתנים הספציפיים האלה. אז מה?
לא יודע, בכיתה ד’ המורה הסבירה לנו שאי אפשר לחבר משקל ומנת משכל (טוב, היא דיברה על תפוחים ושזיפים) כך שלא ברור לי איך מחשבים את הממוצע שלהם.
בימנו ההבנה האנושית של משמעות זה רק prior שפוגע בביצועים. אז נכון שלקחת מס סידורי כמו שהוא זה לא הדרך לבטא פיצרים עבורו, אבל זה דוגמה קיצונית. במקרה של משקל ומנת משכל לא ברור לי למה לדעתך אין קשר ביניהם.
טוב, אם אתה אומר שההבנה האנושית זה רק משהו שפוגע בביצועים, אז באמת אין לי מה לענות לך.
תבחן קצת את אלפא זירו. אתה באמת חושב שהיום בהינתן מידע סטטיסטקאים יגיעו למסקנות יותר טובות על קלאסיפקציה מאלגוריתם כמו random forest?
אני בעיקר חושב שאתה לא מבין מה המסר של הפוסט הזה.
למה זה שגוי לשקלל משקל גוף ומנת משכל?
ראה תשובתי לאודי למעלה.
מותר! אבל במודל אנסמבל…:)
מותר לעשות הכל. על שטויות לא נכנסים לכלא.
חישוב מתאם עם מספר סידורי במאגר כלשהו יכול להיות דווקא מועיל בשני היבטים שונים:
1. גילוי קשר עם סדר הרישום במאגר שלא היה ידוע.
2. במקרה שלא אמור להיות קשר עם הסדר, מספק אמדן די טוב לגובה המתאם שלא צריך לייחס לו משמעות, אפילו אם יצא מובהק.
אני מציע שבאותה הזדמנות תחשב גם את מקדם המתאם בין מספרי הקוים של כל האוטובוסים במדינת ישראל עם קואורדינטות ה-GPS של התחנה הסופית שלהם. בטח יש בזה איזושהי תועלת.
שלחתי תגובה לתגובה במייל אישי.
אני מתנצל על התגובה שלי להערה הקודמת. זו הייתה תגובה מזלזלת שנכתבה בעידנא דריתחא, והייתי צריך לחשוב פעמיים לפני שפירסמתי אותה.
כאחת שבדיוק לוקחת קורס שמשלב למידת מכונה, עשית לי סדר בין מודל לאלגוריתם. הקווים הכללים היו ברורים אבל פה ירדת יותר עמוק והתחדדו אצלי ההבדלים 🙂 (אני אגב לא למדתי אף פעם סטטיסטיקה באופן מסודר אז הרבה דברים לא יושבים כמו שצריך..למשל ההבדל בין ממוצע לחציון)
ואהבתי את הקריקטורה ההומוריסטית שהוספת 🙂
תודה 🙂