0Pricing
Learn AI with Python · درس

التعزيز التدرجي: GBM وXGBoost

التعزيز مقابل Bagging، وGradientBoostingClassifier، وXGBClassifier، والإيقاف المبكر.

التعزيز التدرجي: GBM وXGBoost درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

Boosting مقابل Bagging

Bagging يدرّب الأشجار بالتوازي ويحسب متوسط نتائجها. أما Boosting فيدرّب الأشجار تتابعيًا، بحيث تصحح كل شجرة جديدة أخطاء الأشجار السابقة.

يقلل Boosting الانحياز، وغالبًا ما يحقق دقة أعلى من Bagging في البيانات المهيكلة.

النماذج الضعيفة التتابعية

يبني التعزيز بالتدرج مجموعة من الأشجار الضحلة (النماذج الضعيفة). تلائم كل شجرة البواقي (تدرجات دالة الخسارة) التي تركتها المجموعة الحالية.

وتؤدي إضافة العديد من التصحيحات الصغيرة إلى بناء نموذج قوي إجمالًا.

GradientBoostingClassifier

توفر Scikit-learn الفئة GradientBoostingClassifier. وتشمل المعلمات الأساسية n_estimators (عدد الأشجار)، وlearning_rate (معدل الانكماش)، وmax_depth (حجم الشجرة).

from sklearn.ensemble import GradientBoostingClassifier

gbm = GradientBoostingClassifier(
    n_estimators=200,
    learning_rate=0.1,
    max_depth=3,
    random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))

المفاضلة في معدل التعلم

يحدد learning_rate حجم مساهمة كل شجرة. ويحتاج معدل التعلم الأصغر إلى عدد أكبر من الأشجار، لكنه يعمم عادةً بصورة أفضل.

ومن الاستراتيجيات الشائعة ضبط معدل تعلم منخفض (مثل 0.05) واستخدام عدد كبير من النماذج، ثم تفعيل الإيقاف المبكر.

from sklearn.ensemble import GradientBoostingClassifier

gbm = GradientBoostingClassifier(
    n_estimators=1000,
    learning_rate=0.05,
    max_depth=3,
)

لماذا يظل max_depth صغيرًا

في Boosting، تكون كل شجرة نموذجًا ضعيفًا، لذلك تتراوح قيمة max_depth عادةً بين 3 و6. فالأشجار العميقة ستفرط سريعًا في ملاءمة البواقي. وتكتسب المجموعة قوتها من العديد من الأشجار الضحلة، لا من عدد قليل من الأشجار العميقة.

التعريف بـ XGBoost

XGBoost مكتبة محسّنة للتعزيز بالتدرج؛ فهي أسرع، وتدعم الانتظام، وتتعامل مع القيم المفقودة مدمجًا. وتُعد من أفضل الخيارات أداءً في مسابقات تعلم الآلة على البيانات الجدولية.

from xgboost import XGBClassifier

model = XGBClassifier(
    n_estimators=300,
    learning_rate=0.1,
    max_depth=4,
    random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))

معلمات XGBoost الأساسية

تشبه المعلمات الأساسية معلمات GBM:

  • n_estimators عدد جولات التعزيز
  • learning_rate مقدار الانكماش في كل جولة
  • max_depth عمق الشجرة
  • subsample وcolsample_bytree يضيفان عشوائية للانتظام
from xgboost import XGBClassifier

model = XGBClassifier(
    n_estimators=500,
    learning_rate=0.05,
    max_depth=4,
    subsample=0.8,
    colsample_bytree=0.8,
)

الانتظام في XGBoost

يضيف XGBoost عقوبتي L1 (reg_alpha) وL2 (reg_lambda)، بالإضافة إلى gamma (الحد الأدنى لانخفاض الخسارة اللازم لإجراء انقسام). وتتحكم هذه المعلمات في التعقيد وتقلل فرط الملاءمة بدرجة أكبر مما يتيحه GBM التقليدي.

from xgboost import XGBClassifier

model = XGBClassifier(
    reg_alpha=0.1,
    reg_lambda=1.0,
    gamma=0.1,
)

الإيقاف المبكر

يوقف early_stopping_rounds التدريب عندما يتوقف مقياس التحقق عن التحسن لمدة N جولات. ويتيح ذلك العثور تلقائيًا على العدد المناسب من الأشجار ويمنع فرط الملاءمة.

from xgboost import XGBClassifier

model = XGBClassifier(
    n_estimators=2000,
    learning_rate=0.05,
    early_stopping_rounds=50,
    eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)

قراءة أهمية الميزات

يتيح XGBoost الخاصية feature_importances_، كما يتيح الدالة الأكثر تفصيلًا get_booster().get_score() مع أنواع أهمية مثل gain وweight. ويعكس gain مقدار مساهمة الميزة في تحسين الخسارة.

model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)

booster = model.get_booster()
print(booster.get_score(importance_type="gain"))

متى نستخدم Boosting

غالبًا ما يتفوق التعزيز بالتدرج على الغابات العشوائية في البيانات الجدولية عند ضبطه جيدًا. لكن تكلفته تتمثل في حساسية أكبر للمعلمات الفائقة وتدريب تتابعي أبطأ. يُنصح بالبدء بالقيم الافتراضية لـ XGBoost، ثم ضبط learning_rate وmax_depth واستخدام الإيقاف المبكر.

تحقق سريع

اختبروا معرفتكم بـ Boosting.

خلاصة

الخلاصة: يدرّب Boosting الأشجار تتابعيًا، بحيث تصحح كل شجرة الأخطاء السابقة. اضبطوا n_estimators وlearning_rate (معدل منخفض مع عدد كبير من الأشجار) واستخدموا قيمة صغيرة لـ max_depth. يضيف XGBoost الانتظام (reg_alpha وreg_lambda وgamma) وearly_stopping_rounds لاختيار العدد الأمثل من الأشجار تلقائيًا.

الأسئلة الشائعة

هل درس «التعزيز التدرجي: GBM وXGBoost» مجاني؟

نعم — نص درس «التعزيز التدرجي: GBM وXGBoost» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «التعزيز التدرجي: GBM وXGBoost»؟

التعزيز مقابل Bagging، وGradientBoostingClassifier، وXGBClassifier، والإيقاف المبكر. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التعزيز التدرجي: GBM وXGBoost»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أشجار القرار: النظرية والتنفيذ
  2. الغابات العشوائية وBagging
  3. التعزيز التدرجي: GBM وXGBoost
  4. LightGBM وCatBoost
← العودة إلى Learn AI with Python