יום שני, 6 ביוני 2022

441 Datascience workflow with Yuval from AppsFlyer

אנחנו מארחים בכרכור את יובל פוקס מחברת AppsFlyer כדי לדבר על Workflow של Data Science.
בתור התחלה - Disclaimer: רן עובד ב-AppsFlyer והוא גם המנהל של יובל (ושל אנשים נוספים בקבוצה).


(רן) אני מניח שהנושא יכול להיות מעניין בעיקר למי שהוא לא Data Scientist - זאת אומרת, אני מניח שמי שעוסקים בזה ביום-יום יתעניינו במה שקורה בדשא של השכן, אבל שאינם Data Scientist, אני מניח שירצו לשמוע מהי המתודולוגיה, איך עובדים . . . .
אז לפני שנקפוץ לשם - יובל, כמה מילים על עצמך . . . .
  • (יובל) אני יובל ואני עובד היום ב-AppsFlyer
  • לתחום הזה האמת שנכנסתי די במקרה, לפני קצת יותר מ-10 שנים - 
    • התקבלתי כסטודנט לאינטל לקבוצת שנקראית Advanced Analytics, שקיימת עד היום
      • אני חושב שגם היום יש בה את כמות ה-DS-ים הגדולה ביותר בחברה
      • ושם הכרתי את העולם הזה - אז היה לזה שם קצת פחות סקסי, קראו לזה Data Mining - וככה התחלתי להתאהב.
      • לקחתי  קורסים ב-Coursera, העמקתי בעוד קורסים במהלך התואר הראשון - ולאחר מכן התחלתי לכוון את עצמי באמת לכיוון הזה.
    • כשסיימתי שם אז התחלתי לעבוד ב-Wix
    • עבדתי ב-Wix, ולאחר מכן עברתי לסטארטאפ בשם Drippler למערכות המלצה.
    • לאחר מכן עברתי לעולמות ה-Social eCommerce ב-Sears ישראל
    • ו-WeWork . . . 
    • ועוד כמה חברות נוספות
    • והיום אני ב-AppsFlyer, ככה שיצא לי לראות תהליכים גם בחברות שהן יותר מוכוונות-Software וגם בחברות שהן יותר מוכוונות-Data
    • זהו . . . 
(רן) ואף יורד ים! עוד אחד לסרייה . . . [עכשיו מחפשים יורד-ים שהוא גם קיבוצניק?]
(אורי) אנחנו כל הזמן ב-2:1 פה בשולחן . . .
(רן) . . . אז הנה, התהפכו היוצרות, המאזניים האלה השתווה . . .  בסדר.
(אורי) ימשיך החי”רניק . . . .

(רן) אז לפני שניכנס לנושא, אני חושב שקצת חשוב גם להבין על מה אתה עובד ביום-יום - ואני התנדבתי לספר על זה, כי גם אני מכיר את זה . . . 
אז בגדול, ממש ככה בקצרה על מה שעושה חברת AppsFlyer ובמיוחד מה שעושה צוות ה-Data Science בחברת AppsFlyer - ואחר כך גם נבין למה זה רלוונטי: אז AppsFlyer זו חברה שמספקת Marketing Analytics, ובעולם הזה של Marketing Analytics תמיד יש Concern אחד שהוא קבוע - וזה איך משמרים Privacy של משתמשים.
למעשה, המשימה שלנו - בתור קבוצת Data Science בתוך AppsFlyer זה לתת יכולות של Marketing Analytics מבלי לפגוע ב-Privacy של המשתמשים.
ונשאלת השאלה כמובן - איך עושים את זה? . . . זאת אומרת, איך אפשר לעשות “1+1” כשאתה לא יודע מי האחד או מי השני? . . .  והתשובה לזה היא “הרבה סטטיסטיקה” . . . הרבה Modeling, הרבה מאוד דברים מאוד מגניבים.
אפשר לספר על דוגמא של פרויקט אחד שבו אנחנו למעשה “פוקחים עין אחת ועוצמים את העין השנייה” - ובאמצעות אקסטרפולציות (Extrapolations) יודעים להשלים את החסר על ידי מנגנונים בייסיאניים (Bayesian) ועל ידי מנגנונים הסתברותיים אחרים. 
מן הסתם אפשר לצלול פנימה אל תוך המוצר ממש עמוק, אבל בוא נאמר - אלגוריתמים של Machine Learning, קלאסיים ולא קלאסיים, הרבה מאוד סטטיסטיקה שהיא לא Machine Learning, לא מעט מזה - ועוד טובין אחרים . . .
אז זה היום-יום - והזכרתי, ככה, פרויקט אחד - אבל יש לא מעט פרויקטים אחרים בתחום הזה.

אז בואו נצלול לעסק . . . נניח שאני Data Scientist, עכשיו קיבלתי את התואר באוניברסיטה, אוקיי? אני בא להתחיל לעבוד ואומרים לי “יש פה בעיה . . . “
(אורי) יש בזה תואר? יש תואר ב-Data Science? או . . . 
(רן) זה עניין די חדש . . . אתה צודק, באמת לא היה. אבל לא מזמן הפקולטה בטכניון של תעשייה וניהול [+1!] למעשה שינתה את השם שלה באופן רשמי לחלוטין ל”פקולטה למדעי הנתונים” ומעכשיו . . . זאת אומרת, עדיין אין בוגרים שיצאו משם כי זה ממש קרה השנה, אבל החל מבעוד 3 שנים (נגיד 4 . . . ) יהיו “בוגרי מדעי הנתונים” בתואר ראשון - וכמובן שגם בתארים מתקדמים.
(אורי) והכוונה היא באמת ל-Data Science ל-Modeling, ל-Predictions . . . 
(רן) לגמרי - אני מכיר אנשים שמלמדים שם ולגמרי - זאת ההכוונה. הם עשו את השינוי . . . תראה, השינוי-כיוון הזה לא קרה ביום - זה לא שביום אחד קמו והתעוררו ואמרו “אוקיי, זה מה שאנחנו רוצים לעשות מעכשיו” - זה שינוי שקרה לאורך זמן, אבל את “המיתוג מחדש” עשו ממש לאחרונה.
(אורי) ומסורתית, התעסקו ב-Data Science אנשים בעיקר מתארים מתקדמים, של מדעי המחשב . . .  
(רן) כן, אז זה מגיע ממדעי המחשב, מהנדסת תעשייה וניהול, ממתימטיקה . . . 
  • (יובל) אני חושב, אני עושה פה Hijack - אני חושב שאולי זה קצת השתנה היום, כי יש Other - אבל פעם היו שלושה מסלולים מרכזיים להגיע לתחום הזה
    • אחד מהם הוא באמת כמו שאמרתם, זה תארים מתקדמים - תואר שני לפחות, בדרך כלל דוקטורט
    • אנשי Software ו-Software Engineering שהחליטו שהם רוצים לעשות את ההסבה הזאת
    • והסוג השלישי - ואני חושב שזה גם משהו שמאוד, מכיוון שאני הגעתי משם, מאוד משפיע אולי על צורת המחשבה שלי ועל איך שאני ניגש לפרויקטים - זה אנשים שהגיעו מה-Data, מה-Business, והחליטו להפוך את הדברים ליותר אוטומטיים ואולי יותר מורכבים, והיום . . . 
(אורי) למדו לבד . . . 
  • (יובל) למדו לבד? כן . . . אחרי זה אפשר באמת לתמוך בזה בתארים שניים “וצפונה” - אבל כן, “ללמוד בידיים”
  • יש קורסים - היום בוודאי, פעם היו קצת פחות - אבל קורסים שיכולים לתת לך את הכלים 
  • וכמו כל דבר - אתה צריך “ללכלך את הידיים” וללמוד - והניסיון שאתה צובר מטעויות שאתה עושה ומודלים שראית ובעיות ותחומים, זה משהו שהוא Priceless.

(אורי) אז רגע, אולי  שנייה . . . . הקהל שלנו לפרק הזה זה אולי באמת אנשים שרוצים להסתכל על הדשא של השכן”, אז אני חושב שיש פה Exemplar מעניין . . . . התואר הראשון שלך?
  • (יובל) התואר הראשון שלי היה בהנדסת תעשייה, וגם התואר השני שלי הוא בהנדסת תעשייה
    • כשהשני באמת היה הרבה יותר מוכוון ל-Data Science ומדעי-הנתונים.
(אורי) התואר הראשון הוא התואר מקורס חובלים, או . . . .?
  • (יובל) לא, התואר הראשון היה באוניברסיטת תל אביב, לא מקורס חובלים - תואר הנדסה רגיל.
(רן) אני חשבתי שאתה שואל אותו מה היה הכינוי שלו, אבל . . . 
(אורי) לא . . . אתם הייתם המחזור הראשון  . . . 
(רן) אה - עושים תואר ראשון בקורס חובלים? עכשיו הבנתי . . .
  • (יובל) אני חושב שגם עושים תואר שני . . .
(אורי) “תואר-למדעי-הכלום” כזה, אבל זה תואר ראשון בסוף . . .
(רן) אוקיי, נחמד
  • (יובל) אז אנחנו היינו המחזור האחרון שלא עשה את התואר - לא יודע להגיד האם זה טוב או לא.
    • דלתות מסתובבות כזה . . . 
    • אני יכול להגיד שיש לי במחזור אנשים מאוד מוכשרים שלא היו צריכים את זה - אבל אי אפשר לדעת
  • אז אם אני חוזר למה שדיברנו עליו לפני רגע - אולי ה-Others האלה הם אנשים שבאמת החליטו לעשות את ההסבה הזאת
    • מתחומי סוציולוגיה ואולי מדעי החיים וגיאוגרפיה ואנשים שנגעו בסטטיסטיקה בתואר שני באיזשהו מחקר ומחליטים לעשות את ההסבה הזאת.
(אורי) יש הסבות כאלה שנעשות, למשל ע”י itc > - Israeli Tech Challenge > - עושים את ההסבות האלה גם לעולים חדשים, אבל גם לישראלים שרוצים לעבור, שיש להם תארים אחרים והם רוצים לעבור ל-Data Science, והם לא פחות מוכשרים ומצויינים . . .
(רן) אני חושב שכנראה מה שחשוב להגיד ואולי נשמע קצת טריויאלי זה שזה פחות משנה איזה תואר יש לך - יותר משנה איך את עושה, זאת אומרת - פחות מי נתן לך אלא מה שעשית עם זה: כמה השקעת בעצמך ולמדת מעבר. בין אם זה itc או כל אוניברסיטה או גוף אחר - בסופו של דבר מה עשית בעצמך עם זה? זה מה שיביא אותך לרמה גבוהה והלאה.
אבל כן -  אני חייב להגיד שנכון להיום, אם אני מסתכל על אנשים שעובדים אצלנו בקבוצה, אז יש “ערב רב”: יש מדעי המחשב, פיסיקאים, מתימטיקאים, אנשי תעשייה וניהול . . . זאת אומרת - זה מגיע מהרבה מאוד מקומות, וזה נחמד, זה מוסיף הרבה מאוד גיוון ועניין.
(אורי) אצלכם גם הקבוצת Data Science או האלגוריתמיקה היא מעורבת בין מהנדסי תוכנה ואנשי Data Science? או ש . . . 
(רן) זו שאלה גדולה - לפרק אחר . . . התשובה הקצרה היא “גם וגם” - יש גם קבוצה מופרדת וגם קבוצות מוטמעות, אבל לא נכנס לזה . . . 
  • (יובל) אבל  . . .
