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は依然として標準的なツール