מתודות עבודה

מה עושה אנליסט ביום יום? (חלק שני)

By אוקטובר 14, 2018 One Comment

הקדמה לפוסט –

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

האירוע נמצא כאן  – אם בא לכןם לקפוץ – זה יהיה מגניב – לבעלי החיים וגם לי!

 

 

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

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

 

שלב רביעי – חוזרים לבדיקת הטוב

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

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

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

Facet grid for total bill distribution by smoking and itime status

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

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

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

(הארה – לפעמים יש צורך לבצע הפחתת מימדים, אבל אני לא רוצה להכנס לזה כאן – מי שמעוניין לקרוא עוד ולא יודע כבר את זה – לכו ל-Principal Component Analysis)

 

שלב חמישי – רוצה להיות סופר מודל?

עכשיו צריך לבחור את המודל שלנו – את המודל נבחר בהתאם לארבעה גורמים:

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

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

 

שלב שישי – Divide and Conquer

את המידע שלנו אנחנו צריכים לפרק לשני חלקים (אולי אפילו שלושה) – המידע לאימון המודל והמידע לבדיקת המודל (והמידע להערכת המודל)-

אימון המודל – אנחנו ניקח את הפרמטרים שלנו ואת התוצאות הרצויות שלנו ואנחנו ניתן למודל את כל המידע הזה בשביל שילמד אותו (Fitting data into the model), במודלים שאינם למידה עמוקה – אפשר להמשיל את המקרה לבעל מקצוע שנחשף להמון מקרים והוא מתחיל לבנות לעצמו ספר חוקים, לאחר תקופה מסוימת (תקופת האימון, או במקרה שלנו, מעבר על כל המקרים שהם בסט הבחינה שלנו) – יש לבעל המקצוע ספר חוקים והוא יכול להתנהל לפיהם.

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

נניח שני מערכים – מערך ידוע ומערך חיזוי על ידי המודל –

ידוע – [כן, לא, כן, כן, לא]

חזוי – [לא, כן, כן, כן, לא]

אנחנו רואים שמתוך חמישה ניבויים – המודל צדק ב-3 (השלושה האחרונים), וטעה פעמיים.

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

 

שלב שביעי – מי מריץ את העולם? מצגות

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

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

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

 

אז נסכם!

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

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

 

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

 

 

 

 

One Comment

Leave a Reply