מה ההבדל בין C-SVM ל- nu-SVM?


תשובה 1:

ה- nu-SVM הוצע על ידי Scholkopf et al. היתרון של שימוש בפרמטר nu לבקרה על מספר ווקטורי התמיכה. הפרמטר C בניסוח SVM הרגיל מוחלף על ידי פרמטר nu שמוגבל על ידי 0 ו- 1. מוקדם יותר יכול היה הפרמטר C לקחת כל ערך חיובי, ולכן גבול נוסף זה מועיל ביישום.

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

כעת למרות הכבילה החדשה, ה- SV-SVM קשה יחסית למיטוב ולעיתים קרובות זמן הריצה אינו ניתן להרחבה בהשוואה ל- C-SVM.


תשובה 2:

SVM משתמש במטוסים היפר לביצוע סיווג. במהלך ביצוע סיווגים באמצעות SVM ישנם שני סוגים של SVM

  • C SVMNu SVM

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

C נע בין 0 לאינסוף ויכול להיות קצת קשה להעריך ולהשתמש בו. שינוי לכך היה הצגת nu שפועלת בין 0-1 ומייצגת את הגבול התחתון והעליון העומד על מספר הדוגמאות המהוות וקטורי תמיכה ושוכנות בצד הלא נכון של ההיפר-מטוס.

לשניהם יש כוח סיווג דומה יחסית, אך ה- SVM של עכשיו היה קשה יותר לייעל


תשובה 3:

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

מבחינת זמן הפיתרון, SMO והגרסאות צריכים לפתור את שניהם באותו זמן בערך. אני לא מודע לפיתרון קוד פתוח ליניארי / ראשוני של SV-SVM, כך שזה החיסרון של השימוש ב- nu-SVM בבעיות גדולות יותר ממה ש libsvm יכול לטפל בנוחות (לא אמור להיות קשה מדי לתקן קוד אחד). עם זאת, בדקתי C-SVM ליניארי / ראשוני (sklearn SGD או SVC ליניארי תוך שימוש בתכונות Fourier / nystroem) לעומת nu-SVM מ- Libsvm, ומצאתי שלעיתים קרובות libsvm לבחירה טובה יותר (על דיוק, גמישות וזמן) . הבעיה שלי הייתה עבור מערך נתונים לא מאוזן במיוחד, עם כ- 20,000 תצפיות, תכונות של 20–100, אם זה עוזר.