目次
はじめに
GBDT(Gradient Boosting Decision Tree)系アルゴリズムは「構造化データに最も強い」とされ、実務・コンペ問わず利用される手法です。
中でも代表的なのが XGBoost / LightGBM / CatBoost の3つ。
本記事では、それぞれの特徴・速度・精度・カテゴリ変数の扱い・使い分けを明確に整理し、「どれを選ぶべきかが一目でわかる」構成にしています。
結論:3つの最適な使い分け
最初にいちばん大事な結論だけ。
| モデル | 得意領域 | 向くケース |
|---|---|---|
| XGBoost | 小〜中規模・正則化が強い・安定した精度 | 過学習を抑えたい、欠損値処理を楽にしたい |
| LightGBM | 速度最速・大規模データ・カテゴリに強い | データが大きい、カテゴリが多い、圧倒的に速く回したい |
| CatBoost | カテゴリ最強・精度が高い | カテゴリ変数が大量、多段カテゴリ、前処理を減らしたい |
つまり:
重要!
大規模 → LightGBM
カテゴリ多い → CatBoost
安定した精度と扱いやすさ → XGBoost
この三角形のバランスで判断すれば失敗しません。
モデルの特徴まとめ
XGBoost
GBDTの王道モデル
欠損値を自動処理
正則化(L1/L2)が強く過学習に強い
小〜中規模で安定
学習速度はそこそこ
カテゴリ変数は前処理が必要
最も“汎用的”で、機械学習初心者〜実務者まで幅広く使われる。
LightGBM
Microsoft開発の超高速GBDT
Leaf-wise成長で深く学習できる
カテゴリ変数を直接学習可能
メモリ効率が非常に高い
大規模データを高速に扱える
過学習しやすいので制御が必要
現代の実務では採用率トップクラス。
CatBoost
Yandex開発
カテゴリ変数処理が最強(エンコーディング不要)
精度が安定しやすい
前処理が劇的に少ない
デフォルトのままでも精度が出やすい
学習速度はLightGBMより遅いがXGBoostより速いことが多い
“カテゴリ地獄”のデータでは無類の強さ。
各モデルの速度・精度・扱いやすさを比較
速度比較(LightGBMが圧勝)
| モデル | 速度 |
|---|---|
| LightGBM | 最速 |
| CatBoost | 中程度(そこそこ速い) |
| XGBoost | 比較的遅い(histで改善) |
大規模データではLightGBMがほぼ一択。
精度比較(CatBoostがやや有利な場面あり)
| モデル | 精度傾向 |
|---|---|
| XGBoost | 安定して高い |
| LightGBM | 精度は状況次第、カテゴリ多いと強い |
| CatBoost | 特にカテゴリデータで強い |
カテゴリ変数の処理次第で精度が大きく変わる。
カテゴリ変数の扱い
| モデル | カテゴリ処理 |
|---|---|
| XGBoost | 前処理必須(one-hot/label) |
| LightGBM | 直接学習可 |
| CatBoost | 最強。前処理不要、効果が安定 |
EC・広告・業務データなど、カテゴリが爆発する場面で差が出る。
メモリ使用量
- LightGBM:最も少なく軽い
- CatBoost:中程度
- XGBoost:多め
どれを使うべきか?ケース別ガイド
| ケース | 最適モデル | 理由 |
|---|---|---|
| データが巨大(10万〜1000万行) | LightGBM | ヒストグラム法で高速&省メモリ |
| カテゴリが多い | CatBoost | ネイティブにカテゴリ処理が強い |
| 欠損値をラクに扱いたい | XGBoost | 欠損値の自動方向学習が優秀 |
| とりあえずGBDTの王道を知りたい | XGBoost | 最も汎用で学習コストが低い |
| GPUで爆速学習したい | LightGBM / XGBoost(GPU版) | GPU対応が強力 |
| パラメータをほぼ触りたくない | CatBoost | デフォルトが強い |
コード比較(最低限の実行例)
XGBoost
from xgboost import XGBClassifier
model = XGBClassifier()
model.fit(X_train, y_train)
LightGBM
import lightgbm as lgb
model = lgb.LGBMClassifier()
model.fit(X_train, y_train)
CatBoost
from catboost import CatBoostClassifier
model = CatBoostClassifier(verbose=0)
model.fit(X_train, y_train)
実務での選ばれ方(リアルな使い分け)
| 領域・用途 | 推奨モデル | 理由 |
|---|---|---|
| 広告・マーケティング | LightGBM / CatBoost | カテゴリ変数が多く、大規模データでも高速・高精度 |
| 金融スコアリング | XGBoost / CatBoost | 安定性が求められ、説明性が重要になるため |
| 需要予測 | LightGBM | 超高速学習が可能で、特徴量が多くても安定 |
| 製造・品質管理 | XGBoost | 挙動が安定しており、モデル解釈が行いやすい |
まとめ
XGBoost → 安定性と欠損処理の強さ
LightGBM → 速度・メモリ効率・カテゴリ処理
CatBoost → カテゴリ変数最強・精度安定
3つは使い分けが明確
実務ではデータ量・カテゴリの数で選ぶと正解率が上がる