古典的機械学習

XGBoost えっくすじーぶーすと

XGBoost勾配ブースティングKaggleアンサンブル学習表形式データ
XGBoostについて教えて

簡単に言うとこんな感じ!

「表形式データならXGBoost」と言われるほど強力な機械学習ライブラリだよ。Kaggleの上位チームが好んで使い、数々のコンペを席巻してきた。勾配ブースティングを高速・高精度に実装したもので、今も現役バリバリで使われてるんだ!


XGBoostとは

XGBoost(eXtreme Gradient Boosting)は、2014年にTianqi Chenが開発した勾配ブースティングの高速実装です。scikit-learnの標準GBMと比べて大幅に高速で、様々な最適化技術が組み込まれています。


XGBoostが強い理由

特徴内容
正則化(L1・L2)過学習を防ぐ仕組みが内蔵
欠損値の自動処理NaNを自動的に最適な方向に振り分け
並列処理ツリー構築を並列化(マルチコア活用)
近似分割膨大なデータでも高速に分岐を探索
Sparse対応スパース行列(ほとんど0のデータ)に効率的

主なパラメータ

パラメータ説明典型値
n_estimatorsツリーの本数100〜3000
learning_rate (eta)学習率0.01〜0.3
max_depthツリーの最大深さ3〜9
subsample訓練データのサンプリング率0.6〜1.0
colsample_bytree各ツリーの特徴量サンプリング率0.6〜1.0
reg_alpha (L1)L1正則化係数0〜1
reg_lambda (L2)L2正則化係数1〜10

Early Stopping

import xgboost as xgb

model = xgb.XGBClassifier(
    n_estimators=1000,
    learning_rate=0.05,
    early_stopping_rounds=50  # 50ラウンド改善なしで停止
)
model.fit(
    X_train, y_train,
    eval_set=[(X_val, y_val)],
    verbose=False
)

early_stopping_rounds で過学習を自動防止できます。


歴史と背景

  • 2014年:Tianqi ChenがワシントンDCでXGBoostを公開
  • 2015〜2016年:KaggleコンペでXGBoostを使うチームが席巻
  • 2016年:Chen & Guestrin がKDD 2016でXGBoostを正式発表
  • 現在LightGBM・CatBoostも登場したが、XGBoostは依然として標準的なツール

関連用語