DataSciense

מבוא למערכת המלצות ומדדי דיוק מקובלים בתחום

מיועד ל- מתחילים (כתבה קצת טכנית)

נכתב על ידי David Kohav

איך מערכת המלצות עובדת ?

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

מאיפה הנתונים על המשתמש מגיעים ?

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

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

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

ארכיטקטורה נפוצה היא ה TOP-N – בו המערכת מצליחה לזהות את N פריטים (לדוגמה N=10) שהמשתמש הכי מתעניין בהם.

ארכיטקטורה כללית

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

 

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

בסיסי הנתונים בעולם האמיתי יהיו לדוגמא mongodb, קסנדרה או Memcached. בסיסי נתונים אלו מספקים כמות נתונים גדולה בשאילתות פשוטות, באופן אידיאלי הנתונים מנורמלים באמצעות טכניקות כמו mean centering או z-scores כדי להבטיח שהנתונים דומים בין המשתמשים אבל בעולם האמיתי לעיתים קרובות הנתונים שלנו דלילים מכדי לנרמל אותם ביעילות.

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

דוגמה:

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

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

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

  1. בשלב הבא נעבור לדירוג מועמדים – candidate ranking.

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

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

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

  1. שלב הסינון – Filtering – יהיה צורך בסינון כלשהו לפני הצגת רשימת המועמדים הסופית המומלצת למשתמש.
  • שלב הסינון הוא המקום בו אנו עשויים לוותר על המלצות פריטים שהמשתמש כבר דירג, מכיוון שאיננו רוצים להמליץ על פריטים שהמשתמש כבר ראה.
  • אנו עשויים להחיל כאן רשימת עצירה (stop list) כדי להסיר פריטים שיכולים להעליב את המשתמש או להסיר פריטים שנמצאים מתחת לציון איכות או סף מינימלי מסויים.
  • זה המקום בו אנו מיישמים את מספר ההמלצות, N המלצות, הכי רלוונטיות למשתמש לדוגמה 10 ההמלצות הכי רלוונטיות.
  1. הפלט למשתמש (אזור תצוגת הסרטים למטה בתמונה) – הפלט משלב הסינון עובר לשלב תצוגת המשתמש, על ידי יישומון וכו’.

הדיאגרמה הזו היא גרסה מפוענחת של מה שמכנים סינון שיתופי מבוסס פריטים (item-based collaborative filtering). החלק הקשה הוא בניית הדמיון בין הפריטים.

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

 

הערכה – אימון \ מבחן בדיקה ואימות צולב

Evaluating – Train/Test and cross-validation

אימון ומבחן

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

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

 

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

תהליך עם נתוני אימון ומבחן

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

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

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

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

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

k-fold cross-validation -תהליך אימות צולב

ניתן לשפר את שיטת פיצול נתונים של אימון ומבחן ע”י שיטת  k-fold cross-validation.

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

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

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

מסקנה, מטרת מערכת המלצות

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

סקירת מדדי הדיוק של מערכת ממליצים

  1. mean absolute error – MAE – שגיאה ממוצעת בערך מוחלט

התמונה מ https://www.dataquest.io/blog/understanding-regression-error-metrics/

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

  1. שגיאה ממוצעת בשורש הריבועי, root mean square error- RMSE

התמונה מ https://medium.com/analytics-vidhya/calculating-accuracy-of-an-ml-model-8ae7894802e

מדד זה מעניש כאשר החיזוי רחוק מהתוצאה האמיתית ומעניש פחות כשאתה קרוב בחיזוי מהתוצאה האמיתית.

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

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

מדדי דיוק אלה לא באמת מודדים את מה שהמערכות הממליצות אמורות לעשות.

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

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

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

מדדי דיוק לרשימת המלצות עליונות

  1. hit rate , אחוזי הצלחה – מדידת דיוק של רשימות עליונות ( TOP N ) עבור משתמשים בודדים.

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

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

התמונה מ https://slideplayer.com/slide/9347453/

 

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

לעומת בדיקת דיוק כמו MSE ו RMSE שאיתם מדדנו את דיוק הדירוג האישי של המשתמשים, פה אנו מודדים את דיוק הרשימות הראשוניות top n עבור משתמשים בודדים.

