מוטיבציה
- 
      עסקנו בתרגולים קודמים בסיווג לינארי: - מציאת מישור לינארי אשר מפריד בין המחלקות.
 
- עם זאת, למעשה ניתן למצוא אינסוף מישורי הפרדה כאלה במקרה הלא לינארי.
- 
      SVM הינו אלגוריתם סיווג לינארי המבוסס על הרעיון הבא: לבחור את מישור ההפרדה אשר ממקסם את השוליים (Margin) בין המחלקות. 
תזכורת - גאומטריה של המישור
- 
      משוואה של מישור ב- : עבור ו- , קבועים המגדירים את המישור. 
- 
      מרחק אוקלידי של נקודה מהמישור הינו: 
Hard SVM
בעיית אופטימיזציה זו מתאימה למקרה ששתי המחלקות ניתנות להפרדה לינארית.
בחירת ה- Margin המקסימלי שקולה לפתרון בעיית האופטימיזציה הבאה:
- בעיה זו מכונה הבעיה הפרימאלית.
- שהאילוץ דורש שכל הנקודות יסווגו נכון על ידי המסווג הלינארי.
הבעיה הדואלית
בעית האופטימיזציה הבאה, אשר נקראת הבעיה הדואלית, שקולה לבעיה לעיל:
- 
      ניתן לחשב את המשקולות באמצעות הקשר הבא: 
הבעיה הדואלית - המשך
הבעיה הדואלית מדגישה תכונה מעניינת של הפתרון:
עבור פתרון בעיית ה- SVM, כל דוגמא מסט הלימוד תציית לאחד מהתנאים הבאים:
 1. and
 2. and
- 
      מהמשוואה , ניתן לראות שהפתרון הוא קומבינציה לינארית של הדוגמאות . 
- 
      רק עבור דוגמא שעבורה מתקיים , משתתפת בהגדרת הערך של . 
- 
      נקודות אלה נקראות וקטורי תמיכה (Support Vectors) ובמקרה הכללי, המספר שלהם יהיה נמוך. 
תכונות ה- Support Vectors
- 
      מרחקן למישור המפריד הוא מינימלי. 
- 
      אם ורק אם היא SV. 
- 
      אם היא SV, מתקיים (הכיוון ההפוך לא בהכרח מתקיים, כלומר יכולה להיות דוגמה עבורה השוויון הנ”ל מתקיים אך ). 
- 
      המרחק האוקלידי של ה SV מהמישור המפריד נקרא ה- margin של הבעיה, והוא שווה ל (תרגיל: הוכיחו את הביטוי הנ”ל, בעזרת הביטוי למרחק נקודה ממישור ותכונה מס’ 3). 
שאלה 1 - דוגמאות ניתנות להפרדה לינארית
נתונות שתי המחלקות הבאות:
מחלקה 1: ()
מחלקה 2: ( )

א. צייר את מסווג ה-SVM הלינארי לבעיה זו? מהם וקטורי התמיכה (support vectors)?
ב. נתון כי הערכים האופטימליים של הבעיה הדואלית הם:  לאילו דוגמאות שייכים הערכים השווים לאפס?
ג. חשב את ערך הווקטור w האופטימאלי של הבעיה הפרימאלית?
ד. מהו ה-margin של הבעיה?
ה. חשב את ה-margin ישירות מערכי .
א. צייר את מסווג ה-SVM הלינארי לבעיה זו? מהם וקטורי התמיכה (support vectors)?
פתרון
נבדוק מה המספר האפשרי של ווקטורי תמיכה בבעיה זו:
- : 
 אפשרי באופן עקרוני, אם כל הנקודות בסט הלימוד שייכות רק למחלקה אחת. הפתרון האופטימלי המתקבל הוא . מצב זה לא מתקיים בסט הלימוד הנתון בשאלה.
- :
 לא אפשרי במקרה הכללי, שכן אי אפשר לקיים את התנאי עם אחד בלבד ששונה מ- 0. היוצא מהכלל הוא מקרה פרטי בו אנו מאלצים את המישור המפריד לעבור בראשית, כלומר קובעים . במצב זה אינו מופיע בבעית האופטימיזציה, ולא נקבל את התנאי . השאלה דנה במקרה הכללי ולכן לא נבדוק את המקרה הזה.
- : 
 אפשרי. במקרה זה הווקטור ניצב לקו המחבר את ווקטורי התמיכה. זוגות אפשריים הן הנקודות (ראו ציור) . ע”י בדיקה רואים שכל הזוגות מובילים לסתירה עם ההנחה שהם ווקטורי תמיכה, שכן עבור כל זוג קייימת נקודה אחרת שיותר קרובה למישור המפריד, בסתירה לתכונות ה- SV.
- :
 אפשרי.
 השלשות המועמדות הן נקודות או . עבור כל שלשה ניתן לפתור עבור תוך שימוש באילוץ (שמתקיים בשוויון עבור ה- SV). הצבת 3 נקודות תיתן 3 משוואות ב 3 נעלמים, ונקבל פתרון יחיד לנעלמים ו- .
מקבלים:
 והפתרון האופטימלי הוא השלשה עם מינימלי, כלומר .
ב.   נתון כי הערכים האופטימליים של הבעיה הדואלית הם:
	
	לאילו דוגמאות שייכים הערכים השווים לאפס?
ב.   נתון כי הערכים האופטימליים של הבעיה הדואלית הם:
		
	לאילו דוגמאות שייכים הערכים השווים לאפס?
פתרון
הערכים עבורם שייכים לדוגמאות שאינן ה SV.
ג. חשב את ערך הווקטור w האופטימאלי של הבעיה הפרימאלית?
ד. מהו ה-margin של הבעיה?
ה. חשב את ה-margin ישירות מערכי .
פתרון
 ג. את האופטימלי מצאנו בסעיף א’.
 ד. ה- margin של הבעיה הוא
 ה. נמצא את ע”י הנוסחה:
 מתקבל כמובן אותו כמו מסעיף א’ וה margin מחושב כמו בסעיף ד’.
Soft SVM
- 
      במקרה שהמחלקות לא פרידות לינארית, בעית האופטימיזציה לעיל איננה פתירה: - לא ניתן לקיים את האילוץ לכל הנקודות.
 
- 
      לכן, ניתן להשתמש בגרסה אחרת של בעית האופטימיזציה אשר עושה שימוש במשתנים שמאפשרים את הפרת האילוץ. באנגלית, משתנים אלו מכונים Slack Variables. 
- 
      - 
          בעזרת השימוש במשתנים אלה, ניתן להפר את האילוץ, ולכן להגיע לפתרון שלא מסווג באופן מושלם את כל הדוגמאות. 
- 
          כדי שעדיין תהיה משמעות לבעיית האופטימיזציה, נעניש את השימוש במשתנים האלה, כדי למנוע ככל הניתן את כמות ההפרות של האילוץ. 
 
- 
          
Soft SVM
הבעיה הפריאמלית:
הבעיה הדואלית:
כאשר, הקשר הבא עדיין מתקיים:
כעת, הדוגמאות ב- Data יקיימו את אחד משלושת התנאים האים:
- 
      and 
- 
      and 
- 
      and 
פונקציות גרעין - מסווג לא לינארי
- 
      עבור הרבה בעיות מעשיות, משטח החלטה לינארי אינו מפריד בצורה טובה בין המחלקות, ונצפה שמשטח החלטה לא לינארי ישיג ביצועים יותר טובים. 
- 
      ניתן למצוא משטח הפרדה כזה באמצעות טרנספורמציה לא לינארית ממרחב הקלט למרחב חדש: , כאשר . 
- 
      אימון של מסווג לינארי במרחב החדש, שיראה מהצורה , שקול למסווג לא-לינארי במרחב המקורי. 
דוגמה: 
- במרחב  אין מפריד לינארי,
      - אך הטרנספורמציה מאפשרת לסווג את הדוגמאות
 