(אורי) יש גם מסלול בהתפתחות של מהנדסי תוכנה, שעובדים בצמוד ל-Data Scientists ופתאום נהיים אחלה Data Scientists . . . 
(רן) . . . וגם זה קורה, כן. אבל בוא - זה נושא מעניין, אבל נראה לי שאי אפשר לכסות את זה היום.

אז בוא, אני אתן לך איזושהי “בעיטת פתיחה”: אז אני Data Scientist, יובל, ואני רוצה להתחיל לעבוד על איזשהו פרויקט. נגיד שיש לי . . . אני חושב שאני מבין מה הבעיה - אז מה הדבר הראשון שאני עושה? מתחיל “לזרוק מודלים”? - מנסה רשת נוירונים? מנסה עץ סיווג? מה . . . איך מתחילים? מה עושים?
  • (יובל) אז אני חושב שאפשר לקחת צעד אחורה . . .
  • באמת, התחום הזה מאוד התפוצץ בעשר-חמש-עשרה שנים האחרונות - אבל לפני זה הוא נקרא “סטטיסטיקה” או Data Mining . . . 
    • יש את התחרות המאוד מפורסמת של Netflix, שעשתה בתחום של מערכות המלצה, שאורי מכיר מצויין, ופירסמה את התחום הזה מאוד.
    • השיטות הראשונות של Data Mining היו בשנות ה-90 - המפורסמות שבהן הגיעו מהאקדמיה
      • כמו KDD ו-SEMMA- והשיטה שאני חושב שהיא הפופלארית ביותר - CRISP-DM
      • והן הלכו והתפתחו עם השנים . . . 
    • כמובן שכל אחד או כל חברה עשתה את האימפלמנטציה (Implementation) שהיא צריכה למה שהיא רוצה
(רן) בוא שנייה “ניתן צבע” ל-Buzzwords האלה שהרגע שלפת - KDD ו-CRISP-DM . . .  אז אפשר לחשוב על זה כמו על Scrum, לצורך העניין, בעולם פיתוח התוכנה, או ספרינטים . . . אבל עם שלבים מאוד מוגדרים, נכון?
  • (יובל) בדיוק . . . אז אנחנו נכנס באמת לאחת השיטות ונדבר עליה וניקח איזשהו פרויקט לדוגמא ונפרק אותו . . . 
    • אבל באמת - השורש של הדברים האלה, כמו כל דבר, הגיע מהאקדמיה
    • והתעשייה עשתה את האימפלמנטציה ובאמת הכינה את השלבים הנוספים - גם מקדימה וגם מאחורה:
      • של ה-Deployment, של ה-Monitoring . . . אנחנו נגיע לזה.
(רן) “מהאקדמיה” במובן של “אקדמאי שרוצה לחקור איזושהי בעיה”, רוצה לחקור איזושהי תזה - אז הוא משתמש בשיטה הזאת . . . זה לא שהם הלכו ואמרו “אה! אוקיי, בואו נעשה עכשיו, נכתוב דוקטורט על איך עובדים ב-Data Science” - זה לא העניין . . .
זה פשוט מהנסיון  של האקדמאים, שבאו ואמרו “אוקיי, נראה לי שבכל האוניברסיטאות האלה שראיתי כולם עובדים ככה, אז בואו נסכם את זה, נקרא לזה איזשהו Design Pattern, איזושהי שיטת עבודה” - ועכשיו נותנים לזה שם, ואחד מהם זה CRISP-DM . . . אז לא ניכנס לכולם, נבחר אחד.
  • (יובל) אז באמת CRISP-DM זו השיטה המוכרת ביותר
  • כמו שאמרתי בהתחלה, אחד הדברים המשמעותיים ביותר שהכווינו אותי זה באמת איך מתחילים פרויקט כזה? . . . 
  • והדבר אולי החשוב ביותר, לפחות בעיני, הוא מהי השאלה העסקית?
    • כלומר - ה-Business Understanding, שזה השלב השלב הראשון של CRISP-DM ושיטות אחרות
    •  זה אולי השלב המשמעותי ביותר - אם אתה לא מבין מה אתה רוצה למדוד ואתה לא מבין  מה הלקוח צריך - מה הוא באמת צריך - אז אתה יכול לצאת ל”מרדף שווא” . . .
