Machine Learning

نبرد gradient boostingها: XGBoost، LightGBM، CatBoost و HistGB

میز آزمون چهار پیاده‌سازی اصلی gradient boosting روی یه مجموعه‌ی جدولی واحد: AUC، زمان آموزش، تأخیر پیش‌بینی و حجم مدل سریال‌شده، همه توی یه جدول تصمیم.

کاربرد

انتخاب پیاده‌سازی boosting که با قیدهای واقعی پروژه جور دربیاد: دقت، سرعت امتیازدهی، ردپای حافظه.

پیش‌نیازها

scikit-learn, xgboost, lightgbm, catboost

Python
import time, pickle
import pandas as pd
from sklearn.metrics import roc_auc_score
from sklearn.ensemble import HistGradientBoostingClassifier
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from catboost import CatBoostClassifier

modeles = {
    "XGBoost": XGBClassifier(n_estimators=500, learning_rate=0.05,
                             eval_metric="auc", random_state=42),
    "LightGBM": LGBMClassifier(n_estimators=500, learning_rate=0.05,
                               random_state=42, verbose=-1),
    "CatBoost": CatBoostClassifier(iterations=500, learning_rate=0.05,
                                   random_seed=42, verbose=0),
    "HistGB": HistGradientBoostingClassifier(max_iter=500,
                                             learning_rate=0.05,
                                             random_state=42),
}

lignes = []
for nom, m in modeles.items():
    t0 = time.perf_counter(); m.fit(X_train, y_train)
    fit_s = time.perf_counter() - t0
    t0 = time.perf_counter(); proba = m.predict_proba(X_test)[:, 1]
    pred_ms = (time.perf_counter() - t0) * 1000
    lignes.append({"modele": nom, "auc": roc_auc_score(y_test, proba),
                   "fit_s": fit_s, "pred_ms": pred_ms,
                   "taille_mo": len(pickle.dumps(m)) / 1e6})
print(pd.DataFrame(lignes).round(3).to_string(index=False))

نتیجه

  modele    auc  fit_s  pred_ms  taille_mo
 XGBoost  0.871  4.812     38.4      2.412
LightGBM  0.873  1.937     21.7      1.348
CatBoost  0.875  9.260     12.3      0.981
  HistGB  0.869  2.405     44.1      0.624

Gagnant AUC : CatBoost (+0.002 vs LightGBM, mais 4.8x le temps de fit)
Gagnant coût total : LightGBM — fit 2.5x plus rapide que XGBoost
à AUC équivalente. HistGB : zéro dépendance externe, modèle le plus léger.
BenchmarkXGBoostLightGBMCatBoostGradient Boosting

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده