تخطَّ إلى المحتوى

Hyperparameter Tuning

ضبط المعلمات التشعبية (Hyperparameter Tuning) Hyperparameter Tuning

ضبط المعلمات التشعبية (مثل max_depth، n_estimators، C) يبحث في فضاء التركيبات لإيجاد أفضل أداء — عبر Grid Search أو Random Search أو Bayesian Optimization.

النموذج له نوعان من المعاملات: معاملات يتعلمها من البيانات (مثل coef_ في LogisticRegression)، ومعلمات تشعبية (hyperparameters) يحددها المستخدم قبل التدريب (مثل C، max_depth، learning_rate). الأخيرة لا يمكن للنموذج ضبطها وحده — تحتاج بحثًا يدويًا أو آليًا.

أشهر الطرق: GridSearchCV يجرب كل التركيبات الممكنة (شامل لكن مكلف)، RandomizedSearchCV يختار عشوائيًا عددًا محددًا من التركيبات (أسرع، غالبًا أفضل)، Bayesian Optimization (مثل Optuna) يبني نموذجًا توجيهيًا للبحث الذكي (الأقوى لكنه أعقد).

عند الضبط: استخدم cross-validation داخل كل تركيبة (cv=5 افتراضيًا في GridSearchCV) لتقدير مستقر، ولا تلمس بيانات الاختبار النهائية — التقييم الأخير يبقى عليها. احفظ best_estimator_ للنموذج النهائي.

الصياغة

from sklearn.model_selection import GridSearchCV

param_grid = {
    "n_estimators": [100, 200],
    "max_depth": [3, 5, 10],
}
search = GridSearchCV(model, param_grid, cv=5, scoring="f1")
search.fit(X_train, y_train)
print(search.best_params_)
print(search.best_score_)

📄 مثال

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.datasets import load_wine

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, stratify=y)

param_grid = {
    "n_estimators": [50, 100, 200],
    "max_depth": [3, 5, None],
}
search = GridSearchCV(
    RandomForestClassifier(random_state=42),
    param_grid, cv=5, scoring="f1_weighted", n_jobs=-1
)
search.fit(X_train, y_train)

print(f"أفضل معاملات: {search.best_params_}")
print(f"أفضل CV score: {search.best_score_:.3f}")

أهم النقاط

النقطةالوظيفة
param_grid / distributionsقاموس المعاملات المرشّحة (Grid) أو توزيعات (Random)
cvعدد طيّات cross-validation داخل كل تركيبة
best_params_أفضل تركيبة معاملات حسب scoring
best_estimator_النموذج المُدرَّب بأفضل معاملات — جاهز للاستخدام

💡 نصائح عملية

  • ابدأ بـ RandomizedSearchCV لتضييق الفضاء قبل GridSearchCV النهائي — أسرع من Grid الشامل
  • n_jobs=-1 يوازي البحث على كل أنوية المعالج — اخفضه إن كانت الذاكرة محدودة

⚠️ أخطاء شائعة

  • ضبط معاملات على بيانات الاختبار (تسريب) — التقييم النهائي يفقد موضوعيته
  • Grid Search واسع جدًا مع GridSearchCV البطيء — RandomizedSearchCV أنسب للفضاءات الكبيرة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: scikit-learn Documentation