(רן) זה אולי נכון לכל דבר במקצוע שלנו . . . אורי - אני יודע שאתה בדרך כלל מטיף לזה . . . זאת אומרת - זה נכון בהרבה דברים, גם למפתח תוכנה זה נכון.
אבל אני חושב שפה אני רוצה לעשות איזושהי Observation ולהגיד שאם אנחנו מסתכלים על מקצועות, לפחות מהפרספקטיבה שלי, מסתכלים נגיד על מפתח תוכנה - אז נגיד שיש מפתחי Frontend ויש מפתחי Backend הרבה פעמים, ובדרך רואים שאיש ה-Frontend הוא בדרך כלל יותר מבין את הלקוח, יותר קרוב ללקוח וצריך קצת יותר אמפטיה ללקוח.
אז אותו הדבר גם בעולם ה-Data Science: בהרבה פעמים אנחנו רואים שאנשי ה-Data Science צריכים להיות גם אנשי-מוצר די טובים - הם צריכים את היכולת הזאת של להבין את הצרכים האמיתיים של הלקוח, והאתגר הוא שבהרבה פעמים גם הלקוח עצמו לא מבין את הצרכים שלו . . . זה לא שאפשר פשוט “ללכת ולחלוב אותו” והוא יבוא ויספר לך, אלא יש פה איזשהו תהליך של גילוי, יש פה איזשהו Skill של “גילוי-מוצרי”, של להבין מהו הצורך העסקי האמיתי שאותו אנחנו מנסים לפתור - ומשם אפשר להמשיך.
(אורי) אני חושב, אבל, שיש פה עוד נדבך לדבר הזה - כדי להפוך את העולם המוצרי לעולם של Data Science, אתה צריך “לזקק את המדד” - מהו מדד-ההצלחה שלך? וזה לפעמים עניין לא טריוויאלי . . . רק על הדבר הזה אפשר להשקיע לא מעט זמן, ולפעמים לא להצליח . . . 
(רן) כפי שנאמר, אורי - שאלה טובה! יש לנו שקף . . . 
(אורי) סליחה?
(רן) אני מסכים לגמרי . . .  עניין המדד הוא סופר-סופר-קריטי - והוא גם מאוד מורכב וגם קשור לזה
  • (יובל) וזה, אולי, ה . . . אם השלב הראשון זה להבין מהי השאלה העסקית, אז השלב השני - וכמו שרן אמר, זה נכון לכל דבר שמפתחים בתעשייה ובהיי טק - זה איך אנחנו מודדים . . . איך אנחנו מודדים הצלחה.
    • ואיך אנחנו מודדים “הצלחה פנימית”, שזה ה-Offline  -
      • זה יכול להיות הדיוק של המודל 
    • וזה יכול להיות איך אנחנו מודדים הצלחה “בחוץ”
      • אם ניקח, לדוגמא, מערכת המלצה של סופר, שתמליץ לי על המוצרים הטובים ביותר, אז זה מצויין - מישהו יגיע ויעשה סיבוב של חמש דקות במקום שעה
      • אבל האם זה מיקסם (Maximized) את הפרמטרים של הסופר עצמו, שרוצה שאנשים יסתובבו בקופה ויסתובבו בין מדפים נוספים ויוסיפו עוד שוקולדים או עוד דברים נוספים, שהם לא התכוונו לקנות מלכתחילה? . . . כנראה שלא.
(אורי) האמת שצריך לדעת האם הלקוח הוא גבר או אישה . . .  זה . . . .
  • (יובל) אבל כמו שאמרנו - בעולם ה-Privacy, אלו נתונים שאין לנו . . . .
  • אז אנחנו באמת מתחילים ושואלים ומנסים להבין מה באמת צריך - וזה גם משהו שמשתנה בין חברות שונות - 
    • איפה ה-Data Scientist נמצא? מה הקו המחבר שלו?
  • אני יכול להגיד שאצלנו ב-AppsFlyer אנחנו נפגשים עם לקוחות ומדברים איתם ומקבלים מהם פידבקים - וזה דבר מדהים
    • אתה יודע להגיד האם אתה נמצא בכיוון 
    • והרבה פעמים, כשאתה מפתח דברים “במעבדה הרחוקה”, הקריאת-מציאות הזאת יכולה להגיד לך איפה אתה נמצא והאם אתה קרוב או רחוק.
(רן) כן, השלב הראשון זו הבנה עסקית וקביעת מדד . . .
  • (יובל) בדיוק - אז ברגע שיש לנו את זה, שזה שלב מאוד חשוב, אז אנחנו עוברים לשלב הבא - 
    • שזה שילוב בין איזשהו “Data Understanding”, 
      • שכולל בתוכו איזושהי אקספלורציה של הדאטה (Data Exploration) והבנה של איך הוא מתנהג
    • בתוספת של כל מיני שאלות והיפותזות שאנחנו מנסים להסיק.
  • אני יכול לחקור את הדאטה במשך חודשים, אבל אני רוצה לנסות להבין - ביחד עם הלקוח, ביחד עם מנהל המוצר, ביחד עם אנשי הצוות - אילו שאלות ואילו היפותזות אני יכול להוכיח או להפריך.
    • כדי להתחיל להתקדם למודל
  • בסופו של דבר, מהתהליך הזה אני רוצה לצאת עם כמה שאלות, שיכווינו אותו בסופו של דבר לכיוונים, למודלים
    • שזה יכול להיות ממודל Deep Learning למודל סטטיסטי פשוט - שיתנו לי את הפתרון הטוב ביותר.
  • חשוב להגיד שבכל שלב מאוד חשובה השקיפות - לדעת איפה אנחנו נמצאים
    • וגם “הפינג-פונג” -  עם הלקוחות, עם מנהלי המוצר
    • כדי לא ללכת לאיבוד . . .

