تعلم الآلة متقدم · Advanced 15 دقيقة

تدريب النماذج

Model Training

من دالة الخسارة إلى ضبط المعاملات الفائقة: كيف ندرب النموذج ونختار إعداداته بمنهجية.

تقدّمك في المسار0%

ما الذي نتعلمه؟

  • المعاملات (Parameters): تُتعلم من البيانات، مثل الأوزان \(\mathbf{w}\).
  • المعاملات الفائقة (Hyperparameters): نحددها نحن، مثل C وmax_depth وn_neighbors.

التحسين التكراري

كثير من النماذج تُدرَّب بالانحدار التدرجي:

$$\mathbf{w} \leftarrow \mathbf{w} – \eta \, \nabla_{\mathbf{w}} L(\mathbf{w})$$

حيث \(\eta\) معدل التعلم. ستتعمق في هذا في مسار التعلم العميق.

ابدأ بخط أساس

from sklearn.dummy import DummyClassifier
from sklearn.model_selection import cross_val_score
base = DummyClassifier(strategy="most_frequent")
print(cross_val_score(base, X, y, cv=5, scoring="balanced_accuracy").mean())

إذا لم يتفوق نموذجك بوضوح على هذا الرقم، فراجع البيانات قبل تعقيد النموذج.

ضبط المعاملات الفائقة

from scipy.stats import loguniform
from sklearn.model_selection import RandomizedSearchCV, StratifiedKFold
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

pipe = make_pipeline(StandardScaler(), SVC())
search = RandomizedSearchCV(
    pipe,
    {"svc__C": loguniform(1e-2, 1e3), "svc__gamma": loguniform(1e-4, 1e1)},
    n_iter=40, cv=StratifiedKFold(5, shuffle=True, random_state=0),
    scoring="f1_macro", random_state=0, n_jobs=-1)
search.fit(X_train, y_train)
print(search.best_params_, search.best_score_)
best = search.best_estimator_      # أُعيد تدريبه على كل X_train

بعد اختيار الإعدادات، قيّم best مرة واحدة على بيانات الاختبار.

قابلية التكرار

  • ثبّت random_state في التقسيم والنماذج.
  • سجّل إصدارات المكتبات والإعدادات والنتائج.
  • احفظ النموذج المدرب مع خط المعالجة كاملاً (مثلاً باستخدام joblib).

قائمة تحقق

  1. تقسيم سليم للبيانات.
  2. خط أساس.
  3. خط معالجة داخل Pipeline.
  4. ضبط المعاملات الفائقة بالتحقق المتقاطع.
  5. تقييم نهائي واحد على الاختبار.

مصطلحات الدرس

البحث الشبكي Grid Search
تجربة كل تركيبات قيم المعاملات الفائقة المحددة واختيار الأفضل وفق التحقق المتقاطع.
المعامل الفائق Hyperparameter
إعداد يُحدَّد قبل التدريب ولا يُتعلَّم مباشرة من البيانات، مثل عمق الشجرة أو معدل التعلم.
خط الأساس Baseline
نموذج بسيط يُستخدم مرجعاً للمقارنة، مثل التنبؤ بالفئة الأكثر تكراراً.

الملخص

تدريب النموذج يعني إيجاد المعاملات التي تقلل دالة الخسارة على بيانات التدريب، بحلول مغلقة أو بطرق تحسين تكرارية مثل الانحدار التدرجي. أما المعاملات الفائقة (hyperparameters) مثل عمق الشجرة أو قوة التنظيم فتُختار بالبحث الشبكي أو العشوائي مع التحقق المتقاطع. التدريب الجيد يبدأ بخط أساس بسيط، ويضمن قابلية التكرار بتثبيت البذور وتوثيق الإعدادات.

أسئلة مراجعة

  1. ما الفرق بين المعامل والمعامل الفائق؟

    المعامل يُتعلم من البيانات أثناء التدريب (مثل أوزان الانحدار)، والمعامل الفائق يُحدد قبل التدريب (مثل C أو max_depth).

  2. لماذا نبدأ بخط أساس؟

    لنعرف هل النموذج المعقد يضيف قيمة فعلية، ولنكشف مشكلات البيانات مبكراً.

المصادر والمراجع

  1. scikit-learn — Tuning the hyper-parameters of an estimator
  2. scikit-learn — Dummy estimators
  3. Bergstra & Bengio (2012) Random Search for Hyper-Parameter Optimization — JMLR

إكمال الدرس