الرئيسية / ML 101 / الوحدة 3 / الدرس 3

التعزيز التدريجي

مجموعات تسلسلية تتعلم من أخطائها — الخوارزمية الكامنة وراء XGBoost ومعظم الفائزين في مسابقات Kaggle.

~14 دقيقة قراءة M3 · L3 متقدم

الفكرة الأساسية: التعلم من الأخطاء

الغابات العشوائية تبني أشجارًا كثيرة بالتوازي، كل منها تُدرَّب بشكل مستقل على عينة bootstrap. التعزيز التدريجي يتبع نهجًا مختلفًا تمامًا: يبني الأشجار بالتسلسل، حيث تستهدف كل شجرة جديدة تحديدًا الأخطاء التي ارتكبتها جميع الأشجار السابقة مجتمعةً.

فكّر في الأمر كفريق من المتخصصين. يقدم الأول تنبؤًا تقريبيًا. يدرس الثاني فقط ما أخطأ فيه الأول ويصححه. يدرس الثالث ما لم يستطع الأول والثاني معًا تصحيحه، ويعالجه. تُكرر حتى تصل إلى النتيجة المطلوبة. كل متخصص متواضع — يتعامل فقط مع الخطأ المتبقي — لكنهم مجتمعين يحققون دقةً مذهلة.

البواقي: ما أخطأت فيه

بعد أن تقدم الشجرة الأولى تنبؤاتها، نحسب البواقي — الفرق بين القيم الحقيقية والقيم المتنبأ بها. تمثل هذه البواقي الإشارة التي فشلت الشجرة الأولى في التقاطها. مهمة الشجرة الثانية ليست التنبؤ بالهدف الأصلي، بل التنبؤ بهذه البواقي. عندما نجمع تنبؤات الشجرة الثانية مع تنبؤات الأولى، يكون النموذج المدمج أكثر دقة.

T₁: النموذج الأساسي
←
تنبؤات أولية → حساب البواقي r₁
T₂: ملاءمة البواقي
←
تنبؤ r₁ → F₂ = F₁ + η·T₂ → حساب r₂
T₃: ملاءمة البواقي
←
تنبؤ r₂ → F₃ = F₂ + η·T₃ → حساب r₃
⋮
←
الاستمرار لـ M جولة

الرياضيات: النزول التدرجي في فضاء الدوال

لماذا تُسمى "بواقي" في حالة الانحدار لكن "تدرجات" في الحالة العامة؟ لأن التعزيز التدريجي يُجري انحدارًا تدريجيًا — ليس في فضاء المعاملات، بل في فضاء الدوال.

في كل خطوة، نحسب التدرج السلبي لدالة الخسارة بالنسبة للتنبؤات الحالية. لخسارة متوسط مربع الخطأ (MSE)، يساوي التدرج السلبي تمامًا البواقي. لدوال الخسارة الأخرى (log-loss، Huber loss)، يعطينا التدرج السلبي صيغةً معممة من البواقي.

قاعدة التحديث
F_m(x)=F_{m-1}(x)+\eta\,h_m(x)
النموذج بعد m خطوة هو النموذج بعد m−1 خطوة مضافًا إليه شجرة جديدة h_m مُقيَّدة بمعدل التعلم η. تلائم الشجرة h_m التدرج السلبي للخسارة عند التنبؤات الحالية.

معدل التعلم: الانكماش

لاحظ η (إيتا) في قاعدة التحديث. هذا معدل التعلم، يُضبط عادةً بين 0.01 و0.3. بدلًا من إضافة كل شجرة بقوتها الكاملة، نُقيِّدها بـ η قبل إضافتها إلى المجموعة.

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

عمليًا، η = 0.1 مع 100–500 شجرة نقطة بداية معقولة. لأعلى دقة مع توافر الموارد الحسابية، η = 0.01–0.05 مع 1000–5000 شجرة (باستخدام الإيقاف المبكر) كثيرًا ما يفوز.

المتعلمون الضعفاء: الأشجار الضحلة

يستخدم التعزيز التدريجي عن قصد أشجارًا ضحلة كمتعلمين أساسيين — عادةً بعمق أقصى من 3 إلى 6. تُسمى هؤلاء "متعلمين ضعفاء" لأنهم بشكل فردي يؤدون أداءً أفضل قليلًا فقط من التخمين العشوائي.

لماذا لا أشجار عميقة؟

الأشجار العميقة ستُفرط في ملاءمة البواقي، ملتقطةً الضوضاء بدلًا من الإشارة. الأشجار الضحلة تلتقط فقط أهم الأنماط في كل خطوة، تاركةً إشارةً ذات معنى في البواقي لتُعالجها الأشجار التالية. مجموعة الأشجار الضحلة الكثيرة قادرة على نمذجة تفاعلات معقدة دون أن تحفظ أي شجرة بيانات التدريب.

العمق 3 يعني أن كل شجرة قادرة على التقاط تفاعلات ثلاثية للميزات كحد أقصى. لمعظم المسائل هذا كافٍ — وتتولى عملية التعزيز التسلسلية الباقي من خلال التكرار.