(רן) אני אוהב להציג את זה כ . . . מצד אחד יש לך את הצורך של הלקוח, שאתה צריך להבין אותו. מצד שני, יש לך את היכולות שלנו, זאת אומרת - מה שאנחנו יכולים לתת. הלקוח אולי רוצה את “הפרדיקטור-עם-האפס-שגיאות” (Predictor) - אוקיי . . . מצד שני, אנחנו יכולים אולי לתת פרידיקטור עם 80%, שצודק ב-80%  מהמקרים - ועכשיו בוא ונראה מה עובד - האם 80% זה מספיק טוב? אם לא, צריך להסתכל מכיוון אחר.
יש פה סוג של משא ומתן - שלא קורה כמובן באופן רשמי מעל שולחן המשא ומתן, אבל יש פה איזושהי הבנה של צורך, למצוא איזשהו מכנה משותף בין הצרכים של הלקוח לבין היכולות שלנו - יכולות הדאטה וכו’ - ומנסים לראות איפה שני הדברים האלה יכולים להיפגש.
(אורי) רציתי שנייה לדבר על הפינג-פונג: לשאול האם לפעמים אתה נפגש עם הלקוח ואתה מדבר עם מנהל המוצר והוא מתאר איזושהי בעיה עסקית  - ואז אתה ניגש לדאטה, והאם לפעמים בדאטה אתה רואה פתאום . . . או שהבעיה היא לא בעיה, זאת אומרת שהבעיה שהוצגה לך היא לא בעיה או שהיא בעיה שרלוונטית ליחסית מעט מקרים ולא הרבה; או שפתאום אתה מגלה בעיה אחרת, יותר מעניינת, שמגיעה מהדאטה - האם חוזרים בפינג-פונג להגיד “רגע, אנחנו רואים פה משהו אחר”? . . . 
  • (יובל) חד-משמעית . . .
  • באמת, כ-Data Scientist אתה נמצא באיזשהו ציר שבין מוצר-דאטה-ו-Engineering -
    • ואתה צריך לג’נגל בין כל העולמות האלה וכל פעם לשים כובע אחר
  • ובאמת בנקודה של האקספלורציה (Exploration), אתה תראה הרבה פעמים דברים אחרים - 
    • אתה תחקור את “א’” ו-”ב” - ופתאום תגלה את “ג” ו-”ד”
    • [פרויקט של השב''כ?] 
    • ויכול מאוד להיות שהפרויקט ישתנה או שהמהות שלו תשתנה.
    • וזה חלק מהתפקיד שלנו . . . 
  • יש לנו איזושהי בעיה כללית, מוגדרת יותר או פחות
    • וחלק מהתהליך הוא ללטש אותה ולהגיע לדבר האמיתי.

(רן) בסדר, אז בוא נחזור רגע ל-CRISP-DM - אז דיברנו על שני השלבים הראשונים: השלב הראשון  זו הבנה עסקית, מה הלקוח רוצה ואיך אני יכול למדוד את ההצלחה שלי, והשלב השני זה מה שיש לי, או מה שיש בדאטה - להבין קצת את הדאטה שלי. מה אחר כך?
  • (יובל) אז ברגע שהבנתי ובניתי את השאלות שאני רוצה ואני יודע איך הדאטה מתפלג ואם יש לי בעיות כאלה או אחרות
    • ערכים חסרים, או שפתאום יש בעיה אחרת שאני צריך לפתור
  • אז אני מתחיל לסגל לאיזשהו כיוון מסויים  . . . בשלב הזה אני מתחיל לעבוד על הדאטה.
    • זה שלב לא פשוט - אני יוצר את הפיצ’רים (Features)
      • שיכולים להיות פיצ’רים סטטיסטיים ויכולים להיות פיצ’רים שמבוססים על איזשהו Domain-Knowledge
(רן) רגע-רגע-רגע . . . עד עכשיו לא אמרת בכלל רשת נוירונים” . . . מתי אני מתחיל “לזרוק” את הדאטה הזה על רשת נוירונים, שתלמד? . . . . 
  • (יובל) זה . . . שלב המידול, בדרך כלל, הוא 5-10% מהזמן - אם יש לך מזל . . . 
(רן) תודה . . .
(אורי) אתה יודע, אני עוד Software Engineer, אני מהנדס Frontend - וכשאתה אומר לי “פיצ’ר” אז אני אומר “כן, זה מה שה-Product Manager רוצה עכשיו, עוד כפתור אדום” . . . .
(רן) ההוא-המעצבן בג’ירה . . . 
(אורי) כן . . . זה  . . . על זה אנחנו מדברים כשאתה אומר “פיצ’ר”? . . .
  • (יובל) אז הפיצ’רים שאני מדבר עליהם אלו “העמודות הנוספות”, כלומר - 
    • אם נתנו דוגמא למגדר
    • זה יכול להיות גיל - כמובן שבעולמות ה-Privacy זה משהו שהוא פחות רלוונטי . . .
    • שימוש של User באפליקציה - כמה פעמים הוא נכנס ביום? . . . 
    • איזה-שהם מדדים נוספים  . . .
(אורי) מדדים או מאפיינים, שנמצאים בדאטה . . .
  • (יובל) בדיוק . . . 
  • וגם דברים שלא נמצאים בדאטה - דברים שאני יכול להביא “מבחוץ”
    • לחבר תאריכים וחגים ומזג-אוויר ולא משנה מה . . . 
