תרגול 4
K-Means

Print

תיאוריה -אשכול

המטרה


לחלק אוסף של פרטים לקבוצות המכונים אשכולות (clusters)


normal normal

דוגמאות


  1. לבצע הנחות על פרט על סמך פרט אחר באשכול.

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


  2. לתת טיפול שונה לכל אשכול.

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

אלגוריתמי אשכול שונים

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

scikit-learn's clustering

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

האלגוריתם K-means

סימונים:

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


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

האלגוריתם K-means

הבעיה השקולה

מרכז המסה (center of mass or centroid) או המרכז של אשכול:



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

האלגוריתם K-means

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

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

    • עדכון מרכזי האשכולות על פי:
    • קידום:

דוגמא

  • איתחול

  • חזרה עד להתכנסות:

    • שיוך כל נקודה לאשכול, על פי המרכז הקרוב

    • עדכון מרכזי האשכולות

normal

normal

normal

normal

normal

normal

normal

normal

normal

normal

תכונות


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

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

  • לא מובטח כי האלגוריתם יתכנס לפתרון האופטימאלי.

  • אתחולים שונים יכולים להוביל לתוצאות שונות.

בחירת מספר האשכולות K


normal normal normal normal


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

בחירת מספר האשכולות K

שיטה לקביעת מספר האשכולות: שיפור יחסי קטן

שגיאת האשכול: שורש ממוצע הריבועים (Root Mean Square (RMS)) של המרחקים מהממוצעים:


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


בחירת מספר האשכולות K

שיטה לקביעת מספר האשכולות: שיפור יחסי קטן - המשך

עבור הדוגמא ממקודם. גרף השגיאה:

normal normal

בחירת מספר האשכולות K

שיטה לקביעת מספר האשכולות: שיפור יחסי קטן - המשך

גרף השיפור היחסי:

normal

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

תרגילים

✍️ תרגיל 4.1

נתונות נקודות שונות:

  • נקודות בקואורדינאטות
  • נקודות בכל אחת מהקואורדינאטות


א) מתאחלים את המרכזים על ידי בחירה אקראית של 3 מתוך ארבעת הנקודות A,B,C,D. לאילו חלוקות יתכנס האלגוריתם בעבור כל אחת מארבעת האתחולים האפשריים.

normal

💡 תרגיל 4.1א - פיתרון

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

מרכזים ב A,B ו C:

  • שויך התחלתי (0a): נקודות בA,B ו C ישוייכו למרכז אשר הנמצא עליהם, והנקודות בD ישוייכו למרכז שבB.

  • עדכון מרכזים (0b): המרכז שב B יזוז לאמצע הדרך שבין הנקודות B ו D.

  • עדכון אשכולות (1a): הנקודת שבB ישוייכו כעת למרכז שבC.

  • עדכון מרכזים (1b): המרכז שבין B ל D יזוז לD, והמרכז שבC יזוז למחצית הדרך שבין B לC.

normal

normal

normal

normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב A,B ו D:

  • שויך התחלתי (0a): נקודות בA,B ו D ישוייכו למרכז אשר נמצא עליהם, והנקודות בC ישוייכו למרכז שבB.

  • עדכון מרכזים (0b): המרכז שב B יזוז לאמצע הדרך שבין הנקודות B ו C.

normal

normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב A,C ו D:

  • שויך התחלתי (0a): נקודות בA,C ו D ישוייכו למרכז אשר נמצא עליהם, והנקודות בB ישוייכו למרכז שבC.

  • עדכון מרכזים (0b): המרכז שב C יזוז לאמצע הדרך שבין הנקודות B ו C.

normal

normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב B,C ו D:

  • שויך התחלתי (0a): נקודות בB,C ו D ישוייכו למרכז אשר נמצא עליהם, והנקודות בA ישוייכו למרכז שבB.

  • עדכון מרכזים (0b): המרכז שב B יזוז לנקודה שהיא המרכז של הנקודות A ו B. (משום שכמות הנקודות בשתי הקבוצות שונה, נקודה זו היא לא אמצע הדרך בניהם).


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

normal

normal normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב B,C ו D:

מקרה 1:

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

normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב B,C ו D:

מקרה 2:

המרכז החדש רחוק יותר לנקודה B משאר הנקודה C. אזי המשך יהיה:

normal

normal

normal

💡 תרגיל 4.1א - פיתרון

מרכזים ב B,C ו D:

מקרה 2:

נמצא את התנאי על שבעבורו מתרחש מקרה 2.

נסמן ב את המרכז שבין A לB:



על מנת שיתרחש עידכון על המרחק בין המרכז החדש נקודה B גדול מ2:

✍️ תרגיל 4.1

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

normal

💡 תרגיל 4.1ב - פיתרון


נרצה למזער את:


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

  • (A,B), (C), (D)
  • (A,C), (B), (D)
  • (A,D), (B), (C)
  • (B,C), (A), (D)
  • (B,D), (A), (C)
  • (C,D), (A), (B)
💡 תרגיל 4.1ב - פיתרון - המשך

התרומה של האכולות עם נקודה בודדת הינה 0, ולכן יש לחשב רק את התרומה של האשכול שמכיל זוג נקודות. למשל בעבור (A,B), (C), (D):

בעבור כל שאר האשכולות:

Clusters Objective
(A,B), (C), (D)
(A,C), (B), (D)
(A,D), (B), (C)
(B,C), (A), (D)
(B,D), (A), (C)
(C,D), (A), (B)


לכן הפתרון יהיה (A,B),(C),(D) או (B,C),(A),(D)

💡 תרגיל 4.1ב - פיתרון - המשך

נבדוק בעבור אלו ערכים של האשכול הראשון הינו האופטימאלי (ולהפיך):


  • בעבור הפתרון האופטימאלי הינו (A,B),(C),(D).
  • בעבור הפתרון האופטימאלי הינו (B,C),(A),(D).

עבור התוצאות מהסעיף הקודם:


  • בעבור הפתרון האופטימאלי הינו (A,B),(C),(D), אך עבור 3 מתוך 4 האיחולים שבדקנו האלגוריתם התכנס לפתרון של (B,C),(A),(D).

  • בעבור הפתרון האופטימאלי הינו (B,C),(A),(D), אך במקרה של ואתחול של מרכזים ב B,C ו D מתקבל הפתרון של (A,B),(C),(D).

✍️ תרגיל 4.1

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

normal

פיתרון

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

בעיה מעשית

🚖 תזכורת: מדגם נסיעות המונית בNew York

עשרת הדגמים הראשונים במדגם הנסיעות בעיר New York

passenger_count trip_distance payment_type fare_amount tip_amount pickup_easting pickup_northing dropoff_easting dropoff_northing duration day_of_week day_of_month time_of_day
0 2 2.768065 2 9.5 0.00 586.996941 4512.979705 588.155118 4515.180889 11.516667 3 13 12.801944
1 1 3.218680 2 10.0 0.00 587.151523 4512.923924 584.850489 4512.632082 12.666667 6 16 20.961389
2 1 2.574944 1 7.0 2.49 587.005357 4513.359700 585.434188 4513.174964 5.516667 0 31 20.412778
3 1 0.965604 1 7.5 1.65 586.648975 4511.729212 586.671530 4512.554065 9.883333 1 25 13.031389
4 1 2.462290 1 7.5 1.66 586.967178 4511.894301 585.262474 4511.755477 8.683333 2 5 7.703333
5 5 1.561060 1 7.5 2.20 585.926415 4512.880385 585.168973 4511.540103 9.433333 3 20 20.667222
6 1 2.574944 1 8.0 1.00 586.731409 4515.084445 588.710175 4514.209184 7.950000 5 8 23.841944
7 1 0.804670 2 5.0 0.00 585.344614 4509.712541 585.843967 4509.545089 4.950000 5 29 15.831389
8 1 3.653202 1 10.0 1.10 585.422062 4509.477536 583.671081 4507.735573 11.066667 5 8 2.098333
9 6 1.625433 1 5.5 1.36 587.875433 4514.931073 587.701248 4513.709691 4.216667 3 13 21.783056

❓️ הבעיה: מציאת חניונים