בעזרת שיטת leave-one-out cross-validation אנו נבצע את המדידה, אז כמו שאמרתי במדידה זו מחשבים את ההמלצות העליונות עבור כל משתמש בנתוני האימון שלנו אבל אנחנו נסיר בכוונה אחד מאותם פריטים מנתוני האימון מכל משתמש למען מערך נתוני המבחן, שיטה זו נקראת leave-one-out.

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

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

  1. ARHR – average reciprocal hit rate – השפעה ממוצעת על אחוזי ההצלחה.

הוא מאוד דומה ל hit rate אך המדד ARHR מציג היכן נמצא המיקום של הפריט ברשימת הפריטים העליונים (top n) של המשתמש:

התמונה מ https://medium.com/@arthurlee_73761/recsys-16-local-item-item-models-for-top-n-recommendation-753555b5c1c

זה אומר שכאשר המערכת מצליחה להמליץ על פריטים עליונים יותר ברשימה זו נחשבת ל HIT מאשר

המלצה על מיקום פריטים נמוכים יותר מרשימת המומלצים.

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

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

Reciprocal rank Rank
1/3 3
1/2 2
1 1

וכך אנו “מענישים” יותר את מה שאנחנו פחות רוצים להמליץ.

  1. cumulative hit rank – cHR – הצטברות של אחוזי הצלחה

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

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

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

Predicted Rating Hit Rank
5.0 4
3.0 2
5.0 1
2.0 10
  1. Rating hit rate – rHR – שיעור צפיות בדירוג

כאן אנו מסתכלים על קצב ההתאמה (hit rate) אנו מחשבים את ציון הדירוג עבור כל דירוג כדי למצוא איזה סוג דירוג מקבל יותר צפיות. אנו מסכמים את מספר ההצלחות עבור כל סוג של דירוג ברשימת ה- Top-N שלנו ומחלקים את המספר הכולל של הסרטים מכל דירוג ברשימת ה- Top-N שלנו.

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

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

מדדים להערכת תפקוד מערכת המלצות

  1. Coverage – זהו מדד הכיסוי המודד את אחוז ההמלצות האפשריות שהמערכת מסוגלת לספק.

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

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

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

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

  1. Diversity – זהו מדד הגיוון המודד את אחוז הפריטים השונים זה מזה שיש ברשימת ההמלצות של המשתמש.

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

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

בערכי הדמיון האלו כדי למדוד את הגיוון.

S = avg similarity between recommendation pairs

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

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

  1. Novelty – מדד ממוצע לפופולריות של פריטים ברשימת ההמלצות העליונות.

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

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

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

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

איך תיאוריית הזנב הארוך מתקשרת למערכת המלצות?

מטרת מערכת המלצות היא פריטי השירות מה שנקרא תאוריית הזנב הארוך.

לפי ויקיפדיה:

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

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

לפי הגרף, בזנב הארוך ציר ה Y הוא מספר המכירות או הפופולריות, וציר ה X מייצג את המוצרים.

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

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

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

  1. Churn rate – מדד קצב הנטישה

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

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

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

  1. Responsiveness – מדד היענות.

מודד באיזו מהירות משפיעה התנהגות המשתמש על רשימת ההמלצות.

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

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

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

  1. בדיקות A/B באופן מקוון, כדי לכוון את מערכת הממליצים.

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

בדיקות ה A/B הוא מדד מצויין כדי להבין מה קורה בעולם האמיתי ואפילו יכולת לתת מסקנות אשר יכולות להוריד את מידת המורכבות של המערכת.

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

 

By David Kohav

Linkedin: https://www.linkedin.com/in/davidkochav/

GitHub: https://github.com/DavidKohav/recommender-systems

Posted by David Kohav in deep

A/B Testing

מיועד ל- מתחילים (כתבה קצת טכנית)

נכתב על ידי raya_belinsky

מאמר זה משלב:

  • סיכום של קורס A/B Testing של Google ב- Udacity,
  • קוד פייתון ממקורות באינטרנט
  • דוגמאות והסברים מניסיון אישי

 

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

האם אתה יכול להשתמש ב- A / B לכל שינוי?
שאל את עצמך לפני שאתה מתחיל:

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

