ML 101
م04 · د03
الوحدة 4

الـ SVM في التطبيق

النظرية نص الحكاية بس. دلوقتي هندرّب ونظبط ونقيّم SVMs حقيقية باستخدام scikit-learn — من البيانات الخام لحد classifier شغّال.

1 / 13
ML 101
م04 · د03
الخطوة الأولى

اعمل scaling للبيانات دايمًا

الـ SVMs مش محايدة ناحية المقياس — المسافات هي اللي بتسوق الـ margin. اعمل الـ scaling دايمًا جوه Pipeline عشان تتجنّب الـ data leakage (تسرب البيانات).

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = Pipeline([('sc', StandardScaler()), ('svm', SVC())])
2 / 13
ML 101
م04 · د03
أهم الـ parameters

الـ API بتاع SVC

  • kernel — 'rbf' افتراضيًا، 'linear'، 'poly'
  • C — قوة الـ regularization (1.0 افتراضيًا)
  • gamma — الـ bandwidth بتاع RBF ('scale' افتراضيًا)
  • probability — يشغّل الـ Platt scaling (أبطأ)
  • class_weight — 'balanced' للبيانات اللي مش متوازنة
3 / 13
ML 101
م04 · د03
تقدير موثوق

الـ cross-validation

تقسيمة واحدة بتدّي تقديرات فيها noise. الـ k-fold CV (التحقق المتقاطع) بياخد المتوسط على k fold على جنب — كل نقطة بيانات بتتختبر مرة واحدة.

درجة الـ CV
\hat{S}_{\text{CV}} = \tfrac{1}{k}\sum_{i=1}^{k} S_i
4 / 13
ML 101
م04 · د03
أحسن الممارسات

الـ folds المتوازنة

  • استخدم StratifiedKFold عشان تحافظ على نسب الفئات
  • اعمل shuffle قبل التقسيم (ظبط random_state)
  • 5 أو 10 folds هو المعيار
  • درّب الـ preprocessing جوه كل fold عن طريق Pipeline
  • بلّغ بالمتوسط ± الـ standard deviation على الـ folds
5 / 13
ML 101
م04 · د03
ظبط C وγ

الـ grid search

C وγ بيتفاعلوا — ظبطهم مع بعض، مش كل واحد لوحده. دوّر على مقياس لوغاريتمي: {0.01، 0.1، 1، 10، 100}.

مدى C
10⁻² → 10²
مدى γ
10⁻⁴ → 10¹
6 / 13
ML 101
م04 · د03
تأثير الـ hyperparameters

الـ trade-offs بتوع C وγ

  • C كبير — margin صغير، أخطاء قليلة مسموحة ← خطر overfitting
  • C صغير — margin واسع، أخطاء أكتر ← خطر underfitting
  • γ كبير — جرس RBF ضيق → حد متعرّج
  • γ صغير — جرس RBF واسع → حد ناعم
  • C كبير + γ كبير = overfitting
7 / 13
ML 101
م04 · د03
أبعد من الـ accuracy

metrics التقييم

  • الـ precision (الإحكام) — من الـ positives المتوقعة، كام منها صح؟
  • الـ recall (الاستدعاء) — من الـ positives الحقيقية، مسكنا كام؟
  • F1 — الوسط التوافقي للـ precision والـ recall
  • الـ confusion matrix (مصفوفة الالتباس) — تفصيل كامل لـ TP/FP/TN/FN
  • الـ accuracy بتضلّل على الفئات اللي مش متوازنة
8 / 13
ML 101
م04 · د03
outputs احتمالية

الـ Platt scaling

خلّي probability=True عشان تاخد احتمالات متعايرة. الـ Platt scaling (تحجيم Platt) بيدرّب logistic sigmoid فوق درجات القرار بتاعة الـ SVM.

Platt
P(y{=}1\mid f) = \sigma(Af+B) = \dfrac{1}{1+e^{-(Af+B)}}
9 / 13
ML 101
م04 · د03
أنواع الـ SVM

أبعد من الثنائي

  • multi-class — الـ SVM ثنائي؛ SVC بيعمل fit one-vs-one، K(K−1)/2 model، وتصويت أغلبية
  • one-vs-rest — الافتراضي في LinearSVC: K models، واحد لكل فئة، والأعلى درجة بيكسب
  • SVR — regression عن طريق أنبوبة ε-insensitive؛ الأخطاء جوه ±ε مبتكلّفش حاجة
  • الـ support vectors = النقط اللي على الأنبوبة أو بره؛ نفس الـ kernels وC زي SVC
  • LinearSVC بيكبر للملايين (LIBLINEAR، O(n)) — النصوص، البيولوجيا، البيانات الـ sparse
10 / 13
ML 101
م04 · د03
غلطات مشهورة

الفخاخ العملية

  • الـ scaling بره الـ Pipeline → data leakage
  • البحث الخطي عن C وγ → بتفوّت الأمثل
  • تجاهل تحذيرات التقارب ← model مش صالح
  • استخدام الـ accuracy على بيانات مش متوازنة ← مضلّل
  • ظبط C وγ كل واحد لوحده → أقل من الأمثل
  • نسيان class_weight على الفئات اللي مش متوازنة
11 / 13
ML 101
اختبار سريع

شوف إيه اللي ثبت

أربع أسئلة من الدرس ده. جاوب عشان تشوف السبب — الشرح بيظهر سواء جاوبت صح أو غلط. ونتيجتك مش بتتحفظ.

السؤال 1 من 0
النتيجة 0/0

12 / 13
ML 101
الخلاصة
مراجعة

اتعلّمت إيه

اعمل scaling للـ features جوه Pipeline. ظبط C وγ مع بعض بـ grid search لوغاريتمي. استخدم StratifiedKFold. قيّم بالـ F1 والـ confusion matrix. وللبيانات الكبيرة، استخدم LinearSVC. الوحدة 4 خلصت!

الوحدة 4 خلصت
الـ SVMs: النظرية والتطبيق ←
13 / 13