ML 101
م04 · د03
الوحدة 4
SVM في التطبيق
النظرية نصف القصة فقط. الآن ندرِّب ونضبط ونُقيِّم SVMs حقيقية باستخدام scikit-learn — من البيانات الخام إلى مصنِّف منشور.
1 / 13
ML 101
م04 · د03
الخطوة الأولى
دائمًا وحِّد البيانات
SVMs ليست محايدة تجاه المقياس — المسافات تقود الهامش. وحِّد دائمًا داخل Pipeline لتجنب تسرب البيانات.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = Pipeline([('sc', StandardScaler()), ('svm', SVC())])
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = Pipeline([('sc', StandardScaler()), ('svm', SVC())])
2 / 13
ML 101
م04 · د03
المعاملات الرئيسية
واجهة SVC البرمجية
- kernel —
'rbf'افتراضيًا،'linear'،'poly' - C — قوة التنظيم (1.0 افتراضيًا)
- gamma — عرض نطاق RBF (
'scale'افتراضيًا) - probability — تفعيل تحجيم Platt (أبطأ)
- class_weight —
'balanced'للبيانات غير المتوازنة
3 / 13
ML 101
م04 · د03
تقدير موثوق
التحقق المتقاطع
تقسيمة واحدة تعطي تقديرات صاخبة. k-fold CV يحسب المتوسط عبر k طيات محجوزة — كل نقطة بيانات تُختبر مرة واحدة.
درجة CV
\hat{S}_{\text{CV}} = \tfrac{1}{k}\sum_{i=1}^{k} S_i
4 / 13
ML 101
م04 · د03
أفضل الممارسات
الطيات المتطابقة
- استخدم StratifiedKFold للحفاظ على نسب الفئات
- اخلط قبل التقسيم (اضبط random_state)
- 5 أو 10 طيات هو المعيار
- دِرِّب المعالجة المسبقة داخل كل طية عبر Pipeline
- أفِد بالمتوسط ± الانحراف المعياري عبر الطيات
5 / 13
ML 101
م04 · د03
ضبط C وγ
البحث الشبكي
C وγ يتفاعلان — اضبطهما معًا، ليس بشكل مستقل. ابحث على مقياس لوغاريتمي: {0.01، 0.1، 1، 10، 100}.
نطاق C
10⁻² → 10²
نطاق γ
10⁻⁴ → 10¹
6 / 13
ML 101
م04 · د03
تأثيرات المعاملات الفائقة
مقايضات C وγ
- C كبير — هامش صغير، أخطاء قليلة مسموحة ← خطر إفراط التخصيص
- C صغير — هامش واسع، مزيد من الأخطاء ← خطر نقص التخصيص
- γ كبير — جرس RBF ضيق → حد متعرج
- γ صغير — جرس RBF واسع → حد سلس
- C كبير + γ كبير = إفراط التخصيص
7 / 13
ML 101
م04 · د03
ما وراء الدقة
مقاييس التقييم
- الإحكام — من الإيجابيات المتنبَّأ بها، كم منها صحيح؟
- الاستدعاء — من الإيجابيات الفعلية، كم اصطدناها؟
- F1 — الوسط التوافقي للإحكام والاستدعاء
- مصفوفة الالتباس — تفصيل كامل لـ TP/FP/TN/FN
- الدقة تُضلِّل على الفئات غير المتوازنة
8 / 13
ML 101
م04 · د03
مخرجات الاحتمالية
تحجيم Platt
اضبط probability=True للحصول على احتمالات مُعايَرة. يُدرِّب تحجيم Platt سينمويدًا لوجستيًا فوق درجات قرار SVM.
Platt
P(y{=}1\mid f) = \sigma(Af+B) = \dfrac{1}{1+e^{-(Af+B)}}
9 / 13
ML 101
م04 · د03
أنواع SVM
ما بعد الثنائي
- متعدد الفئات — SVM ثنائي؛ يُلائم
SVCواحد-ضد-واحد، K(K−1)/2 نموذجًا، تصويت الأغلبية - واحد-ضد-البقية — افتراضي
LinearSVC: K نماذج، واحد لكل فئة، يفوز الأعلى درجةً - SVR — انحدار عبر أنبوب غير حسّاس بعرض ε؛ الأخطاء ضمن ±ε لا تكلّف شيئًا
- متجهات الدعم = النقاط على الأنبوب أو خارجه؛ نفس النوى وC كما في SVC
- LinearSVC يتوسع للملايين (LIBLINEAR، O(n)) — النصوص، علم الأحياء، البيانات المتفرقة
10 / 13
ML 101
م04 · د03
أخطاء شائعة
المزالق العملية
- التوحيد خارج Pipeline → تسرب البيانات
- البحث الخطي عن C وγ → تفويت الأمثل
- تجاهل تحذيرات التقارب ← نموذج غير صالح
- استخدام الدقة على بيانات غير متوازنة ← مُضلِّل
- ضبط C وγ بشكل مستقل → دون المستوى الأمثل
- نسيان class_weight على الفئات غير المتوازنة
11 / 13
ML 101
ملخص
مراجعة
ما تعلمته
وحِّد الميزات داخل Pipeline. اضبط C وγ معًا عبر بحث شبكي لوغاريتمي. استخدم StratifiedKFold. قيِّم بـ F1 ومصفوفة الالتباس. للبيانات الكبيرة، استخدم LinearSVC. الوحدة 4 مكتملة!
الوحدة 4 منتهية
SVMs: النظرية والتطبيق ←
13 / 13