כפי שמוצג כאן, המשמעות של k-מקצה נקודות למרכז הקרוב ביותר שלהן. אבל מה "הקרוב ביותר" כלומר?
כדי להחיל k-me על נתוני ישויות, צריך להגדיר מדד של מידת דמיון שמשלבת את כל נתוני התכונות לערך מספרי אחד, שנקרא מדד דמיון ידני.
ניקח לדוגמה מערך נתונים של נעליים. אם במערך הנתונים התכונה היחידה היא 'מידת נעליים', אפשר להגדיר את הדמיון בין שתי נעליים מבחינת ההבדל בגדלים שלהם. ככל שההבדל המספרי בין הגדלים קטן יותר, כך דמיון בין נעליים.
אם במערך הנתונים לגבי נעליים יש שתי תכונות מספריות – מידה ומחיר, אפשר לשלב למספר אחד שמייצג את הדמיון. קודם כל, מדרגים את הנתונים, שתי התכונות ניתנות להשוואה:
- מידות: סביר להניח שמידת הנעליים מייצגת התפלגות גאוסיאנית. כדאי לאשר. לאחר מכן צריך לנרמל את הנתונים.
- Price (p): הנתונים ככל הנראה התפלגות פואסון. כדאי לאשר. אם יהיו מספיק נתונים, ממירים את הנתונים לכמויות ומשנים את קנה המידה ל- \([0,1]\).
בשלב הבא, משלבים בין שתי התכונות באמצעות חישוב שגיאה בריבוע הממוצע של הרמה הבסיסית (root) (RMSE). הדמיון הגולמי הזה נקבע על ידי \(\sqrt{\frac{(s_i - s_j)^2+(p_i - p_j)^2}{2}}\)
דוגמה פשוטה: חישוב הדמיון בין שתי נעליים במידות אמריקאיות 8 ו-11, ומחירים של 120 ו-150. מאחר שאין לנו מספיק נתונים כדי להבין את ההתפלגות, אנו נגדיל את הנתונים מבלי לנרמל או להשתמש של כמות מסוימת.
פעולה | שיטה |
---|---|
לשנות את הגודל. | נניח שגודל הנעליים המקסימלי הוא 20. חילוק 8 ו-11 ב את הגודל המקסימלי 20 כדי לקבל 0.4 ו-0.55. |
לשנות את המחיר. | מחלקים את 120 ו-150 במחיר המקסימלי 150, וכך מקבלים 0.8 ו-1. |
מוצאים את ההבדל בגודל. | \(0.55 - 0.4 = 0.15\) |
מוצאים את ההפרש במחיר. | \(1 - 0.8 = 0.2\) |
מחשבים את ה-RMSE. | \(\sqrt{\frac{0.2^2+0.15^2}{2}} = 0.17\) |
באופן אינטואיטיבי, מדד הדמיון אמור לגדול כשנתוני התכונות יהיו גדולים יותר דומה. במקום זאת, מידת הדמיון (RMSE) בפועל פוחתת. ליצור מדד הדמיון עוקבים אחרי האינטואיציה שלכם על ידי מחסירים אותה מ-1.
\[\text{Similarity} = 1 - 0.17 = 0.83\]
באופן כללי, ניתן להכין נתונים מספריים כפי שמתואר להכין נתונים ואז לשלב באמצעות שימוש במרחק אוקלידיאן.
מה אם מערך הנתונים כלל גם את מידות הנעליים וגם את צבע הנעליים? הצבע הוא categorical data, עסקנו בקורס מקוצר על למידת מכונה ב- עבודה עם נתונים קטגוריים. קשה יותר לשלב נתונים קטגוריים עם נתוני הגודל המספריים. היא יכולה להיות:
- ערך יחיד (אי-שוויוני), כמו צבע הרכב ('לבן' או 'כחול' אבל אף פעם לא שניהם)
- מרובה ערכים (ריבוי ערכים), למשל ז'אנר של סרט (הסרט יכול להיות גם "action" ו'קומדיה', או רק "פעולה")
אם נתונים לא תואמים, לדוגמה במקרה של שני זוגות נעליים כחולות, הדמיון בין הדוגמאות הוא 1. אחרת, הדמיון הוא 0.
קשה יותר לעבוד עם נתונים רב-ערך, כמו ז'אנרים של סרטים. אם יש קבוצה קבועה של ז'אנרים, ניתן לחשב את הדמיון באמצעות היחס של של הערכים המשותפים, דמיון בין Jaccard. דוגמה וחישובים של הדמיון ב-Jaccard:
- ["comedy",action"] וגם ["comedy"", action”] = 1
- ["comedy"", action"] וגם ["action"] = 1⁄2
- ["comedy",action"] וגם ["action", "drama"] = 1⁄3
- ["קומדיה", פעולה"] ו["לא בדיוני", ביוגרפיה] = 0
הדמיון ב-Jaccard הוא לא מדד הדמיון הידני היחיד האפשרי נתונים קטגוריים. שתי דוגמאות נוספות:
- אפשר להמיר מיקודים לקו אורך ורוחב לפני וחישוב המרחק ביניהם בסגנון אוקלידי.
- אפשר להמיר את צבע לערכי RGB מספריים, עם ההבדלים הבאים: והערכים המשולבים למרחק של אוקלדיה.
למידע נוסף, ראו עבודה עם נתונים קטגוריים לקבלת מידע נוסף.
באופן כללי, מדד דמיון ידני חייב להתאים באופן ישיר לדמיון ממשי. אם המדד שבחרתם לא מקודד, הוא לא מקודד את שרוצים שהוא יקודד.
חשוב לעבד את הנתונים מראש בקפידה לפני החישוב של מדד הדמיון. הדוגמאות בדף הזה הן פשוטות יותר. רוב מערכי הנתונים בעולם האמיתי הם גדולים ומורכבים. כפי שציינתי קודם, כמותים היא אפשרות טובה כברירת מחדל לעיבוד נתונים מספריים.
ככל המורכבות של הנתונים יותר, קשה יותר ליצור מדריך מידת הדמיון. במצב כזה, עוברים מדד דמיון מפוקח, שבו מכונה מפוקחת מחשב את הדמיון. נדון בנושא הזה בפירוט מאוחר יותר.