(אורי) זה “פיצ’רים מחושבים” - זאת אומרת שאני לוקח את הדאטה הגולמי ומחשב מהם פיצ’ר או מסיק מהם פיצ’ר נוסף . . . .
(רן) כן, בדיוק . . . לזה, דרך אגב, אגב קוראים Feature Engineering
אז כן - זו הבחנה יפה - שהמילה Feature בעולם ה-Data Science אומרת משהו אחר מאשר המילה Feature במקומות אחרים, בעולם המוצר - ולפעמים זה מייצר בלבול בפגישות, כשאתה מדבר עם אנשי-מוצר . . . אתה אומר להם “פיצ’ר” והם לא כל כך מבינים על מה מדובר.
אבל רציתי לרגע לחזור - אמרת, יובל, שאם יש לך מזל, אז אולי חמישה או עשרה אחוזים מהעבודה שלך זה באמת עבודת Modeling, ואני חושב שזו באמת נקודה חשובה למי שלא נמצא בתחום שכדאי שיבין - שבעצם באמת רוב עבודת ה-Data Science היא לא לבנות את רשת הנוירונים או לייצר את עץ הסיווג או דברים אחרים. נכון שזה חלק מהעבודה, אבל זה לא רוב העבודה . . . רוב העבודה היא בשלב ההכנה ובשלב ההבנה - הבנה של ה-Business, הבנה של הדאטה שלך, Feature Engineering, ניקוי של הדאטה . . . זה יכול אפילו להיות שלב מאוד מאוד ארוך ומעייף. ודרך אגב - זה לא רק שלב הנדסי, זה יכול להיות גם שלב מדעי. זה לא רק ללכת ולנקות את הדאטה אלא גם לעשות את זה בצורה סטטיסטית נכונה.
בסופו של דבר, כשאתה מגיע סחוט, עם הלשון בחוץ - אז אתה יכול לבנות  את המודל . . . 
(אורי) אבל אני חושב שגם, אתה יודע - פעם אנשים היו בונים את המכונה שמריצה ממש את המודל - והיום לא צריך את זה, יש ספריות לרוב ושכפול של עולם ה-JavaScript, זאת אומרת . . . יש ספריות לרוב . . .
(רן) כן . . . 
  • (יובל) את רוב המודלים אתה לא צריך לכתוב ואתה יכול לעשות להם אימפלמנטציה (Implementation) פשוטה ולעשות Adjustment לפי מה שאתה מכיר - אבל כן חשוב להכיר אותם לעומק:
    • מה היתרונות ומה החסרונות, במה לבחור
    • כמובן שניסוי וטעייה ואופטימיזציה זה מרכיב מאוד חשוב בשלב בניית המודל.
  • אבל אני יכול לתת, לדוגמא - במודלים האחרונים שאנחנו בנינו בקבוצה, אלו היו מודלים From Scratch
    • מודלים סטטיסטיים, שהתבססו על איזה שהם עקרונות ממודלים קיימים - אבל שעברו כל מיני אדפטציות אחרות
    • כמעט ולא היה שימוש בספריות קיימות ומודלים קיימים.
  • אבל כן - בהרבה פעמים אתה יכול להשתמש בדברים שכבר נעשו - ואין סיבה להמציא את הגלגל אם כבר הוא שם.

(רן) בסדר - אז בואו נעשה סיכום ונמשיך: אנחנו מדברים על CRISP-DM, וזו אחת השיטות - השלב הראשון זו הבנה עסקית, השלב השני זה הבנה של הדאטה - והשלב השלישי זה הכנה של הדאטה.
אוקיי - עכשיו אנחנו מגיעים לשלב המרגש, הרביעי: מה קורה שם?
  • (יובל) אז אחרי שהכנו את הדאטה ודאגנו שהיסודות שלנו יהיו מבוססים וטובים - אז אנחנו מגיעים לשלב המידול.
  • בשלב המידול אנחנו יכולים . . .
(רן)  . . יש! הכיף . . .
  • (יובל) השלב הכייפי . . . אז אנחנו יכולים לבחון את ההיפותזות שלנו.
    • את חלקן אולי בדקנו כשבחנו את הדאטה - הסתכלנו על ההתפלגויות והקשרים ביניהן
    • אבל בשלב הזה אנחנו יכולים לבוא ולממש ולהתאים את עצמנו לדאטה עצמו, למה שהכנו.
  • כמובן ששלב ה-Research - קריאה של מאמרים, בלוגים . . . 
    • כנראה שהבעיה שאנחנו מנסים לפתור נפתרה בעבר - ואנחנו יכולים לעשות התאמות למה שקיים
    • וזה הזמן לממש . . . 
  • חשוב לשים בראש כל הזמן - וזה משהו שלא דיברנו עליו - שאנחנו לא מפתחים בשביל האקדמיה . . . 
    • אנחנו מפתחים בשביל להביא איזשהו מוצר ל-Production
    • ואצלנו בקבוצה אנחנו כותבים את הדברים End-to-End, אז המעבר בין השלבים השונים - נגיד שיש משהו שהוא “מבושל מספיק” - אז אנחנו מעבירים את הקוד בצורה פונקציונאלית, מקוד-מחקר לקוד שהוא מותאם-Production.
      • וזו גם נקודה שהיא חשובה: מתי שאפשר - לעבור לפונקציות, לעבור לכתיבה שהיא הרבה יותר מוכוונת-פיתוח מאשר מחקר.