חברת מוניות רוצה לשכור מגרשי חניה ברחבי העיר NYC בהם יוכלו לחכות המוניות שלה בין הנסיעות.

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


שדות רלוונטיים

הפעם נתמקד בשתי השדות:

  • dropoff_easting - הקואורדינאטה האורכית (מזרח-מערב) של סיום הנסיעה
  • dropoff_northing - הקואורדינאטה הרוחבית (צפון-דרום) של סיום הנסיעה

(למתעניינים: הקואורדינאטות נתונות בUTM-WGS84, היחידות הן בקירוב קילומטר).

❓️ הבעיה: מציאת חניונים - משך

ויזואליזציה של נקודות ההורדה

png

הגדרה פורמאלית של הבעיה

נשתמש בסימונים הבאים:

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


המטרה: למצוא את מיקומי החניונים האופטימאליים אשר ממזערים את:


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

הגדרה פורמאלית של הבעיה - המשך


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


פתרון באמצעות K-Means


  • הבעיה שקיבלנו דומה מאד לK-Means, אם הבדל משמעותי אחד.
  • K-Means ממזער את המרחק הריבועי הממוצע בעוד שאנו מחפשים למזער את המרחק האוקלידי.


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

הרצה

png

המרחק נסיעה הממוצע המתקבל הינו 700 מ’.

✍️ תרגיל 4.2


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


2) הציעו דרכים לשפר את התוצאות על סמך הסיבות מסעיף הקודם.

פתרון

1) K-Mean לא מבטיח התכנסות למינימום הגולבאלי. ניתן להריץ את האלגוריתם מספר פעמים עם איתחולים שונים.


2) K-Mean ממזערת את השגיאה הריבועית הממוצעת. ניתן לשפר על ידי תיקון המרכז לנקודה אשר ממזערת את המרחק עצמו.

הערה: ראו חציון הגיאומטרי The Geometric Median (wiki) ו Weiszfeld’s algorithm.

❓️ בעיה 2: מציאת מספר החניונים האופטימאלי

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

נניח כי:

  1. עלות האחזקה של חניון הינה 10k$ לחודש.
  2. בכל חודש יהיו בדיוק 100k נסיעות.
  3. עלות הנסיעה של מונית בדרך לחניון הינה 3$ לקילומטר.

נרשום תחת הנחות אלו את העלות החודשית של אחזקת החניונים והנסיעה אליהם:

והמקבילה האמפירית:

מספר החניונים כHyper parameter

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


  • פרמטרים שאין לנו שיטה יעילה לבחור אותם אנו מכנים לרוב הHyper-parameters של המודל.
  • שני hyper-parameters בהם כבר נתקלנו בקורס הינם:
    • מספר ורוחב התאים של היסטוגרמה
    • רוחב וסוג הגרעין בKDE


לרוב נאלץ לבחור את ערכם של הhyper-parameters על ידי:

  1. חיפוש על גריד (grid search) או מעבר על כל האפשרויות (brute force).
  2. ניסוי וטעיה. כאשר לרוב נתחיל מאיזשהו ניחוש מושכל.

פתרון באמצעות K-Means וסריקת על K.

נריץ את אלגוריתם הK-Means בעבור כל ערך של בתחום :

png

נקבל כי:

  • מספר החניונים האופטימאלי הינו: 12.
  • מרחק הנסיעה הממוצע יהיה 630 מ’.
  • העלות הכוללת תהיה 308.12k$ לחודש.

תרגילים נוספים

✍️ תרגיל 4.3

נתבונן בבעיית “האשכול” החד-מימדית הבאה: normal

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


הראו כי האלגוריתם K-Means עם מתכנס למינימום הגלובלי של השגיאה הריבועית מכל תנאי התחלה סביר (כלומר, המרכזים ההתחלתיים ממוקמים באינטרוול ).

💡 פיתרון
  • נסמן ב את נקודת ההחלטה באיטרציה
  • וב- את המרכזים באיטרציה

בצעד הראשון נקבל כי:


באיטרציה ה נקבל ש:

💡 פיתרון - המשך

נרשום את כלל הרקוסרסיה של :

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