XGBoost
XGBoost مكتبة للتعزيز بالتدرج تضيف أشجار قرار منتظمة واحدة تلو الأخرى، وهي خيار رائد للبيانات الجدولية. تعرّف على آلية عملها باستخدام الشيفرة.
XGBoost (تعزيز التدرج المتطرف) مكتبة مفتوحة المصدر لـأشجار القرار المعززة بـالتدرج، وهي من أكثر الأدوات استخداماً للبيانات الجدولية. بدأ Tianqi Chen تطويرها كمشروع بحثي في جامعة واشنطن، وأصدرها عام 2014؛ ووصفت ورقة KDD لعام 2016، XGBoost: نظام قابل للتوسع لتعزيز الأشجار، التي شارك في كتابتها Carlos Guestrin، دالتها الهدف ذات التنظيم وتصميم أنظمتها. تتولى المكتبة، التي يديرها مجتمع DMLC، التصنيف والانحدار والترتيب باستخدام Python وR وJVM وC، وتعمل على وحدات CPU وGPU، وتتوسع أفقياً باستخدام Dask وSpark. وتفيد ورقتها بأن 17 من أصل 29 حلاً فائزاً في التحديات نُشرت على مدونة Kaggle عام 2015 استخدمت XGBoost.
آلية عمل XGBoost#
ينشئ XGBoost مجموعة من الأشجار بالتتابع: يبدأ بتنبؤ ثابت، ثم يضيف شجرة واحدة في كل جولة تعزيز، وتُدرّب كل شجرة لتقليل الخسارة التي خلّفتها الأشجار السابقة. يجمع التنبؤ النهائي مخرجات الأشجار، بعد تقليص كل منها باستخدام معدل التعلّم (eta، وقيمته الافتراضية 0.3)، كيلا تهيمن شجرة واحدة. وتحدد فكرتان من الورقة كيفية إنشاء كل شجرة:
- دالة هدف من الرتبة الثانية: يحسب XGBoost لكل صف المشتقتين الأولى والثانية للخسارة بالنسبة إلى التنبؤ الحالي، أي التدرج
gوهسيانh. وتحصل الورقة التي يبلغ مجموع تدرجات صفوفهاGومجموع هسياناتهاHعلى الوزن-G / (H + λ)، وهي خطوة نيوتن نفسها التي تتخذها المحسّنات من الرتبة الثانية. - الأشجار ذات التنظيم: تضيف دالة الهدف عقوبة
γلكل ورقة وعقوبة L2λعلى أوزان الأوراق، فضلاً عن عقوبة L1 اختياريةα. ولا يُحتفظ بالتقسيم إلا عندما يكون مكسبه،½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ، موجباً، ما يدمج التنظيم في إنشاء الأشجار ويحد من فرط التكيّف.
يُحدّ عمق الأشجار (max_depth، والقيمة الافتراضية 6)، وتنمو مستوى بعد مستوى ما لم يفعّل grow_policy="lossguide" النمو على مستوى الأوراق. يجري التدريب عادةً مع الإيقاف المبكر على مجموعة التحقق:
القيم المفقودة والسرعة والتوسع#
يدرّب البحث عن التقسيمات الواعي بالتناثر في XGBoost على الجداول ذات القيم المفقودة دون خطوة تعويض. عند كل تقسيم، يجرب إرسال الصفوف ذات القيمة المفقودة إلى اليسار ثم إلى اليمين، ويعتمد الاتجاه ذي المكسب الأعلى بوصفه الفرع الافتراضي للعقدة؛ وتتيح الآلية نفسها فحص الإدخالات المخزنة فقط في المصفوفات المتناثرة، مثل ترميزات one-hot. يخفي هذا المثال 30% من قيم السمات في مجموعة بيانات سرطان الثدي من scikit-learn، ويدرّب النموذج مباشرةً على القيم المفقودة:
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)
for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
model.fit(train, y_train)
print(f"{name}: accuracy {model.score(test, y_test):.3f}")يطبع البرنامج دقة اختبار تبلغ 0.972 على البيانات الكاملة و0.951 عند فقدان 30% من القيم في كل من مجموعتي التدريب والاختبار.
لتحقيق السرعة، تقسّم طريقة الأشجار الافتراضية hist كل سمة إلى 256 حاوية كحد أقصى (max_bin)، وتبحث عن التقسيمات عند حدود الحاويات؛ وهي الطريقة نفسها التي يستخدمها LightGBM، بينما تفحص exact كل قيمة مرتبة. ينقل ضبط device="cuda" التدريب إلى وحدة NVIDIA GPU، ويقسّم enable_categorical=True الأعمدة الفئوية أصلياً، بينما يتيح نمط الذاكرة الخارجية التدريب على مجموعات بيانات أكبر من ذاكرة RAM. ومنذ الإصدار 2.1، تُحفظ النماذج افتراضياً بتنسيق UBJSON الثنائي.
مقارنة XGBoost بالأساليب ذات الصلة#
- LightGBM: إطار عمل للتعزيز من Microsoft صدر عام 2016، ينمّي الأشجار افتراضياً على مستوى الأوراق ويضيف أخذ عينات للصفوف قائماً على التدرج وتجميعاً للسمات المتناثرة. تستخدم المكتبتان الآن المخططات التكرارية افتراضياً وتتشاركان معظم التقنيات.
- CatBoost: مكتبة تعزيز من Yandex تنشئ أشجاراً متناظرة وترمّز السمات الفئوية باستخدام إحصاءات الهدف المرتبة.
- الغابة العشوائية: أسلوب تجميع يدرب أشجاراً عميقة مستقلة على عينات bootstrap ويحسب متوسطها، ما يخفض التباين ولا يتطلب ضبطاً يُذكر.
- التعلم العميق: المعيار للمدخلات غير المهيكلة مثل الصور والصوت والنص، إذ تتعلم الشبكات السمات من البيانات الخام. أما في الجداول ذات السمات المصممة هندسياً، فتظل الأشجار المعززة خط الأساس المعتاد الذي ينبغي تجاوزه، وقد أصبحت النماذج الأساسية للبيانات الجدولية مثل TabPFN تنافسها الآن على مجموعات البيانات الصغيرة.
تطبيقات عملية#
- كشف الاحتيال ومخاطر الائتمان: تقيّم شركات الدفع كل معاملة استناداً إلى سمات المبلغ والتاجر والموقع والجهاز وسجل الحساب؛ وهي مهمة أساسية في النمذجة التنبؤية، حيث يلائم الاستدلال السريع في XGBoost اتخاذ القرارات الآنية.
- الفحص البصري: تجمع أنظمة جودة التصنيع بيانات الكاميرات والمستشعرات. وتوفر تنبؤات Ultralytics YOLO26 الجانب الخاص بالكاميرا: إذ تُرجع
result.summary()فئة كل عيب مكتشف ودرجة ثقته وإحداثيات صندوقه، ويمكن للمصنع تجميعها لكل قطعة ودمجها مع قراءات الحرارة والضغط بوصفها سمات لنموذج XGBoost يتنبأ بالأعطال. - الترتيب والتنبؤ بالنقرات: يتدرّب
XGBRankerافتراضياً باستخدام دالة الهدفrank:ndcgلترتيب نتائج البحث، وتتنبأ المصنفات الثنائية بمعدلات النقر على الإعلانات. - المسائل الفائزة في المسابقات: تسرد ورقة KDD المهام التي تقف وراء الحلول الفائزة عام 2015، ومنها التنبؤ بمبيعات المتاجر، وتصنيف أحداث فيزياء الطاقة العالية، وتصنيف البرمجيات الخبيثة، والتنبؤ بانقطاع المتعلمين عن الدورات التدريبية المفتوحة واسعة النطاق.