(רן) כן, אני חושב שזו גם נקודה שלא יהיה לנו זמן להיכנס אליה . . . איפה שמים את התפר בין Data Science לבין Engineering: מה התפקיד של כל אחד? מה ה-Definition of Done של Data Scientist? אבל לא נכנס לזה פה . . . אלו שאלות שאני חושב שכמעט כל חברה שמתעסקת בזה חושבת עליהן - וכנראה שגם לכל אחת יש תשובות נכונות אחרות . . . 
אבל אנחנו אוטוטו מסיימים את CRISP-DM, אז או נסיים שם ואז נעשה דיון-מטא - אז הגענו לשלב ה-Modeling, ונניח שוואלה, מצאנו מודל טוב - XGBoost או רשת נוירונים או כל דבר אחר - שנותן לנו תוצאות טובות.
מה עכשיו?
  • (יובל) בנקודה הזאת אנחנו צריכים להבין האם באמת עברנו את ה-Threshold ו"קיבלנו את האור הירוק להמשיך הלאה”.
    • אם אנחנו מצליחים לתרגם את דיוק המודל ל-KPI ה-Business-י - מצויין.
    • ושוב - חוזרים לפינג-פונג: אנחנו בשלב שהוא עדיין לא מוטמע בצורה סופית 
  • והאווליואציה (Evaluation) של המודל עצמו זה השלב הבא - אנחנו רוצים לבדוק אותו
    • אנחנו יכולים לעשות את זה Offline, ע”י הדיוק של המודל והצגה ללקוחות
    • או Online, ע”י A/B Testing או שיטות כאלה ואחרות.
(רן) . . . ואז, אם התוצאות טובות - אז Roll Forward; ואם התוצאות לא טובות - אז . . . 
  • (יובל) אז אנחנו חוזרים אחורה . . .
(רן) אוקיי . . . אז חוזרים אחורה, אולי אפילו לשלב הראשון, של “בואו נבין שוב את הבעיה העסקית” - אולי תוך כדי עבודה הבנו משהו יותר טוב, אולי שוב ניפגש עם הלקוח ונבין מה הוא רוצה . . . 
דרך אגב - אני אומר “הלקוח”, והלקוח זה יכול להיות כמובן גם לקוח פנימי, זה יכול להיות איש-המוצר שלנו, זה לא בהכרח  . . . זה לא שכל יום אנחנו מתקשרים ומטרידים את כל הלקוחות, אבל מישהו שמייצג את הלקוח, כמובן.
אז הסיפור הזה יכול להיות Cycle-י, הרבה פעמים . . . 
  • (יובל) כן, ועד שלא הגענו לרמה שהיא מספיקה.
  • וכן חשוב להדגיש שהנטייה שלנו, כ-DS-ים, היא לחפש עוד מה אפשר לשפר ולהגיע ל-90% ול-95% . . .
    • והרבה פעמים, שיטות Engineer-יות של להגיע ל-80% בחצי מהזמן הרבה יותר משמעותיות . . .
      • העיקרון הפשוט - “לבנות את ה-Pipeline ולהעביר מים בצינור”
    • שזה משהו שאנחנו צריכים לקחת יותר ויותר מעולמות ה-Engineering.
  • וברגע שעשינו את זה, הרבה יותר קל לעדכן.
(רן) כמו שנאמר - “Perfect is the enemy of Done” . . . 

בסדר - ועכשיו השלב האחרון הוא Deployment . . . זאת אומרת שצריך להביא את המודל ל-Production.
מה זה אומר? ככה, בשתי מילים - איך מביאים מודל ל-Production?
  • (יובל) אז מודל ל-Production מאוד תלוי בתשתיות שיש לחברה.
  • זה יכול להיות ע”י שימוש ב-Pipeline-ים כמו Airflow ו-SageMaker, עם תמיכה של כלי Monitoring כאלה ואחרים
  • וזה מאוד תלוי גם בחברה - זה יכול להיות משהו שהוא פנימי ויכול להיות משהו שמתחבר  למוצר Scalable-י שאתה צריך לעשות לו התאמות כאלה ואחרות.
  • זה יכול להיות מודל שהוא Real-time או מודל שהוא Batch-י, שרץ אחת ליום או אחת לשבוע . . . 
(רן) כן, אז פה אנחנו למעשה נכנסים לעולם ש . . .
(אורי) . . . אחת לחמש דקות . . . 
(רן)  . . . גם יכול להיות, כן . . . 
  • (יובל)  . . . Near-Real-time . . . 

