CatBoost أم XGBoost: أيهما تختار للبيانات الجدولية، وما الأهم من المكتبة
مقارنة عملية بين CatBoost وXGBoost: المتغيرات الفئوية، والإعدادات الافتراضية، وجهد الضبط، والسرعة، والإفراط في التعلّم، وخطأ التحقق الذي يهم أكثر من المكتبة نفسها.
إذا كانت بياناتك في جداول (عملاء، معاملات، قراءات حساسات، تحاليل مخبرية)، فأشجار التعزيز المتدرج (gradient boosting) غالبًا أول نموذج يستحق التجربة. وعاجلًا أم آجلًا ستسأل: CatBoost أم XGBoost؟
استخدمت الاثنين في مشاريع حقيقية، منها نظام تصنيف جيولوجي قارنّا فيه بينهما جنبًا إلى جنب. وجوابي الصريح: كلاهما ممتاز، والفروق حقيقية لكنها أصغر مما يظن الناس، وطريقة التحقق من نموذجك أهم بكثير من المكتبة التي تختارها.
CatBoost أم XGBoost: الخلاصة
- اختر CatBoost إذا كانت لديك أعمدة فئوية كثيرة (نوع المنتج، المنطقة، شريحة العميل، معرّف الحساس) وتريد نتائج جيدة بقليل من الضبط.
- اختر XGBoost إذا كانت متغيراتك رقمية في الغالب، أو تريد تحكمًا دقيقًا في الأشجار، أو تحتاج أوسع منظومة وخيارات نشر.
- جرّب الاثنين عندما يكون النموذج مهمًا. التكلفة قليلة.
المتغيرات الفئوية: أكبر فرق عملي
هنا يستحق CatBoost اسمه. يمكنك تمرير الأعمدة الفئوية مباشرة، فيرمّزها داخليًا بإحصاءات على الهدف تُحسب بطريقة مرتّبة: ترميز كل صف لا يستخدم إلا الصفوف التي جاءت "قبله" في ترتيب عشوائي. وهذا يقلل تسرّب الهدف الذي يحدث عندما تستبدل الفئة بمتوسط قيمتها ببساطة.
أما XGBoost فيتطلب تقليديًا أن ترمّز الفئات بنفسك: ترميز one-hot، أو أرقام ترتيبية، أو ترميز بالهدف. أضافت الإصدارات الحديثة دعمًا أصليًا للفئات، لكن يجب تفعيله واستخدام أنواع البيانات الصحيحة، وهو يعمل بطريقة مختلفة عن CatBoost. وإذا رمّزت بالهدف يدويًا، فافعل ذلك داخل كل جزء من أجزاء التحقق المتقاطع، وإلا تسرّب الهدف إلى متغيراتك وانهارت النتائج في الإنتاج.
مع فئات قليلة منخفضة التنوع، لا يكاد الأمر يهم. ومع فئات عالية التنوع (آلاف المنتجات أو الرموز البريدية)، يوفر عليك CatBoost غالبًا عملًا حقيقيًا.
الإعدادات الافتراضية وجهد الضبط
إعدادات CatBoost الافتراضية جيدة. في كثير من البيانات، يقترب نموذج CatBoost غير المضبوط من نسخته المضبوطة. وهذا مفيد عندما تحتاج خط أساس قويًا بسرعة، أو عندما لا يكون من سيصون النموذج متخصصًا في تعلّم الآلة.
أما XGBoost فيكافئ الضبط أكثر. معدل التعلّم، والعمق، والحد الأدنى لوزن الأوراق، وأخذ العينات، والتنظيم، كلها مهمة، والقيم الافتراضية نقطة بداية لا جواب نهائي. الأمر ليس صعبًا، لكن خطط لبحث حقيقي عن المعاملات، ويُفضّل مع إيقاف مبكر على جزء تحقق.
بنية الأشجار
يبني CatBoost افتراضيًا أشجارًا متناظرة (oblivious): في كل مستوى تستخدم كل العقد قاعدة التقسيم نفسها. هذه الأشجار سريعة عند التنبؤ وتعمل كنوع من التنظيم، وهذا يفسر جزئيًا لماذا تصمد إعداداته الافتراضية.
أما XGBoost فينمّي الأشجار حسب العمق افتراضيًا، ويمكنه تنميتها حسب الخسارة، وهو أقرب إلى النمو حسب الأوراق في LightGBM. هذه المرونة قد تلتقط التفاعلات المعقدة أفضل، وقد تفرط في التعلّم أسرع إن لم تضبطها.
السرعة ووحدات GPU والإفراط في التعلّم
المكتبتان تدعمان التدريب على GPU، وكلتاهما سريعة بما يكفي لمعظم بيانات الشركات على حاسوب محمول. ومقارنات السرعة تعتمد كثيرًا على شكل البيانات والإعدادات والأجهزة، لذلك لا أثق في المقارنات العامة. قِس على بياناتك أنت.
وضد الإفراط في التعلّم، توفر الاثنتان الأدوات اللازمة: الإيقاف المبكر، وحد العمق، ومعدل التعلّم، وأخذ عينات من الصفوف والأعمدة، والتنظيم L2. استخدم الإيقاف المبكر على جزء تحقق في كل الحالات، فهو الإعداد الذي يجنّبك أكثر المتاعب.
لا تنسَ LightGBM
LightGBM هو الخيار الشائع الثالث. غالبًا ما يكون الأسرع على البيانات الكبيرة بفضل المدرّجات التكرارية والنمو حسب الأوراق، وله طريقته الخاصة في التعامل مع الفئات. وعمليًا، تصل المكتبات الثلاث إلى نتائج متقاربة على بيانات محضّرة جيدًا. وإذا تفوقت إحداها بشكل كبير، فراجع خط المعالجة قبل أن تحتفل.
التحقق أهم من المكتبة
هذا ما تتجاهله معظم المقارنات. أكبر مصدر للنتائج المضللة في تعلّم الآلة على البيانات الجدولية ليس المكتبة، بل تسرّب المعلومات بين بيانات التدريب والاختبار.
إذا كانت صفوفك تأتي في مجموعات (عدة قياسات لكل مريض أو عميل أو آلة أو بئر)، فالتقسيم العشوائي يضع صفوفًا من المجموعة نفسها في الجانبين. يتعلم النموذج التعرّف على المجموعة بدل النمط، فتبدو نتيجة الاختبار ممتازة. ثم يأتي مريض أو عميل أو بئر جديد فعلًا، فتنهار النتيجة.
الحل هو التحقق المتقاطع حسب المجموعات: تبقى كل صفوف المجموعة في الجزء نفسه. وأشد نسخه صرامة هي "استبعاد مجموعة واحدة في كل مرة" (leave-one-group-out). إنه أبطأ، لكنه يجيب عن السؤال الذي يهمك فعلًا: كيف يؤدي النموذج على شيء لم يره من قبل؟
وللبيانات الزمنية الفكرة نفسها مع الزمن: درّب على الماضي واختبر على المستقبل. شرحت ذلك في التنبؤ بالطلب للشركات الصغيرة.
مثال حقيقي: طبقات جيولوجية من بيانات CPT
في مشروع CPT Dashboard، وهو مشروع علم بيانات لفريق من خمسة أشخاص في جامعة هاسلت ببيانات من VITO، كانت المهمة التنبؤ بأي من 15 طبقة جيولوجية توجد عند كل عمق في اختبار الاختراق المخروطي (CPT). ضمّت البيانات نحو 184 ألف قياس موسوم.
هذه القياسات تأتي في سبرات: اختبار CPT واحد يعطي مئات الصفوف، كلها من النقطة نفسها في الأرض، والصفوف المتجاورة شبه متطابقة. لو قسّمنا عشوائيًا، لوُضعت صفوف من السبر نفسه في التدريب والاختبار، ولما كان للنتائج أي معنى.
لذلك تحقّقنا من كل نموذج باستبعاد سبرات كاملة، أي استبعاد سبر واحد في كل مرة عبر 238 سبرًا. وقارنّا CatBoost وXGBoost وRandom Forest وLightGBM بنماذج تسلسلية (LSTM ونماذج ماركوف الخفية وCRF)، كلها بالتحقق الصارم نفسه. واعتمدت الأشجار على العمق، ومقاومة المخروط، ونسبة الاحتكاك، ومؤشرات سلوك التربة، والموقع.
ولم يكن النموذج إلا نصف الجواب. التنبؤات الخام تقفز بين الطبقات بطريقة لا يقبلها أي جيولوجي، لذلك تفرض خطوة معالجة لاحقة بالبرمجة الديناميكية (خوارزمية Viterbi) ترتيب ظهور الطبقات، وتدمج المقاطع القصيرة، وتصحح الطبقات المحشورة بين طبقتين. ثم تعرض لوحة التحكم أرجح ثلاثة تفسيرات مع درجات الثقة، وتسمح بتدريب نموذج CatBoost أو XGBoost أو Random Forest جديد من المتصفح.
الدرس الذي خرجت به: عندما صار التحقق صادقًا، أصبح الاختيار بين مكتبات التعزيز المتدرج تفصيلًا. العمل الحقيقي كان في التحقق وقواعد المجال.
كيف أختار اليوم
- جهّز التحقق حسب المجموعات أو حسب الزمن أولًا. حدّد ما معنى "لم يره النموذج" في مشكلتك.
- درّب CatBoost بإعداداته الافتراضية كخط أساس قوي، خاصة مع البيانات الفئوية.
- درّب XGBoost أو LightGBM مع إيقاف مبكر وميزانية ضبط معتدلة.
- قارن على الأجزاء نفسها، وانظر إلى الأخطاء حسب المجموعة لا إلى المتوسط فقط.
- اختر أبسط نموذج يصمد، واستثمر الوقت الذي وفّرته في المتغيرات وفيما يحدث بعد التنبؤ.
لنعمل معًا
أنا إدريس بريكسين، مهندس برمجيات وتعلّم آلة، حاصل على ماجستير في الإحصاء وعلوم البيانات من جامعة هاسلت. أبني نماذج تعلّم الآلة والبرمجيات الجاهزة للإنتاج حولها. اطّلع على دراسة حالة CPT Dashboard وأعمالي الأخرى، أو اقرأ ماذا تؤتمت أولًا.
إذا كانت لديك بيانات جدولية وتنبؤ تحتاج أن تثق فيه، أرسل لي وصفًا موجزًا.