الفكرة الأساسية: التعلم من الأخطاء
الغابات العشوائية تبني أشجارًا كثيرة بالتوازي، كل منها تُدرَّب بشكل مستقل على عينة bootstrap. التعزيز التدريجي يتبع نهجًا مختلفًا تمامًا: يبني الأشجار بالتسلسل، حيث تستهدف كل شجرة جديدة تحديدًا الأخطاء التي ارتكبتها جميع الأشجار السابقة مجتمعةً.
فكّر في الأمر كفريق من المتخصصين. يقدم الأول تنبؤًا تقريبيًا. يدرس الثاني فقط ما أخطأ فيه الأول ويصححه. يدرس الثالث ما لم يستطع الأول والثاني معًا تصحيحه، ويعالجه. تُكرر حتى تصل إلى النتيجة المطلوبة. كل متخصص متواضع — يتعامل فقط مع الخطأ المتبقي — لكنهم مجتمعين يحققون دقةً مذهلة.
البواقي: ما أخطأت فيه
بعد أن تقدم الشجرة الأولى تنبؤاتها، نحسب البواقي — الفرق بين القيم الحقيقية والقيم المتنبأ بها. تمثل هذه البواقي الإشارة التي فشلت الشجرة الأولى في التقاطها. مهمة الشجرة الثانية ليست التنبؤ بالهدف الأصلي، بل التنبؤ بهذه البواقي. عندما نجمع تنبؤات الشجرة الثانية مع تنبؤات الأولى، يكون النموذج المدمج أكثر دقة.
الرياضيات: النزول التدرجي في فضاء الدوال
لماذا تُسمى "بواقي" في حالة الانحدار لكن "تدرجات" في الحالة العامة؟ لأن التعزيز التدريجي يُجري انحدارًا تدريجيًا — ليس في فضاء المعاملات، بل في فضاء الدوال.
في كل خطوة، نحسب التدرج السلبي لدالة الخسارة بالنسبة للتنبؤات الحالية. لخسارة متوسط مربع الخطأ (MSE)، يساوي التدرج السلبي تمامًا البواقي. لدوال الخسارة الأخرى (log-loss، Huber loss)، يعطينا التدرج السلبي صيغةً معممة من البواقي.
معدل التعلم: الانكماش
لاحظ η (إيتا) في قاعدة التحديث. هذا معدل التعلم، يُضبط عادةً بين 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 دالة هدف منظَّمة تعاقب صراحةً على تعقيد النموذج:
المعاملات الرئيسية
للتعزيز التدريجي معاملات أكثر من الغابات العشوائية، لكن أهمها مفهومة جيدًا:
الإيقاف المبكر: التقنية الأساسية
على عكس الغابات العشوائية (حيث المزيد من الأشجار يُفيد دائمًا)، يمكن للتعزيز التدريجي الإفراط في الملاءمة إذا أضفت أشجارًا كثيرة جدًا. الحل القياسي هو الإيقاف المبكر: راقب خسارة التحقق في كل جولة تعزيز وأوقف عند بدء ارتفاعها.
الوصفة العملية: اضبط n_estimators عاليًا (5000 مثلًا)، استخدم معدل تعلم صغيرًا (0.05)، وحدد early_stopping_rounds=50. سيتوقف النموذج عندما لا تتحسن خسارة التحقق لـ50 جولة متتالية. أفضل جولة عادةً 200–800 شجرة.
معدلات التعلم الصغيرة تحتاج أشجارًا أكثر لكنها تنتج نماذج أفضل تعميمًا. إذا خفّضت معدل التعلم للنصف، ضاعف تقريبًا عدد الأشجار. XGBoost وLightGBM مع learning_rate=0.01 والإيقاف المبكر غالبًا ما يتفوقان على الغابات العشوائية المضبوطة على نفس البيانات.
التعزيز مقابل الغابات العشوائية
كلاهما طرق مجموعات شجرية، لكن فلسفتيهما تختلفان جوهريًا:
- التوازي: الغابات العشوائية تدرّب جميع الأشجار بالتوازي؛ التعزيز التدريجي تسلسلي بطبيعته.
- الانحياز مقابل التباين: الغابات تقلل التباين بالتوسط. التعزيز يقلل الانحياز بتصحيح الأخطاء تكراريًا.
- خطر الإفراط: الغابات أصعب إفراطًا. التعزيز يحتاج إيقافًا مبكرًا أو تنظيمًا.
- الدقة: التعزيز مع الضبط الصحيح يفوز عادةً في الدقة للبيانات الجدولية.
- سرعة التدريب: الغابات أسرع (قابلة للتوازي). LightGBM يُضيّق هذه الفجوة بشكل ملحوظ.
- حساسية المعاملات: التعزيز لديه مزيد من المعاملات لكنه يُكافئ الضبط الدقيق أكثر.
التطبيقات الواقعية
يتفوق التعزيز التدريجي في أي مكان تتواجد فيه بيانات جدولية:
- النمذجة المالية — تقييم الائتمان، كشف الاحتيال، التنبؤ بالتخلف عن السداد
- التنبؤ بمعدل النقر — ترتيب الإعلانات في Google وFacebook وAlibaba
- أنظمة التوصية — ترتيب العناصر بناءً على ميزات المستخدم
- الاكتشاف العلمي — الجينوميات، اكتشاف الأدوية، علم المواد
- مسابقات ML — يظهر XGBoost/LightGBM في غالبية الحلول الفائزة في Kaggle للبيانات المنظمة
التعزيز التدريجي يبني الأشجار تسلسليًا، كل منها تلائم البواقي (التدرج السلبي للخسارة) التي تركتها الأشجار السابقة. يتحكم معدل التعلم η في الانكماش — η أصغر يعني تعميمًا أفضل لكن أشجارًا أكثر. استخدم أشجارًا ضحلة (عمق 3–6) كمتعلمين ضعفاء. يضيف XGBoost وLightGBM تنظيمًا وسرعة. استخدم دائمًا الإيقاف المبكر للعثور تلقائيًا على العدد الأمثل من الأشجار. على البيانات الجدولية، التعزيز التدريجي غالبًا هو الطريقة الأعلى دقةً المتاحة.