ללא שגיאה עם המסווג הלינארי:
כלומר, ו-
דוגמה נוספת:
טרנספורמציה למרחב הפולינומים ממעלה עד 2, בקואורדינטות של הווקטור :
בעיה: טרנספורמציה למרחב חדש יכולה להיות יקרה חישובית אם המימד של המרחב החדש גבוה מאוד.
בעיה: טרנספורמציה למרחב חדש יכולה להיות יקרה חישובית אם המימד של המרחב החדש גבוה מאוד.
פתרון:
ניזכר שבאמצעות פתרון הבעיה הדואלית ל- SVM עבור , הפתרון האופטימלי הינו:
אם המסווג תלוי רק במכפלות פנימיות בין ווקטורי הקלט, אין צורך לחשב את , אלא רק את המכפלות הפנימיות במרחב החדש, :
לצורך זה נציג את פונקציית הגרעין.
פונקציית גרעין (Kenel)
נגדיר פונקציית גרעין על קבוצה X (תת-קבוצה של ) כפונקציה שהינה:
א. סימטרית:
ב. לכל קבוצה סופית של נקודות , המטריצה היא מטריצה אי שלילית מוגדרת (PSD).
אזי, תחת תנאים טכניים סבירים, קיים מרחב כך שפונקציית הגרעין הינה מכפלה פנימית מהצורה:
פונקציית גרעין (Kernel) - המשך
כעת הסיווג שלנו יהיה כדלקמן:
כך ניתן לחשב ישירות את , במקום את שיכול להיות יקר לחישוב.
זאת, מאחר שחישוב זה פרופורציוני לגודל מרחב הקלט ולחישוביות הפונקציה , אך איננו תלוי ב- - גודל מרחב ה- Features.
דוגמאות לפונקציות גרעין:
א. גרעין גאוסי: .
- הפונקציות הן גאוסיאנים ו- הינו פרמטר שיש לקבוע ידנית.
ב. גרעין פולינומיאלי: ,
- כאשר פרמטר שיש לקבוע ידנית.
מפתיחת הגרעין ניתן לוודא שנקבל פולינום רב-משתנים מסדר עד  באיברי הווקטורים . לכן, גרעין זה מתאים ל- Feature Space פולינומיאלי.
מדוע להשתמש בפונקציות גרעין?
נסתכל לדוגמא על הגרעין הבא: , כאשר .
ניתן להראות שגרעין זה פורס את ה- Feature Space הבא:
כאשר , כלומר את כל האיברים האפשריים מסדר .
לדוגמא:
מדוע להשתמש בפונקציות גרעין? - המשך
בסך הכל, ניתן לראות שמימד ה- Features הינו קומבינטורי (ולכן אקפוננציאלי):
כאשר
- עבור ערכים גדולים של או , חישוב ישיר דרך מרחב ה- Feature-ים נדון לכישלון, בגלל מספר החישובים האקפוננציאלי הדרוש
לעומת זאת, ניתן להשתמש ב- Kernel Trick: חישוב ישיר של הסיווג דרך ה- Kernel, באמצעות הנוסחא
- עבור, נדרשים לנו אך ורק חישובים!
מוטיבציה לשימוש בבעיה הדואלית
בתרגיל הבא, נראה שכאשר פותרים את בעית ה- SVM הדואלית, ניתן להתחמק משימוש ב- Feature-ים בעת תהליך הלימוד ולהשתמש רק בפונקציית הגרעין.
הבעיה הדואלית ניתנת לתאור בצורה הבא עבור פונקציית גרעין:
נשים לב, שאכן אין כאן תלות במרחב ה- Feature-ים החדש, אלא רק בחישוביות של ה- Kernel!
מסקנה:
- 
      נבצע סיווג לא לינארי באמצעות מרחב Feature-ים שמתואר על ידי kernel. 
- 
      נוכל לחסוך חישובים רבים עקב הטרנספורמציה הזולה חישובית של ה- Kernel במסגרת הבעיה הדואלית. 
תרגיל 2 - גרעין גאוסי
נתונות שתי נקודות במרחב דו מימדי,
חשבו את משטח ההפרדה עבור הגרעין הגאוסי בעל , ו - .
פתרון
- 
      נזכר כי כלל ההחלטה הוא 
- 
      לכן, משטח גבול ההחלטה מקיים 
