انتقل إلى المحتوى الرئيسي

الوحدة 7 — تعزيز التدرّج: XGBoost وLightGBM

تُدرّب الغابة أشجارها على التوازي وتُحسِب متوسّطها. ويسلك التعزيز الطريق المعاكس: أشجارٌ على التتابع، كلٌّ تتخصّص في أخطاء سابقاتها. وهذا التراكم العنيد لتصحيحاتٍ صغيرة يُنتِج أقوى النماذج على البيانات الجدولية — تلك التي تفوز بالمسابقات وتُجهّز الصناعة.

الفكرة: سلسلة من المُصحِّحات

يبدأ التعزيز من تنبّؤٍ شديد البساطة (متوسّط الهدف مثلاً)، ثمّ يُكرّر:

  1. حساب الأخطاء المتبقّية للنموذج الحالي؛
  2. تدريب شجرة صغيرة للتنبّؤ بتلك الأخطاء؛
  3. إضافة هذه الشجرة المُصحِّحة إلى النموذج، موزونةً بمعدّل تعلّم؛
  4. الاستئناف على الأخطاء الجديدة.

كلّ شجرةٍ ضعيفة — ضحلة، بالكاد أفضل من الصدفة — لكنّ السلسلة تُخفّض الخطأ بلا هوادة. واسم «التدرّج» ليس مصادفةً: فالتنبّؤ بالمتبقّيات يعادل اتّباع تدرّج الكلفة في فضاء النماذج؛ إنّه النزول التدرّجي من دورة الرياضيات، حيث كلّ خطوةٍ شجرة.

تباينٌ جوهري مع الغابة: يخفض bagging التباين بمتوسّط أشجارٍ قويّة مستقلّة؛ ويخفض التعزيز الانحياز بتراكم أشجارٍ ضعيفة متعالِقة. والنتيجة: قد يُفرِط التعزيز في التعلّم إن سُمِح له بالتصحيح طويلاً — فكوابحه ضرورية.

معدّل التعلّم، الكابح رقم واحد

يوزن معدّل التعلّم مساهمة كلّ شجرة:

Fm(x)=Fm1(x)+ηشجرةm(x)F_{m}(x) = F_{m-1}(x) + \eta \cdot \text{شجرة}_m(x)

η\eta صغيرة (0.05 مثلاً) تفرض خطواتٍ صغيرة: يلزم مزيدٌ من الأشجار، لكنّ التعميم يتحسّن — فالتصحيحات المتسرّعة تُفرِط في تعلّم الضجيج. والاقتران الكلاسيكي: معدّل تعلّم منخفض + أشجار كثيرة + إيقاف مبكّر.

XGBoost وLightGBM عملياً

مكتبتان تُهيمنان: XGBoost (المرجع المتين) وLightGBM (أسرع على الأحجام الكبيرة، ببناء الأشجار ورقةً أوّلاً). المنطق نفسه، وواجهتان شبه متطابقتَين:

import lightgbm as lgb
model = lgb.LGBMClassifier(
n_estimators=2000, # سقف، سيقلّمه الإيقاف المبكّر
learning_rate=0.05,
max_depth=4, # أشجار ضعيفة
subsample=0.8, # نسبة الصفوف لكلّ شجرة
colsample_bytree=0.8, # نسبة المتغيّرات لكلّ شجرة
)
model.fit(X_train, y_train,
eval_set=[(X_val, y_val)],
callbacks=[lgb.early_stopping(50)])

يراقب الإيقاف المبكّر الخطأ على مجموعة تحقّق ويكفّ عن إضافة الأشجار فور توقّفه عن التحسّن خلال 50 جولة: فيُضبَط عدد الأشجار تلقائياً. وتحقن subsample وcolsample_bytree العشوائية التي نجحت مع الغابة.

المعامل الفائقالدورنقطة انتباه
learning_rateحجم خطوة التصحيحصغير = أفضل لكن أبطأ
max_depthتعقيد الشجرة3–6 يكفي عادةً
n_estimatorsعدد الأشجارسقف؛ فوّضه للإيقاف المبكّر
subsample / colsampleالعشوائية0.7–0.9، يفكّ ترابط الأشجار
تعزيزٌ أم غابة؟

الغابة: شبه خاليةٍ من الضبط، متينة، صعبة الإفلات — خطّ أساسٍ مثالي. التعزيز: أداء ذروةٍ أفضل على البيانات الجدولية، مقابل ضبطٍ حقيقي (الوحدة 10) ويقظةٍ تجاه الإفراط في التعلّم. والممارسة المعيارية: غابةٌ أوّلاً مرجعاً، ثمّ تعزيزٌ لكسب النقاط الأخيرة. وفي الحالتين تقوم الأشجار بالعمل؛ ولا تتغيّر إلّا فلسفة التجميع.

الخلاصة

  • يبني التعزيز أشجاره على التتابع، كلٌّ تُصحّح متبقّيات سابقاتها — نزولٌ تدرّجي خطواته أشجار.
  • يخفض bagging التباين، ويخفض التعزيز الانحياز: قويٌّ لكن قد يُفرِط في التعلّم بلا كوابح.
  • يضبط معدّل التعلّم حجم الخطوة: صغيرٌ + أشجار كثيرة + إيقاف مبكّر هو الاقتران الرابح.
  • تُهيمن XGBoost وLightGBM على الممارسة الجدولية؛ وتُكمِل max_depth وsubsample وcolsample الضبط.

الوحدة التالية: التحقّق المتقاطع وتسرّب البيانات — كيف نقيس أداء كلّ هذه النماذج دون أن نخدع أنفسنا.