(רן) אז פה אנחנו למעשה נכנסים לעולם די גדול, שאפשר לקרוא לו פחות או יותר MLOps, שקצת יצא לנו לדבר עליו בעבר בפודקאסט - וגם יהיו לנו עוד פרקים על זה, אורי, אני כבר עושה לך ספוילר . . . . - אבל לא ניכנס אליו פה.
אבל כן - השלב של ה-Deployment הוא שלב לגמרי לא-טריויאלי, ולפעמים יש אנשי מקצוע, כלומר Machine Learning Engineers שזו ממש ההתמחות שלהם, ואולי זה אחד מההבדלים המשמעותיים בין המודל האקדמי הזה לבין מה שקורה בתעשייה - באקדמיה, אני מנחש שברוב המקרים שלב ה-Deployment הוא יחסית פשוט, בעוד שבתעשייה זה חיים שלמים . . .  למעשה כל חיי-המדף של המוצר.
(אורי) זה לא  . . . אני לא יכול [להפריז ב] להדגיש עד כמה זה חשוב, במיוחד כשהמודל שלך פועל בסביבה שמשתנה כל הזמן, אז החשיבות הזאת, של Pipeline מהיר, אוטומטי, רץ, מנוטר, שכל הזמן מזרים מודלים חדשים - זה בסוף מכיל שיפורים מאוד גדולים למדדים העסקיים.
  • (יובל) כן, כשאתה מפתח את המודל אתה צריך חשוב על כל כך הרבה כיוונים - 
    • אתה צריך להסתכל על הדאטה, לראות שאתה עונה על הצורך העסקי
    • ולראות שאתה תומך באלמנטים ה-Engineer-יים - יכול להיות שתבנה מודל מדהים, עם דיוק שהוא מתקרב ל-100%,  אבל זה משהו שלא ניתן לתחזוק וכל ריצה שלו לוקחת שעות . . . 
      • אז כנראה שתבחר במודל אחר, שהוא פשוט יותר וקל לתחזוק
      • נכנסים אילוצים נוספים . . . 

(רן) אז דיברנו בעיקר על CRISP-DM, והזכרנו שיש עוד גישות - אבל בוא לרגע עכשיו ניקח צעד אחורה: ראית צוותים שעובדים עם CRISP-DM בתעשייה - מה במציאות, מה אתה רואה? האם הם פשוט לוקחים את זה As-is ומממשים, או שכל אחד עכשיו עושה את האינטרפטציה (Interpretation) משלו? מה יצא לך לראות, בחיים שלך?
  • (יובל) אז אני חושב שיצא לי לראות גם וגם . . . יש צוותים . . .
    • כולם ,אני חושב, גם אם לא קוראים לזה בשם הזה, נמצאים פחות או יותר באיזור
    • בסופו של דבר, אנחנו ניגשים לבעיה, מנתחים אותה - וניגשים למודל.
(אורי) בסך הכל, זו נשמעת על פניו שיטה לוגית טובה . . . אני לא מוצא . . . זאת אומרת - אני חושב שיש הרבה שעובדים ככה ולא יודעים שקוראים לזה ככה . . .
  • (יובל) בדיוק . . . בהכנה לפרק, אז בסקרים שראיתי באמת זאת השיטה הנפוצה ביותר - סדר גודל של כ-50%
    • ועוד 25% זה אנשים או חברות שפיתחו משהו בעצמן - שאני נוטה להעריך שהן מאוד דומות . . . 
  • גם השיטות החדשות הן מאוד מאוד דומות ל-CRISP-DM, פשוט מבוססות על העולם החדש של ה-Deployments ובאמת משהו יותר ריאלי.
(רן) אז למשל משהו אחד שאני רואה, שחסר פה ב-CRISP-DM, זה כל מה שקורה אחרי הגרסא הראשונה - וזו בדרך כלל רוב העבודה . . . זאת אומרת, הגרסא הראשונה - אם אמרנו קודם שההכנה של הדאטה עד למודל זה בערך 90% מהעבודה, אז הגרסא הראשונה זה בדרך כלל 10%, אוקיי? . . .  הרבה מהעבודה המעניינת מתרחשת אחר כך, וזה משהו שלא מבוטא . . . תמיד אפשר להפעיל Common-sense מן הסתם, אבל זה משהו שלא מבוטא ב-CRISP-DM. אני חושב שזה נחמד להשתמש בזה כאיזשהו Reference, אבל בטח שלא צריך להיצמד אליו כממש “חוברת הפעלה” - בסופו של דבר כן להפעיל Common-Sense.

אתה רואה את זה קורה ברמה של ה-Data Scientist הבודד, או ברמה של צוות - זאת אומרת, מה ה-Scope של Workflow כזה? האם כל אחד נמצא בקצב שלו בצוות או שכולם צריכים להיות מסונכרנים באיזשהו אופן?
  • (יובל) זה תלוי באיך שהצוות עובד . . . Data Scientist בודד יכול לנהל את כל התהליך הזה בעצמו
    • אם זה פרויקט שהוא גדול יותר אז אפשר לשלב, אפשר למקבל
    • אבל תמיד צריך להיות קרובים אחד לשני ולהבין - כדי “להעביר את המקל” בצורה טובה.

(רן) בסדר - אז אנחנו עשינו לעצמנו רשימה די ארוכה של נושאים אחרים שנרצה לדבר עליהם, אבל נגמר לנו הזמן . . . אז אנחנו נעצור פה - לא לפני שנספר שכמו כולם גם אתה מגייס Data Scientists, אז  . . .
(אורי) לא - אתה . . . 
(רן) כולנו מגייסים  . . . אמרתי “כמו כולם” . . .כן, וספציפית גם לצוות של יובל - אז נגיד: אם מעניין אתכם לעבוד עם יובל עם הקול המהמם וגם איתי . . .
(אורי) . . עם הקול המהמם . . .
(רן) . . . או, חיכיתי . . . אתה צריך להרים כדי שירימו לך - אז כן, על נושאים שאנחנו עובדים עליהם, על היכולת לספק אנליטיקות בעולם שהוא Privacy-aware - אז בואו.

האזנה נעימה ותודה רבה לעופר פורר על התמלול!

אין תגובות:

הוסף רשומת תגובה