אלגוריתם שכן קרוב

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Gnome-colors-edit-find-replace.svg יש לשכתב ערך זה. הסיבה לכך היא: ניכר שהערך מתורגם ישירות מאנגלית, ללא מספיק הבנה של החומר.
אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה.
דוגמה לסיווג עבור אלגוריתם k-NN. המבחן לדוגמה (עיגול ירוק) צריך להיות מסווג או אל מדרגה ראשונה של מרובע כחול או ברמה השנייה של אדום משולש. אם k=3 (עיגול מקו אחיד) הוא מוקצה לרמה השנייה כי ישנם 2 משולשים ורק מרובע אחד בתוך המעגל הפנימי. אם k=5 (עיגול מקו מקווקו) הוא מוקצה לרמה הראשונה (שלושה ריבועים לעומת שני משולשים בתוך המעגל החיצוני).

אלגוריתם השכן הקרוב או k-Nearest Neighbors algorithm (או בקיצור k-NN) הוא אלגוריתם חסר פרמטרים לסיווג ולרגרסיה מקומית.[1] בשני המקרים הקלט תלוי ב-k התצפיות הקרובות במרחב התכונות. k-NN יכול לשמש לסיווג או לרגרסיה:

  • k-NN לסיווג – בהינתן קלט של דוגמה חדשה, האלגוריתם משייכה לקבוצה. הדוגמה משויכת למחלקה הנפוצה ביותר בקרב k השכנים הקרובים (כאשר k מוגדר כמספר חיובי שלם, בדרך כלל מספר קטן). אם k=1 האובייקט משויך למחלקה של השכן הבודד הקרוב ביותר.
  • k-NN לרגרסיה – בהינתן דוגמה חדשה, האלגוריתם מחזיר ערך מאפיין לדוגמה. ערך זה הוא ממוצע ערכים של ערכי k השכנים הקרובים ביותר.

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

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

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

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

אלגוריתם[עריכת קוד מקור | עריכה]

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

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

מטריקה מקובלת למדידת מרחק בין משתנים רציפים היא מרחק אוקלידי. עבור משתנים בדידים, כגון בבעיית סיווג טקסט, ניתן להשתמש במטריקה אחרת, כגון מרחק המינג. לעתים קרובות, דיוק הסיווג של k-NN ניתן לשיפור באופן משמעותי אם המטריקה שבשימוש נלמדת באמצעות אלגוריתמים מיוחדים כמו "Large margin nearest neighbor" או "Neighbourhood components analysis".

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

בחירת פרמטרים[עריכת קוד מקור | עריכה]

הבחירה הטובה ביותר של k תלויה בנתונים; בדרך כלל, ערכים גבוהים יותר של k גורמים לצמצום ההשפעה של הרעש על סיווג,[4] אבל גורמים לגבולות בין מחלקות להיות פחות מובהקים. k טוב יכול להיבחר באמצעות מספר שיטות. במקרה המיוחד בו נחזתה מראש סוג המחלקה כמחלקה הקרובה ביותר לנקודות האימון (כלומר כאשר k=1) נקרא אלגוריתם השכן הקרוב ביותר.

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

