الوحدة 7 — تعزيز التدرّج: XGBoost وLightGBM
تُدرّب الغابة أشجارها على التوازي وتُحسِب متوسّطها. ويسلك التعزيز الطريق المعاكس: أشجارٌ على التتابع، كلٌّ تتخصّص في أخطاء سابقاتها. وهذا التراكم العنيد لتصحيحاتٍ صغيرة يُنتِج أقوى النماذج على البيانات الجدولية — تلك التي تفوز بالمسابقات وتُجهّز الصناعة.
الفكرة: سلسلة من المُصحِّحات
يبدأ التعزيز من تنبّؤٍ شديد البساطة (متوسّط الهدف مثلاً)، ثمّ يُكرّر:
- حساب الأخطاء المتبقّية للنموذج الحالي؛
- تدريب شجرة صغيرة للتنبّؤ بتلك الأخطاء؛
- إضافة هذه الشجرة المُصحِّحة إلى النموذج، موزونةً بمعدّل تعلّم؛
- الاستئناف على الأخطاء الجديدة.
كلّ شجرةٍ ضعيفة — ضحلة، بالكاد أفضل من الصدفة — لكنّ السلسلة تُخفّض الخطأ بلا هوادة. واسم «التدرّج» ليس مصادفةً: فالتنبّؤ بالمتبقّيات يعادل اتّباع تدرّج الكلفة في فضاء النماذج؛ إنّه النزول التدرّجي من دورة الرياضيات، حيث كلّ خطوةٍ شجرة.
تباينٌ جوهري مع الغابة: يخفض bagging التباين بمتوسّط أشجارٍ قويّة مستقلّة؛ ويخفض التعزيز الانحياز بتراكم أشجارٍ ضعيفة متعالِقة. والنتيجة: قد يُفرِط التعزيز في التعلّم إن سُمِح له بالتصحيح طويلاً — فكوابحه ضرورية.
معدّل التعلّم، الكابح رقم واحد
يوزن معدّل التعلّم مساهمة كلّ شجرة:
صغيرة (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الضبط.
الوحدة التالية: التحقّق المتقاطع وتسرّب البيانات — كيف نقيس أداء كلّ هذه النماذج دون أن نخدع أنفسنا.