הבדלים בין מבחני A / B בתחומים שונים?

  1. בניסוי רפואי הבוחן קיום או היעדר תכונה של הנבדקים משתתפים 10-50 משתתפים, ואנו יודעים על כל משתתף: גיל, משקל, מצב משפחתי, גובה, האם יש להם רישיון נהיגה ועוד.
  2. אנו רוצים ליצור שינוי של 5-10-15% כדי לראות שינוי מהותי בין קבוצת קונטרול וטסט. מדובר על חיי בני אדם, וגם על הוצאות גבוהות ליצור תהליכים או תרופות, לכן אנו מחפשים שינוי גבוה.במחקר שרץ אונליין יש לנו מיליוני משתמשים, מאות אלפי קליקים, מגיבים, אך אנו לא יודע כל כך הרבה על מי נמצא בקצה השני של הנתונים האלו. זה יכול להיות אדם יחיד, מספר אנשים (זוג) או מחשב בבית קפה אינטרנטי. יש אפשרות לרכוש אותם ממקורות נוספים, אך לפעמים הם חסרים.

שינוי של 1-2% ב”הסתברות לקליק” הוא די גדול. לא נרשמת השקעה רבה ליצירת השינוי וגם חשיפה לאלפי או מיליוני אנשים יוצרת הכנסות מאוד גדולות.

מטריקות פופולאריות

Click Through Rate = Total number of clicks / Total number of views

שיעור/קצב לקליק = סה”כ קליקים / סה”כ מספר צפיות

אנו משתמשים במטריקה זאת כאשר רוצים למדוד את השימושיות באתר

Click Through Probability = Unique visitors who clicked / Unique visitors who viewed

הסתברות לקליק = סה”כ מספר משתמשים יוניקים שהקלילו  / סה”כ מספר משתמשים יוניקים שצפו בשינוי

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

 התפלגות הנתונים

למה חשוב לנו לדעת את ההתפלגות?

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

התפלגות בינומית שונה מהתפלגות נורמלית. אם גודל המדגם יהיה גדול מספיק, הצורות יהיו דומות למדי. ההבדל העיקרי הוא שהתפלגות בינומית היא דיסקרטית, לא רציפה. במילים אחרות, לא ניתן למצוא ערך נתונים בין שני ערכי הנתונים. ההתפלגות הנורמלית נחשבת בדרך כלל כקירוב לא רע להתפלגות הבינומית כאשר np ≥ 5 ו- n (1 – p) ≥ 5.

השערת האפס והשערה אלטרנטיבית

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

בסוף הניסוי יש לנו שתי אופציות: לדחות את השערת האפס, או שלא לדחות אותה

 

מובהקות סטטיסטית או רמת מובהקות – α

רמת מובהקות – היא הסיכוי שבעת ביצוע מבחן סטטיסטי לבדיקת השערות נדחה את ההשערה על אף שהיא נכונה.

המוסכמה המקובלת במדעי החברה היא להשתמש ב-α=0.05. ככל שה- α שנבחר קטנה יותר, כך ההחלטה שלנו תהיה שמרנית יותר.

עוצמת המבחן – תרצה שהיא תהיה כמה שיותר גבוהה – לעתים קרובות משתמשים ב- 80%)

מדגם קטן – אלפא נמוך, בטא גבוה

מדגם גדול – אלפא אותו דבר, בטא נמוך יותר

דוגמה:

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

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

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

בניית הטסט:

נניח בדף הנחיתה הנוכחי שלנו מבקרים 1000 אנשים, 73 לוחצים על “תתחיל עכשיו”. אנו רוצים להריץ במקביל ניסוי בו נשנה רק את הרקע של “תתחיל עכשיו” מירוק לאדום ונרצה שאחוז ההמרה יהיה גבוהה יותר ברמת מובהקות של 5%.

H0: CTR = 7.3%

H1: CTR > 7.3%

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

אפשר לעשות זאת בעזרת מחשבון ברשת

או לכתוב קוד פייתון

או ע”י הנוסחה:

אפיון ובחירה של המטריקות (KPI)

ערכים שלא משתנים – הם הערכים שלא אמורים להשתנות במהלך הניסוי.