XGBoost وLightGBM: التعزيز التدريجي الحديث

التعزيز التدريجي الكلاسيكي (الذي وصفه Friedman عام 1999) قوي لكنه قد يكون بطيئًا ومُستهلِكًا للذاكرة. حوّلت تطبيقان حديثان المشهد:

XGBoost (2014)

قدّم XGBoost عدة تحسينات رئيسية: التنظيم في دالة الهدف (عقوبات L1 وL2 على أوزان الشجرة وقيم الأوراق)، بناء الأشجار المتوازي، الحوسبة خارج الذاكرة للبيانات الكبيرة، والوعي بالتفرق للتعامل مع القيم المفقودة. هيمن XGBoost على Kaggle من 2014 إلى 2017.

LightGBM (2017)

أضاف LightGBM من مايكروسوفت تحسينَين خوارزميَّين محوريَّين: أخذ العينات أحادي الجانب القائم على التدرج (GOSS) والاحتفاظ بالحالات ذات التدرجات الكبيرة، وتجميع الميزات الحصرية (EFB). النتيجة: تسريع ×10–100 على XGBoost للبيانات الكبيرة مع دقة مماثلة. لمعظم المشاريع الجديدة، LightGBM هو الخيار العملي الافتراضي.

دالة هدف XGBoost

يُقلّل XGBoost دالة هدف منظَّمة تعاقب صراحةً على تعقيد النموذج:

دالة هدف XGBoost
\mathcal{L}=\sum_i l(y_i,\hat{y}_i)+\sum_k\Omega(f_k)
الحد الأول هو الخسارة القياسية (MSE أو log-loss). الحد الثاني Ω(f_k) يعاقب كل شجرة f_k على التعقيد — تحديدًا عدد الأوراق وحجم أوزان الأوراق. هذا التنظيم مدمج في بناء الشجرة.

المعاملات الرئيسية

للتعزيز التدريجي معاملات أكثر من الغابات العشوائية، لكن أهمها مفهومة جيدًا:

n_estimators
استخدم الإيقاف المبكر
عدد جولات التعزيز. اضبطها عاليًا ودع الإيقاف المبكر يجد القيمة المثلى.
learning_rate (η)
0.01 – 0.3
معامل الانكماش لكل شجرة. أقل = تعميم أفضل، أشجار أكثر مطلوبة.
max_depth
3 – 6
أقصى عمق لكل شجرة. يتحكم في درجة تفاعلات الميزات الملتقطة.
subsample
0.6 – 0.9
نسبة صفوف التدريب المستخدمة لكل شجرة. يضيف عشوائية، يقلل الإفراط.
colsample_bytree
0.5 – 0.9
نسبة الميزات المأخوذة عينات لكل شجرة. مشابه لاختيار الميزات في الغابات.
reg_lambda / alpha
0 – 10
تنظيم L2 وL1 على أوزان الأوراق. يعاقب تعقيد الشجرة مباشرةً.

الإيقاف المبكر: التقنية الأساسية

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

الوصفة العملية: اضبط n_estimators عاليًا (5000 مثلًا)، استخدم معدل تعلم صغيرًا (0.05)، وحدد early_stopping_rounds=50. سيتوقف النموذج عندما لا تتحسن خسارة التحقق لـ50 جولة متتالية. أفضل جولة عادةً 200–800 شجرة.

قاعدة عامة: η ↓ ⟹ جولات ↑

معدلات التعلم الصغيرة تحتاج أشجارًا أكثر لكنها تنتج نماذج أفضل تعميمًا. إذا خفّضت معدل التعلم للنصف، ضاعف تقريبًا عدد الأشجار. XGBoost وLightGBM مع learning_rate=0.01 والإيقاف المبكر غالبًا ما يتفوقان على الغابات العشوائية المضبوطة على نفس البيانات.

التعزيز مقابل الغابات العشوائية

كلاهما طرق مجموعات شجرية، لكن فلسفتيهما تختلفان جوهريًا:

التطبيقات الواقعية

يتفوق التعزيز التدريجي في أي مكان تتواجد فيه بيانات جدولية:


أهم النقاط

التعزيز التدريجي يبني الأشجار تسلسليًا، كل منها تلائم البواقي (التدرج السلبي للخسارة) التي تركتها الأشجار السابقة. يتحكم معدل التعلم η في الانكماش — η أصغر يعني تعميمًا أفضل لكن أشجارًا أكثر. استخدم أشجارًا ضحلة (عمق 3–6) كمتعلمين ضعفاء. يضيف XGBoost وLightGBM تنظيمًا وسرعة. استخدم دائمًا الإيقاف المبكر للعثور تلقائيًا على العدد الأمثل من الأشجار. على البيانات الجدولية، التعزيز التدريجي غالبًا هو الطريقة الأعلى دقةً المتاحة.

السابق M3-L2: الغابات العشوائية نظرة عامة على الوحدة الدرس التالي M4-L1: مصنّف الهامش الأقصى