ML Learning Hub
طرق المجموعةمتوسط

التحزيم والتعزيز والتكديس

حكمة الحشود المتنوعة — دمج نماذج غير مثالية في شيء أقوى من أي نموذج منفرد

شرح بصري لجميع نماذج المجموعة — bagging يُقلل التباين وboosting يُقلل التحيز وstacking يجمع التنبؤات عبر مُتعلم ميتا.

45 min
11 مخططات
6 المفاهيم المغطاة

المتطلبات الأساسية

Decision Trees
Gradient Boosting

المفاهيم المغطاة

Variance ReductionBias ReductionAdaBoostSAMMEMeta-learnerOOF Predictions

الصيغ الرئيسية

التحيز-التباين للمجموعة

تباين المجموعة يتقلص بتخفيض الارتباط ρ بين النماذج — التنوع = تقليل التباين

وزن AdaBoost

وزن أعلى للمتعلمين الضعفاء الأكثر دقة — المتعلمون ذوو الخطأ المنخفض يهيمنون على المجموعة

مدخلات ميتا التكديس

تنبؤات النماذج الأساسية خارج الطوق تُغذِّي المتعلم الميتا — المدخل الصحيح الوحيد للتكديس

محاكاة تفاعلية

Loading visualization…
Loading visualization…

هندسة النموذج

Loading visualization…
🎯

لماذا تفوز المجموعات في Kaggle

motivation

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

💡

نماذج المجموعة الثلاثة

intuition

Bagging (التجميع بالتشغيل التمهيدي): تدريب K نموذج على K مجموعة فرعية عشوائية → متوسط/تصويت. يقلل التباين. الغابة العشوائية هي bagging. Boosting: تدريب K نموذج بشكل تسلسلي، كل منها يُصلح أخطاء السابق → تركيبة موزونة. يقلل التحيز. XGBoost هو boosting. Stacking: تدريب K نموذج أساسي متنوع، واستخدام تنبؤاتها كميزات لمتعلم فوقي.

الفكرة الأساسية: المجموعات تعمل لأن النماذج متنوعة. مجموعة bagging من نماذج متطابقة لها نفس أداء نموذج واحد بالضبط. التنوع = عدم الترابط = تخفيض التباين.

⚙️

التكديس بالتنبؤات الخارجية

algorithm
1

تعريف K نموذج أساسي متنوع (LightGBM، XGBoost، CatBoost، شبكة عصبية، إلخ)

2

لكل نموذج أساسي، تشغيل التحقق المتقاطع بـ5 أضعاف

3

جمع التنبؤات خارج الضعف (OOF) — تُشكل عموداً في مصفوفة الميزات الفوقية

4

تكديس K عمود لتشكيل مصفوفة الميزات الفوقية Ñ ∈ ℝ^{n×K}

5

تدريب المتعلم الفوقي (الانحدار اللوجستي أو LightGBM) على Ñ مع الهدف y

6

للاختبار: متوسط تنبؤات النماذج الأساسية عبر الأضعاف، إطعام المتعلم الفوقي

</>

تنفيذ التكديس في الإنتاج

code
python25 lines
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

def stack_oof(models, X_train, y_train, X_test, n_folds=class="tok-num">5):
    class="tok-str">"""Returns OOF predictions + test predictions for all models."""
    skf = StratifiedKFold(n_splits=n_folds, shuffle=True, random_state=class="tok-num">42)
    oof_preds = np.zeros((len(X_train), len(models)))
    test_preds = np.zeros((len(X_test), len(models)))

    for m_idx, model in enumerate(models):
        fold_test_preds = np.zeros((len(X_test), n_folds))
        for f_idx, (tr, val) in enumerate(skf.split(X_train, y_train)):
            model.fit(X_train[tr], y_train[tr])
            oof_preds[val, m_idx] = model.predict_proba(X_train[val])[:,class="tok-num">1]
            fold_test_preds[:, f_idx] = model.predict_proba(X_test)[:,class="tok-num">1]
        test_preds[:, m_idx] = fold_test_preds.mean(axis=class="tok-num">1)
        print(fclass="tok-str">"Model {m_idx} OOF AUC: {roc_auc_score(y_train, oof_preds[:,m_idx]):.4f}")

    class="tok-comment"># Meta-learner on OOF predictions
    meta = LogisticRegression(C=class="tok-num">0.1)
    meta.fit(oof_preds, y_train)
    final_preds = meta.predict_proba(test_preds)[:,class="tok-num">1]
    return final_preds, meta.coef_

?اختبار المعرفة

يتم حفظ التقدم في متصفحك — لا حاجة لحساب.

تحتاج مهندس ذكاء اصطناعي أو عالم بيانات؟

أبني نماذج تعلم آلي مخصصة، ووكلاء ذكاء اصطناعي، ورؤية حاسوب، وأتمتة — من الفكرة إلى الإنتاج.