- 
      על מנת לחשב את המשטח יש למצוא את המקדמים . לצורך כך, נפתור את הבעיה הדואלית (הפרידה): 
במקרה שלנו,
- נשים לב כי וכן כי .
- מהאילוץ השני נקבל .
- בהצבה בפונקציית המטרה נקבל,
- זוהי בעיה חד מימדית ריבועית, נגזור על מנת למצוא נקודת מקסימום ונקבל,
כעת, נמצא את b:
כדי למצוא את $b$ נדרוש שאחת מהנקודות הינה SV:
ומכאן הפתרון הוא למשטח ההפרדה הוא
זוהי משוואת קו ישר (כצפוי).
חלק מעשי
בעיה: זיהוי מין הדובר על סמך אות דיבור
- בחלק זה, ננסה להשתמש ב- SVM כדי לזהות את מינו של הדובר באמצעות קולו.
- מוטיבציה למערכת כזאת יכולה להיות עוזר וירטואלי שרוצה לפנות לדובר לפי מינו.
      - הרחבה לניסיון זה יכולה להיות זיהוי דובר על סמך קולו וכו’.
 
Dataset Labeled Voices
הרעיון וה- DATA נלקחו מ- Dataset והערכת ביצועים של קורי בקר, אשר נמצאים באתר הבא.
בפרוייקט זה נאספו 3168 דגימות קול מתוייגות מהמקורות הבאים:
- The Harvard-Haskins Database of Regularly-Timed Speech
- Telecommunications & Signal Processing Laboratory (TSP) Speech Database at McGill University
- VoxForge Speech Corpus
- Festvox CMU_ARCTIC Speech Database at Carnegie Mellon University
כל רצועת קול עברה עיבוד באמצעות כלי בשםWarbleR i כדי לייצר 20 Features לכל דגימה.
ה- Data עצמו נמצא כאן.
🔃 תהליך העבודה
🕵️ בחינת ה - Data
נסתכל על העמודות הראשונות ב- Data
מספר הרשומות :
| meanfreq | sd | median | Q25 | Q75 | IQR | skew | kurt | sp.ent | sfm | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.059781 | 0.064241 | 0.032027 | 0.015071 | 0.090193 | 0.075122 | 12.863462 | 274.402906 | 0.893369 | 0.491918 | male | 
| 1 | 0.066009 | 0.067310 | 0.040229 | 0.019414 | 0.092666 | 0.073252 | 22.423285 | 634.613855 | 0.892193 | 0.513724 | male | 
| 2 | 0.077316 | 0.083829 | 0.036718 | 0.008701 | 0.131908 | 0.123207 | 30.757155 | 1024.927705 | 0.846389 | 0.478905 | male | 
| 3 | 0.151228 | 0.072111 | 0.158011 | 0.096582 | 0.207955 | 0.111374 | 1.232831 | 4.177296 | 0.963322 | 0.727232 | male | 
| 4 | 0.135120 | 0.079146 | 0.124656 | 0.078720 | 0.206045 | 0.127325 | 1.101174 | 4.333713 | 0.971955 | 0.783568 | male | 
| 5 | 0.132786 | 0.079557 | 0.119090 | 0.067958 | 0.209592 | 0.141634 | 1.932562 | 8.308895 | 0.963181 | 0.738307 | male | 
| 6 | 0.150762 | 0.074463 | 0.160106 | 0.092899 | 0.205718 | 0.112819 | 1.530643 | 5.987498 | 0.967573 | 0.762638 | male | 
| 7 | 0.160514 | 0.076767 | 0.144337 | 0.110532 | 0.231962 | 0.121430 | 1.397156 | 4.766611 | 0.959255 | 0.719858 | male | 
| 8 | 0.142239 | 0.078018 | 0.138587 | 0.088206 | 0.208587 | 0.120381 | 1.099746 | 4.070284 | 0.970723 | 0.770992 | male | 
| 9 | 0.134329 | 0.080350 | 0.121451 | 0.075580 | 0.201957 | 0.126377 | 1.190368 | 4.787310 | 0.975246 | 0.804505 | male | 
| 9 | 0.134329 | 0.080350 | 0.121451 | 0.075580 | 0.201957 | 0.126377 | 1.190368 | 4.787310 | 0.975246 | 0.804505 | male | 
Data Fields and Types
להלן התאור של שדות ה- Data מאתר הפרוייקט:
- 
      meanfreq: mean frequency (in kHz) 
