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

מקור: ויקיפדיה
המטרה העיקרית של אלגוריתם SVM היא למצוא את ההיפר־מישור האופטימלי (במרחב דו־ממדי, זהו קו) שמפריד בצורה הטובה ביותר בין המחלקות במרחב התכונות. מודל SVM מייצג את הדוגמאות כנקודות במרחב, הממופות כך שדוגמאות מקטגוריות שונות מופרדות באמצעות מרווח ברור ורחב ככל האפשר.
- היפר־מישור: זהו למעשה גבול החלטה שמפריד בין המחלקות. במרחב דו־ממדי, היפר־מישור זה הוא קו, אך בממדים גבוהים יותר הוא עשוי להיות מורכב יותר.
- וקטורי תמיכה: אלה נקודות הנתונים הקרובות ביותר להיפר־מישור, והן חיוניות לקביעת מיקומו. נקודות אלה משפיעות מאוד על מסווג SVM, ומכאן שמו
Support VectorMachine. - מרווח: זהו המרחק בין שני קווים העוברים דרך נקודות הנתונים הקרובות ביותר ממחלקות שונות. אפשר להתייחס אליו כאל מדד להפרדה בין המחלקות. הבטחת מרווח רחב ככל האפשר היא מטרה מרכזית באימון SVM.
סוגי SVM:
- SVM ליניארי: כאשר הנתונים ניתנים להפרדה ליניארית, אפשר להשתמש בקו ישר יחיד כדי להפריד בין המחלקות. במקרה זה משתמשים ב-SVM ליניארי.
- SVM לא־ליניארי: כאשר הנתונים אינם ניתנים להפרדה ליניארית, SVM משתמש במה שמכונה טריק הגרעין כדי להעביר את מרחב הקלט למרחב בעל ממדיות גבוהה יותר, שבו אפשר להשתמש בהיפר־מישור כדי להפריד בין הנתונים. טריק הגרעין כולל העברת הנתונים לממד אחר שבו יש מרווח ברור בין מחלקות הנתונים. כך SVM יכול לפתור בעיות לא־ליניאריות. גרעינים נפוצים כוללים:
- גרעין ליניארי: משמש כאשר הנתונים ניתנים להפרדה ליניארית.
- גרעין פולינומי: מעביר את מרחב התכונות המקורי למרחב תכונות פולינומי מדרגה מוגדרת.
- גרעין גאוסי: שימושי לנתונים לא־ליניאריים שמתקבצים לקבוצות. הוא ממפה את מרחב התכונות לממדים גבוהים יותר.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלמכונות וקטורים תומכים (SVMs) משתמשות בפונקציות גרעין כדי למפות נתונים למרחב בעל ממד גבוה יותר, שבו קל יותר לסווג אותם. תהליך זה ידוע בשם "kernel trick". הוא מאפשר ל-SVMs לפתור ביעילות בעיות סיווג ורגרסיה לא ליניאריות.
כאן נבחן את הגרעין הפולינומי, המאפשר גבולות מעוקלים בנתונים. הוא מעלה את הנתונים בחזקה שצוינה d. גרעין זה שימושי במיוחד כאשר הקשר בין תוויות המחלקות לתכונות הוא פולינומי.
מקור: wikipedia
צרו פונקציה בשם polynomial_kernel שמקבלת שתי רשימות (x, y), דרגה (d) ומקדם (c), ומחזירה את הגרעין הפולינומי.
→ מכפלת המכפלה הסקלרית של הטרנספוזיציה של
x ב-y, בתוספת c, בחזקת d.
נסו בעצמכם
import numpy as np
def polynomial_kernel(x, y, d, c):
x_arr = np.array(x)
y_arr = np.array(y)
# כתבו את הקוד שלכם כאןכל השיעורים ביחידה מבוא ללמידת מכונה
תרגלו בעצמכם: קומפיילר Python אונליין