במצב בינארי (כאשר יש שתי מחלקות) בעיות סיווג, כדאי לבחור את k להיות מספר אי-זוגי כדי להימנע ממצבי תיקו. דרך אחת פופולרית לבחירת k אופטימלי באופן אמפירי למצב זה היא באמצעות שיטת אתחול (אנ').[5]

מאפיינים[עריכת קוד מקור | עריכה]

k-NN הוא מקרה פרטי של הערכת צפיפות משתני קרנל, של הערכת רוחב פס משתנים ושל הערכת צפיפות קרנל "בלון" עם אחידות סטיסטית בקרנל.[6][7]

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

כשכמות הדוגמאות שואפת לאינסוף, לאלגוריתם מובטח שיעור שגיאה מרבי לא יותר מפעמיים שיעור השגיאה של בייס (השגיאה המינימלית הניתן להשגה בהתחשב בהתפלגות הנתונים).[8]

הפחתת ממדים[עריכת קוד מקור | עריכה]

עבור נתונים רב־ממדיים (לדוגמה, עם מספר ממדים גדול מ־10), הפחתת ממדים מבוצעת בדרך כלל לפני הפעלת k-NN על הנתונים, כדי למנוע את ההשפעות של קללת הממד (Curse of dimensionality).‏[9]

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

ניתן לשלב בפעולה אחת חילוץ תכונות והורדת ממד באמצעות שיטות ניתוח גורמים ראשיים (PCA), ניתוח הבחנה לינארי (LDA) או ניתוח מתאם קנוני (CCA) כשלב טרום עיבודי, ולאחר מכן יצירת אשכולות על ידי k-NN במרחב בממד נמוך יותר. embedding.[10] הורדת ממד יכולה להיעשות גם באמצעות הורדת ממד אקראית.

גבול ההחלטה[עריכת קוד מקור | עריכה]

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

צמצום נתונים[עריכת קוד מקור | עריכה]

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

  1. בחירת "Class-outliers", כלומר, דוגמאות שסווגו לא נכון על ידי k-NN עבור k נתון.
  2. יש להפריד את שאר הנתונים לתוך שתי קבוצות: (א) אבות הטיפוס המשמשים לסיווג (ב) "הנקודות הנבלעות"- נקודות ש־k-NN יכול לתקן את סיווגן באמצעות אבות הטיפוס, ונקודות אלו ניתן להסיר ממדגם האימון.

בחירה של Class-outliers[עריכת קוד מקור | עריכה]

דוגמאות האימון המוקפות בדוגמאות של מחלקות אחרות נקראות Class outlier. הגורמים של Class outliers כוללים:

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

בשילוב עם k-NN מייצר רעשים. הרעשים יכולים להיות מזוהים ומופרדים לצורך ניתוח עתידי. בהינתן שני מספרים טבעיים, k>r>0, דוגמת אימון נקראת k,r NN class-outlier” “ במידה ו־k שכנים קרובים כוללים יותר מ־r דוגמאות של מחלקות אחרות.

CNN עבור צמצום כמות הנתונים[עריכת קוד מקור | עריכה]

אלגוריתם ממוקד לשכן הקרוב ביותר (Condensed Nearest Neighbor, CNN, מכונה גם אלגוריתם הארט) הוא אלגוריתם שנועד לצמצם את מספר הדוגמאות לסיווג k-NN.‏[12] אלגוריתם זה בוחר את אבות הטיפוס U מתוך דוגמאות האימון, כך ש־1NN יכול לסווג את U כמעט במדויק, כפי ש־1NN מסווג את כל הנתונים.

CNN עובד באופן איטרטיבי, בהינתן מדגם אימון:

  1. סרוק את כל האיברים ב־X, וחפש רכיב x שיש לו תווית שונה מאב הטיפוס הקרוב אליו (מקרב U).
  2. הסר את x מ־X, והוסף אותו ל־U.
  3. סרוק שוב, עד שלא יתווספו עוד אבות טיפוס ל־U.

השתמש ב־U במקום ב־X לשם הסיווג. הדוגמאות שאינן אבות טיפוס נקראות נקודות בלועות.

יחס הגבול[עריכת קוד מקור | עריכה]

חישוב יחס הגבול.

לשם שיפור יעילות הסריקה של CNN, נגדיר את יחס הגבול לדוגמת אימון x: a\left(x\right)=\frac{\lVert x'-y \rVert}{\lVert x-y \rVert}

כאשר ||x-y|| הוא המרחק הקרוב ביותר לדוגמה y בעלת תווית שונה מאשר x, והמרחק ||x'-y|| הוא המרחק בין y לדוגמה הקרובה ביותר אליה 'x, המסווגת כמו x.יחס הגבול הוא בין 0 ל־1, היות שערכו של ||x'-y|| לעולם אינו גדול יותר מערכו של ||x-y||. סדר זה מעניק עדיפות לגבולות המחלקות לשם הכללתם בקבוצת אבות-הטיפוס U. נקודה בעלת תווית שונה מאשר x נקראת נקודה חיצונית ל־x. חישוב יחס הגבול מודגם באיור משמאל. הנתונים מסומנים בצבעים: נקודת הפתיחה היא x, והיא מסומנת באדום. הנקודות החיצוניות הן כחולות וירוקות. הנקודה החיצונית הקרובה ביותר ל־x היא הנקודה y. הנקודה האדומה הקרובה ביותר ל־y היא הנקודה 'x. יחס הגבול a(X)‎ הוא תכונה של נקודת הפתיחה x.

בעזרת יחס הגבול, ניתן לייעל את סריקת דגימות האימון ב-CNN, אם הסריקה מבוצעת בסדר יורד של a(x)‎‏.[13]

דוגמה[עריכת קוד מקור | עריכה]

שלושה סוגים של נקודות: Class-outliers, אבות טיפוס ונקודות בלועות.

להלן המחשה של CNN על קבוצת דוגמאות אימון המחולקות לשלוש מחלקות: אדום, ירוק וכחול. איור 1 מראה את המצב ההתחלתי, שבו יש 60 נקודות בכל מחלקה. איור 2 מציג את מפת הסיווג 1NN: כל פיקסל מסווג על ידי 1NN באמצעות כל הנתונים. איור 3 מציג את מפת הסיווג 5NN. אזורים לבנים תואמים את האזורים הלא מסווגים, שבהם היה תיקו בין מחלקות (למשל, אם יש שתי נקודות ירוקות, שתי נקודות אדומות ונקודה אחת כחולה מקרב חמשת השכנים הקרובים ביותר). איור 4 מציג את מקבץ הדוגמאות המצומצם. ה-x-ים הם Class-outliers שנבחרו על ידי כלל ‎(3,2)NN‏ (כל שלושת השכנים הקרובים ביותר של מקרים אלה שייכים למחלקות אחרות); הריבועים הם אבות־הטיפוס, והעיגולים הריקים הם הנקודות הבלועות. בצד שמאל למטה מוצגים מספרי ה־class-outlier, אבות־הטיפוס והנקודות הבלועות לכל אחת משלוש המחלקות. מספר אבות־הטיפוס נע בין 15% ל־20% עבור מחלקות שונות בדוגמה זו. איור 5 מראה שמפת הסיווג 1NN עם אבות־הטיפוס דומה מאוד למפה עם הנתונים הראשוניים. האיורים נוצרו בעזרת היישומון של מירקס.[13]

k-NN לרגרסיה[עריכת קוד מקור | עריכה]

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

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

לקריאה נוספת[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ Altman, N. S. (20 ביולי 1992). "An introduction to kernel and nearest-neighbor nonparametric regression". The American Statistician 46 (3): 175–185. doi:10.1080/00031305.1992.10475879. 
  2. ^ This scheme is a generalization of linear interpolation.
  3. ^ D. Coomans; D.L. Massart (20 ביולי 1982). "Alternative k-nearest neighbour rules in supervised pattern recognition : Part 1. k-Nearest neighbour classification by using alternative voting rules". Analytica Chimica Acta 136: 15–27. doi:10.1016/S0003-2670(01)95359-0. 
  4. ^ Everitt, B. S., Landau, S., Leese, M. and Stahl, D. (2011) Miscellaneous Clustering Methods, in Cluster Analysis, 5th Edition, John Wiley & Sons, Ltd, Chichester, UK.
  5. ^ Hall P, Park BU, Samworth RJ (20 ביולי 2008). "Choice of neighbor order in nearest-neighbor classification". Annals of Statistics 36 (5): 2135–2152. doi:10.1214/07-AOS537. 
  6. ^ D. G. Terrell; D. W. Scott (20 ביולי 1992). "Variable kernel density estimation". Annals of Statistics 20 (3): 1236–1265. doi:10.1214/aos/1176348768. 
  7. ^ Mills, Peter. "Efficient statistical classification of satellite measurements". International Journal of Remote Sensing. 
  8. ^ Cover TM, Hart PE (20 ביולי 1967). "Nearest neighbor pattern classification". IEEE Transactions on Information Theory 13 (1): 21–27. doi:10.1109/TIT.1967.1053964. 
  9. ^ Beyer, Kevin, et al.. 'When is “nearest neighbor” meaningful?. Database Theory—ICDT’99, 217-235|year 1999
  10. ^ Shaw, Blake, and Tony Jebara. 'Structure preserving embedding. Proceedings of the 26th Annual International Conference on Machine Learning. ACM,2009
  11. ^ Bremner D, Demaine E, Erickson J, Iacono J, Langerman S, Morin P, Toussaint G (20 ביולי 2005). "Output-sensitive algorithms for computing nearest-neighbor decision boundaries". Discrete and Computational Geometry 33 (4): 593–604. doi:10.1007/s00454-004-1152-0. 
  12. ^ P. E. Hart, The Condensed Nearest Neighbor Rule. IEEE Transactions on Information Theory 18 (1968) 515–516. doi: 10.1109/TIT.1968.1054155
  13. ^ 13.0 13.1 E. M. Mirkes, KNN and Potential Energy: applet. University of Leicester, 2011.