SVM (ماشین بردار پشتیبان)
آموزش SVM: ابرصفحه جداکننده، حاشیه بیشینه، کرنلها و دادههای غیرخطی
SVM چیست؟
Support Vector Machine دنبال مرز تصمیمی میگردد که دو کلاس را با بیشترین حاشیه (Margin) جدا کند؛ نه فقط هر مرزی!
ابرصفحه و حاشیه
- ابرصفحه (Hyperplane): مرز جداکننده (در ۲بعدی یک خط، در ۳بعدی یک صفحه)
- حاشیه (Margin): فاصله مرز تا نزدیکترین نمونههای هر کلاس
- بردارهای پشتیبان (Support Vectors): نمونههای روی مرز حاشیه — فقط همینها مهماند!
چرا حاشیه بزرگ؟ تعمیم بهتر! مرز با حاشیه بزرگ، خطای کمتری روی داده جدید میکند.
داده غیرخطی: ترفند کرنل
اگر داده با خط جدا نشود چه؟ کرنل داده را به فضای با ابعاد بالاتر میبرد که آنجا جداپذیر خطی است:
- linear: داده خطی جداپذیر
- poly: مرز چندجملهای
- rbf: محبوبترین؛ مرزهای منحنی انعطافپذیر (شعاعی)
- sigmoid: شبیه شبکه عصبی
پیادهسازی
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(X_train, y_train)
هایپرپارامترهای کلیدی
| پارامتر | معنی | اثر |
|---|---|---|
C | جریمه خطا | بزرگ: حاشیه کوچک، Overfitting / کوچک: حاشیه بزرگ، Underfitting |
gamma | پهنایی کرنل rbf | بزرگ: مرز پیچیده، Overfitting / کوچک: مرز نرم |
نکته: مقیاسبندی!
SVM شدیداً به مقیاس حساس است. همیشه قبل از SVM، داده را با StandardScaler استاندارد کنید.
مزایا و معایب
| مزایا | معایب |
|---|---|
| در فضای پربعدعالی است | کند روی داده بزرگ |
| با کرنل، غیرخطی قدرتمند | تنظیم C و gamma سخت |
| حافظه کم (فقط بردارهای پشتیبان) | احتمال خروجی ندارد (خام) |
جمعبندی
- SVM مرز با بیشترین حاشیه را مییابد
- کرنل (مخصوصاً rbf) داده غیرخطی را خطی میکند
- C و gamma را با GridSearch تنظیم کنید
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.