מטריקות – סה”כ הכנסות, מספר הפקדות, מספר FTD, STD

מטריקות משולבות – שילוב של מספר מטריקות.

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

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

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

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

Additional Techniques for Brainstorming and Validating Metrics

  • חשוב להבין אילו שינויים במערכת שלך יכולים לקרות – האם שינוי של 10% בשיעור הקליקים זה מציאותי, כדי לעקוב כל שעה, יממה על איך הניסוי רץ ואם יש תקלה טכנית לעצור בזמן – בנה את האינטואיציה שלך לגבי המטריקות!
  • לדוגמה, pings JavaScript, עם בעיה בדפדפנים ותיקים מאוד, אינם מיישמים JavaScript בכלל וקליקים נעלמים. לדפדפנים אחרים, כלומר IE לעומת ספארי, יהיו שיעורי כישלון שונים ב- JavaScript. זו יכולה להיות הסיבה לשיעור קליקים שונה בדפדפנים ופלטפורמות שונות.
  • בדרך כלל אנו מחשבים את שיעור הקליקים כמבקרים ייחודיים שלחצו חלקי מספר אורחים ייחודיים שצפו. נסו להוסיף תקופת זמן – שיעור קליקים במהלך 5 דקות, שיעור קליקים במהלך 30 דקות, שיעור קליקים במהלך 60 דקות, זה יכול להביא תובנות חדשות.
  • לפעמים המתחרים שלך בודקים את האתר שלך ולוחצים על כל דבר. או מספר משתמשים שנכנסו מבית קפה אינטרנטי או אלגוריתמים שנכנסים ולוחצים על כפתור הקסם שלך. תנסה לבנות אלגוריתמים שמסננים יוזרים כאלו. כדי להימנע ממצב זה, צור ערכי בסיסי עבור המטריקות שלך, קבוצות לפי מדינה, שפה, פלטפורמה; תסתכל שבוע מול שבוע או יום מול יום.
  • כאשר מטריקה שלך מודדת זמן פעולה כלשהי כמו, זמן הטעינה של סרטון, זמן עד הקליק הראשון, משך ההפעלה. עבור אותם אירועים השתמש בחציון, האחוזון ה -25, האחוזון ה -70, האחוזון ה -90, פחות בממוצע.
  • אם מתאפשר, תבדוק את ההיסטוגרמה של המדד בשתי הקבוצות, לראות עד כמה המדד רגיש.על ציר ה- x יש לך את כל הערכים השונים עבור המדד שלך. בציר ה- Y הולכת להיות התדירות. אם התפלגות היא נורמלית, אז ממוצע או חציון זה יעבוד בשביל המדד הזה. ככל שההתפלגות יותר נוטה לאחד הצדדים, ייתכן שתרצה ללכת יותר על ה -25, או ה -75 או האחוזון ה -90.

 

ניסוי A/A

מתי אנו משתמשים בו?

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

 

תכנון הניסוי

ראו תבנית מומלצת:

Experiment design template

 

ניתוח תוצאות ניסוי A / B

בדקו אם אתם קיבלתם אוכלוסיות דומות בשתי הקבוצות.
קבוצת בקרה: 64,454 משתמשים

קבוצת מבחן: 61,818 משתמשים

האם יש הבדל בין הקבוצות?

חישבו סטיית תקן בינומית עם הסתברות 0.5 להצלחה
[SD = sqrt (0.50.5 / (64454 + 61818))] = 0.0014

הכפלו במספר Z כדי לקבל את שולי השגיאה.
0.0014*1.96 = 0.0027

חישוב מרווח הביטחון סביב 0.5.
0.4973 עד 0.5027

בדקו האם התוצאה נמצאת בתוך רווח בטחון
.p = 64454 / (64454 + 61818) = 0.5104

0.5104 גדול משמעותית מ- 0.5027 , כך

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

אנא הבינו מדוע הבדיקה הראשונית שלכם נכשלה לפני שתתחילו בניתוח בדיקת A/B.

אם קיבלתם אוכלוסיות דומות בשתי הקבוצות.

לקוח מ https://www.dataquest.io/wp-content/uploads/2018/09/sanity-check-invariants.png

 

 

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

מחשבון אונליין: https://abtesting.glitch.me/

לקוח מ https://www.dataquest.io/wp-content/uploads/2018/09/ab-testing-results.png

 

כך ניתן לפרש את התוצאות:

d̂ – m > dmin

קבוצת הניסוי נותנת ביצועים שעולים על ביצועי קבוצת הביקורת (משמעות סטטיסטית ומעשית)=> שנה לגרסה חדשה.
d̂ – m>0
תוצאות הניסוי נותנים ביצועים שעולים על הביצועי קבוצת הביקורת (משמעות סטטיסטית בלבד). זה המקרה בדוגמה שלנו. כדי לקבל משמעות מעשית גם ביחד עם הסטטיסטית, אתם יכולים לתת לניסוי להימשך לרוץ עוד זמן. ביחד עם זאת, אתם יכולים להתייעץ ולהחליט ללכת עם הגרסה  החדשה.
d̂ – m <0
אם לא ניתן לומר שגרסת הניסוי עולה על קבוצת הביקורת עם ביצועים טובים יותר אז שמור על הגרסה המקורית וצור השערות חדשות.

לסיום

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

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

בהצלחה!

Posted by raya_belinsky in deep

על דיאגרמת וורונוי, ואיך היית נראה בתור קורי עכביש?

מיועד ל- מתחילים (כתבה קצת טכנית)

נכתב על ידי Ayelet Sapirshtein

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

                                                                                     אחרי                                                                                                          לפני

תודה ל Photo by Alexandre Debiève on Unsplash

מהי דיאגרמת וורונוי?

בלונדון של 1854 התפרצות כולרה הרגה 10% מהאוכלוסייה. הרופאים של אותה תקופה חשבו שהמחלה מופצת על ידי “אוויר רע” הנובע מהביוב הפתוח המסריח. אבל לרופא אחד, ג’ון סנואו, האמין שהמשאבה הספציפית שברחוב ברוד היא מקור המחלה.

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

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

מי אמר שלא היה DataSciense פעם 🙂

תודה ל – https://plus.maths.org/content/uncovering-cause-cholera

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

תודה ל – Balu Ertl wikipedia

לחובבי האלגוריתמים – איך מחשבים דיאגרמת וורונוי ?

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

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

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

 

Connecting the triangulation's circumcenters gives the Voronoi diagram.

תודה ל -Hferee

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

כיוון שכך, ניתן לחשב את דיאגרמת וורונוי באמצעות אלגוריתמים למציאת טריאנגולציית דלאוני כמו Bowyer–Watson .Bowyer–Watson הוא אלגוריתם אינקרמנטלי. האלגוריתם מתבצע על ידי הוספת נקודה אחת בכל פעם ומעדכן את הטרנגולצייה של תת הקבוצה לאחר כל הוספה. זמן הריצה הממוצע של האלגוריתם הוא O(n\cdot log\left ( n \right )), אך קיימים מקרים בהם זמן הריצה גדול מO(n^{2}).

ויש גם אלגוריתמים יעילים למציאת דיאגרמת וורונוי ללא קשר לבעיה הדואלית. למשל בעזרת אלגוריתם שנקרא פורצ’ן (Fortune’s algorithm) ניתן למצוא את דיאגרמת וורונוי של n מרכזים בזמן O(n\cdot log\left ( n \right )) :

By Mnbayazit – https://en.wikipedia.org/wiki/File:Fortunes-algorithm.gif, Public Domain, https://commons.wikimedia.org/w/index.php?curid=32553992

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

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

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

איך זה עוזר לי להפוך לספיידרמן?

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

בוחרים תמונה ובשלב ראשון הופכים אותה לגווני אפור:

Photo by Alexandre Debiève on Unsplash

להלן מימוש בפייתון:

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

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

שומרים במערך את הקורדינטות של הנקודות השחורות בתמונה:

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

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

וקיבלנו עכביש מקורי עכביש:

לסיום

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


[fvplayer id=”1″]

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

רוצים לשמוע יותר על ציור בעזרת מתמטיקה? בואו להרצאה איך מציירים מתמטיקה.

Posted by Ayelet Sapirshtein in deep

Case study – ניתוח נתוני Kickstarter בעזרת Power BI

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי יובל מרנין

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

Kickstarter פרסמה באתר Kaggleנתונים על כל הפרויקטים שעלו בפלטפורמה שלה בין השנים 2009 ל- אמצע 2018, וב-case study שלפניכם אנסה לתאר בקווים כללים את הסיפור שהנתונים מספרים.

הניתוח בוצע בעזרת הכלי –Power BI שהוא כלי אנליטי מצוין ל- Visual Analytics מבית מיקרוסופט.

ניתוח  קטגוריות

תודה ל Kickstater

בין מאי 2009 ל מרץ 2018 עלו בקיקסארטר 375 אלף פרויקטים, כאשר שיעור ההצלחה הממוצע למימון פרויקט הוא 36%. הקטגוריה הפופולרית ביותר היא סרטים ולה שיעור הצלחה של 38% בדומה לממוצע של כלל הפרויקטים.

לקטגוריות תאטרון, קומיקס וריקוד יש שיעור הצלחה ממוצע של 55% אך כמות הפרויקטים נמוכה (רק 25 אלף מתוך 375 אלף כ- 6% מכלל הפרויקטים).

תודה ל Kickstarter

קטגוריות מעניינות נוספות:

  • מוסיקה– ישנם הרבה פרויקטים בקטגוריה של מוסיקה (52 אלף) ולהם שיעור הצלחה של כ-47%. זהו שיעור הגבוה בכ-11% מהממוצע.
  • טכנולוגיה– גם בקטגורית הטכנולוגיה יש פרויקטים רבים, אך שיעורי ההצלחה נמוכים משמעותית – 21%. כנראה שהסיבה לכך נובעת מכך שהסכום החציוני המבוקש של פרויקטים בתחום הטכנולוגיה עומד על 20 אלף דולר בעוד שהסכום הכללי לפרויקט הוא רק 5,000 דולר.

תודה ל Kickstarter

ניתוח מגמות

תודה ל Kickstarter

בהסתכלות על כמות הפרויקטים שנפתחו ב-  Kickstarter לאורך השנים, ישנה צמיחה הדרגתית שהגיע לשיאה ב- 2014 ו- 2015. יחד עם המגמה הזאת בשנות השיא ניכרת גם ירידה תלולה בשיעור ההצלחה במימון הפרויקטים מ- 43% ל- 27%.

בעזרת גרף מסוגWaterfall Chart  נוכל לבצע חקירה מעמיקה יותר ולהבין לאיזה קטגוריות ניתן ליחס את השינוי:

תודה ל Kickstarter

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

אם נפלטר את גרף המגמה רק לפרויקטים בקטגורית טכנולוגיה ניתן לראות ביתר שאת את המגמה שראינו בגרף הקודם:

תודה ל Kickstarter

אפשר לראות את השינוי מזווית נוספת בעזרת תרשים סרט – Ribbon Chart

תודה ל Kickstarter

ה “סרט” של קטגורית טכנולוגיה הוא בצבע טורקיז והוא קופץ מכ- 1,600 ב 2013 ל- 6,000 פרויקטים ב-2014 וכ- 10,000 פרויקטים ב- 2015.

תתי קטגוריות

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

למשל: לתת הקטגוריה של משחקי לוח,שהיא הרביעית בגודלה מכלל הקטגוריות, יש שיעור הצלחה של – 56% וכמות חציונית של 96 תומכים בפרויקט לעומת כמות חציונית של 12 תומכים בפרויקט.

תודה ל Kickstarter

סיכום

  • שיעור ההצלחה של מימון פרויקט ב- Kickstarter הוא 36% כאשר הסכום החציוני המבוקש לפרויקט עומד על 5,000 דולר (החציון חושב רק עבור פרויקטים במימון מטבע דולרי).
  • ליזם שרוצה לממן פרויקט בקטגוריה של מוסיקה או קטגוריות נוספות של אומנות כדאי לשוקל לפנות ל- Kickstarter לצורך מימון היות ושיעורי ההצלחה בקטגוריות האלה גבוהים מ-55%. לעומת זאת, פרויקטים טכנולוגים פחות מתאימים לפלטפורמה.
  • בשנים 2014 ו- 2015 היתה עלייה בכמות הפרויקטים שביקשו מימון בפלטפורמה. עלייה זאת התרחשה במרבית הקטגוריות ובעיקר בפרויקטים טכנולוגים.
  • ניתן להעמיק את הניתוח ולבחון האם לסכום הגיוס או למדינת המוצא יש השפעה על שיעור ההצלחה של הפרויקט.

 

לצפיה בדו”ח Power BI המלא – לחץ על הקישור:
Kickstarter dashboard

 

יובל מרנין

פרילאנס דאטה אנליסט

כל הזכויות למאמר זה שמורות לכותב. לפרסום מחדש של קטעים ממאמר זה או כולו נא לפנות לכתובת: yuval.marnin@gmail.com

Posted by יובל מרנין in deep

מהי קלאסיפיקציה ? דוגמא מהעולם העסקי: סגמנטציה של לקוחות

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי יובל מרנין

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

בגרף הבא מוצגים הרכישות ומספר הקניות של לקוח בחודש בסופר של רכישות מזון on-line. כל נקודה בגרף מייצגת לקוח כאשר ציר ה-X מציין את סך הרכישות וציר ה-Y את כמות הרכישות.

קלאסיפיקציה

באופן גס ניתן לומר שמסתתרים בנתונים שלושה סוגים של לקוחות או במילים אחרות שלושה סגמנטים:

קלאסיפיקציה

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

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

מכיוון שכל לקוח שייך לסגמנט שונה אפשר להתייחס בצורה פרסונלית לפי מאפייני הסגמנט אליו הוא משתייך:

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

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

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

Posted by יובל מרנין in deep

ספורט ה DataSciense: נא להכיר את Kaggle!

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי תמיר נווה

Data Sciense עוסק בלהסיק תובנות ממידע.

Machine Learning עוסק בפיתוח אלגוריתמים ושיטות שמאפשרים למחשב ללמוד.

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

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

הכירו את “Kaggle“: שהוקמה באוסטרליה ב 2010 ונרכשה ב 2017 ע”י גוגל (אך שמרה על השם והמיתוג שלה) והינה פלטפורמת לתחרויות בין אלגוריתמאים ואנשי DataSciense ו Machine Learning. התחרויות פתוחות לציבור הרחב בחינם וחלקן מזכות בפרסים שיכולים להגיע עד מיליון וחצי דולר.

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

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

תודה kaggle

לצורך המחשה אציג כמה מהתחרויות:

שיפור הדיוק של Department of Homeland Security בזיהוי איום שווי פרסים של 1,500,000$

שיפור הדיוק של הערכת מחירי בתים Zillow שווי פרסים של 1,200,000$

זיהוי גרעין התא (לקידום הרפואה) שווי פרסים של 100,000$

ניבוי תגובת השוק לרכישות גדולות שווי פרסים של 10,000$

זיהוי שיימינג ברשתות חברתיות שווי פרסים של 10,000$

ניבוי גישות מיחשוב הדרושות לעובד חדש שווי פרסים של 5,000$

זיהוי זן ציפור על בסיס הקלטות שמע שווי פרסים של 1,800$

ניבוי אנרגיה סולארית על בסיס נתוני מזג אוויר שווי פרסים של 1,000$

ניבוי מכירות של חנויות פרס לא כספי אלא הזדמנות לעבוד ב Walmart

ובכן,Kaggle  צברו הרבה בעיות, נתונים ופתרונות, להלן וידאו של ארבע דקות בו מנכ”ל Kaggle אנטוני גולדבלום מספר על מה למדו ממיליוני משתמשים שהעלו את המודלים\האלגוריתמים שלהם:

זה מה שהוא מספר (בתמציתיות) לגבי שלבי העבודה הקלאסיים:

1) לנתח את ה Data מכל כיוון אפשרי

להציג בכל מיני דרכים, להבין כל משתנה, להבין איך נאספו הנתונים…

2) לבנות פיצ’רים

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

3) בחירת המודל

Random Forest היה מאוד פופולארי ואז היה מעבר ל Gradient Boosting Machine

אם כי בחירת המודל לא חשוב כמו ששלב 2 חשוב.

Posted by תמיר נווה in deep