تقنية

التوقف المبكر في التعزيز: متى نوقف إضافة الأشجار؟

أفضلخسارةفيالجولة 3تتبعها ثلاثجولاتبلاتحسنفتنتهيالمهلةثميفحصالنموذجالمحفوظ
نهاية التدريب لا تعني تلقائيًا استخدام أفضل مرحلة.

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

الخلاصة السريعة

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

  • في XGBoost يجب تحسن مقياس المراقبة مرة على الأقل ضمن مهلة الجولات للاستمرار؛ اسم المقياس ومجموعته مهمان. [1]
  • في المثال، أفضل خسارة عند الجولة 3، وتليها ثلاث جولات بلا تحسن؛ التوقف عند 6 لا يجعل 6 الأفضل.
  • يوثق EarlyStopping خيار min_delta لأدنى تغير مطلق يعد تحسنًا؛ الأرقام هنا تفترض 0 وخسارة نريد خفضها. [1]
  • يرجع xgboost.train افتراضيًا آخر نموذج؛ save_best=True يحفظ الأفضل لمُعزز الأشجار، ولا يدعم gblinear ولا ينطبق على cv الذي لا يرجع نموذجًا. [1]

ما الذي نراقبه؟

تتيح EarlyStopping تعيين data_name وmetric_name واتجاه maximize، وتحدد rounds مهلة الإيقاف. [1]

اكتب قبل النظر إلى الجدول أننا نراقب خسارة على مجموعة محددة ونريد خفضها. رقم أكبر قد يكون أفضل في مقياس آخر، لذلك لا نكتب قاعدة «أوقف حين يزيد الرقم» بلا تسمية المقياس. وفصل المراقبة عن خسارة التدريب يمنع استعمال رقم من جدولين وكأنه السلسلة نفسها.

مثال بمهلة ثلاث جولات

القيم التالية من إعداد المقال، وليست سجل تدريب. نفرض مهلة ثلاث جولات، وأدنى تغير صفرًا، ونعد انخفاض الخسارة تحسنًا. الجولة 3 تعطي 0.35. لا تقدم الجولات 4 و 5 و 6 قيمة أقل منها، فنصل إلى نهاية المهلة عند 6.

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

الجولةخسارة المراقبة المفترضة
10.42
20.36
30.35
40.351
50.352
60.353

ما التحسن الذي يحسب؟

يعرف التوثيق min_delta بأدنى تغير مطلق في الدرجة لكي يتأهل كتحسن. [1]

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

وفي مقارنة فعلية، لا تجعل مراقبة المقياس وعدًا بأن الحالة الفردية ستصبح صحيحة عند التوقف. هي قاعدة تحدد متى تنهي التعلم وفق سلسلة معينة، ثم تراجع نتيجة البناء المستخدم.

أي نموذج بقي بعد التوقف؟

يوثق xgboost.train إرجاع آخر نموذج، بينما save_best=True في EarlyStopping يحتفظ بالجولات حتى الأفضل. الدعم لمُعزز الأشجار، وليس gblinear؛ ولا ينطبق الخيار على cv الذي لا يرجع نموذجًا. [1]

لذلك فرق في مثالنا بين سجل انتهى عند 6 ونموذج يستخدم الجولات حتى 3. احفظ رقم الأفضل ورقم النهاية والإعداد الذي اختار النسخة المستعملة. هذه تفاصيل تنفيذ مسمى، فلا تنقلها إلى كل مكتبة تعزيز. التوقف المبكر يختار وفق المراقبة، ولا يغني عن تقييم البناء النهائي أو فهم كيف اخترت الإعدادات.

المصادر ومتابعة القراءة

  1. XGBoost Python API: train وEarlyStopping (يفتح في نافذة جديدة)xgboost.readthedocs.io

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.