- 
      sd: standard deviation of frequency 
- 
      median: median frequency (in kHz) 
- 
      Q25: first quantile (in kHz) 
- 
      Q75: third quantile (in kHz) 
- 
      IQR: interquantile range (in kHz) 
- 
      skew: skewness (see note in specprop description) 
- 
      kurt: kurtosis (see note in specprop description) 
- 
      label: The label of each track: male/female 
📉 סטטיסטיקה של ה- Data
מספר הנשים והגברים ב- Data

היסטוגרמות של הערכים השונים:

📜 הגדרת הבעיה
- 
      דגימת קול אקראית - 
- 
      משתנים אקראיים: - 
          : רשימה של ערכים שהוצאו עבור דגימת הקול. 
- 
          : מין הדובר: עבור נקבה, עבור זכר 
 
- 
          
הריסק שלנו היינו - Misclassification
💡 שיטת הלימוד: Soft-SVM
- נשתמש בחבילת האופטימיזציה הקונבקסית cvxpy על מנת לפתור את בעיית האופטימיזציה של SVM.
פרמטרים:
הפרמטרים הנלמדים המודל הינם ו- או במקרה שנפתור את הבעיה הדואלית.
היפר-פרמטרים:
ההיפר-פרמטר היחיד בבעיית ה- Soft-SVM הינו פרמטר העונש , שמגדיר מה העונש על הפרת האילוצים.
עיבוד מקדים
📚 א) פיצול ה- Data
- 
      סט אימון - 60% 
- 
      סט וולידציה - 20% 
- 
      סט בוחן - 20% 
📚 ב) נרמול ה- Data
חשוב לנרמל את ה- Data לפני הרצת האלגוריתם, משתי סיבות עיקריות:
- 
      ה- Data מתאר מאפיינים ביחידות וסקלות שונות. 
- 
      האלגוריתם מנסה למזער את Objective אשר מבוסס מרחק, מה שהופך אותו לרגיש ביחס למרחק לכל כיוון. - לדוגמא, אם נכפיל מאפיין מסויים בערך קבוע גדול מ-1, למעשה ניתן לו חשיבות יתרה ב- Objective.
 
⚙️ שלב הלמידה - הבעייה הדואלית
- ראשית, נפתור את הבעיה הדואלית:
- נתחיל עם ולאחר מכן ננסה לכוונן היפר-פרמטר זה.
נצייר את ערך לכל אחת מהדוגמאות

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

- הצבעים מייצגים את 3 המקרים לעיל.
הסיכון שהתקבל על סט הבוחן הינו:
⚙️ שלב הלמידה - הבעייה הפרימאלית
כתרגיל, ננסה גם לפתור את הבעיה הפרימאלית ישירות ונשווה בין הפתרונות:
The first 10 values if w in the primal problem are:
[ 0.32403667 -0.13227075 -0.06096529  0.41782102 -0.48840472]
The first 10 values if w in the dual problem are:
[ 0.32138073 -0.13206916 -0.05900207  0.4178552  -0.48799808]
The b value of the primal problem is: 0.6602256435596877
The b value of the dual problem is: 0.658170109096357
בחירת מודל - כיוונון היפר פרמטרים
- 
      כעת, ננסה לבחור את ההיפר-פרמטר . 
- 
      נסתכל על ערכים בטווח - ונשווה את התוצאות על סט האימות 
- 
      ה- האופטימלי הינו 
- 
      הסיכון שהתקבל על סט הבוחן הינו: 

שימוש בפונקציית גרעין:
- נשתמש בפורמולצייה של הבעייה הדואלית:
      - ניתן להחליף את המכפלה הפנימית בפונקציית גרעין.
 
- החלפנו את פונקציית הגרעין בגרעין פופולרי המכונה Radial Basis Function.
ה- האופטימלי שהתקבל הינו .
הסיכון על סט הבוחן הינו:
