勾配ブースティング(XGBoost/LightGBM)

表データの王者、GBDTの仕組み。XGBoost・LightGBM・CatBoost御三家を整理します。

Kaggle頻出、表データの王者。XGBoost と LightGBM の仕組みと使いどころ。

白峰 リリ(普段) 白峰 リリ

Kaggleで『XGBoostとLightGBMが強い』ってよく聞くけど、何がそんなにすごいの?

神楽 モニカ 先生(笑顔) 神楽 モニカ 先生

どちらも勾配ブースティングのライブラリね。 表データ(構造化データ)に対してとても強力なのよ。

紅林 かえで(普段) 紅林 かえで

勾配ブースティングは、弱学習器(浅い決定木)を逐次的に追加していくアンサンブル学習。 各ステップで前のモデルの誤差を埋めるよう次の木を作る。

藍沢 しずく(普段) 藍沢 しずく

ランダムフォレストとは違うんですかぁ?
しずく、ごっちゃになっちゃう…

紅林 かえで(普段) 紅林 かえで

ランダムフォレストは並列に独立した木を作り平均するバギング。 勾配ブースティングは逐次に誤差を補正するブースティング。 両者は似て非なるアプローチよ。

白峰 リリ(普段) 白峰 リリ

XGBoostとLightGBMって、どう違うの?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

XGBoostは2014年登場の元祖。 LightGBMはMicrosoft開発の高速版で、ヒストグラム法とLeaf-wise成長戦略で速度・メモリ効率が良い。

紅林 かえで(普段) 紅林 かえで

あとCatBoostもあって、こちらはカテゴリ変数の扱いが得意なの。 この3つはGBDT御三家と呼ばれているわ。

藍沢 しずく(普段) 藍沢 しずく

実装するときに気をつけることってありますかぁ?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

主要なハイパーパラメータは (1)学習率(low to high)、(2)木の本数、(3)木の深さ、(4)正則化。 学習率を下げると過学習が緩和されるが本数を増やす必要があり、トレードオフ。

白峰 リリ(笑い) 白峰 リリ

結局、ハイパラ調整は避けて通れないんだね〜。

紅林 かえで(普段) 紅林 かえで

そうね、最適化はGridSearchやOptunaなどで行うのが定番。 GBDTは強力だけど、ハイパラに敏感な一面もあるのよ。

紅林 かえで(普段) 紅林 かえで

DS検定では『GBDTは弱学習器の逐次追加』『XGBoost/LightGBMは表データで強い』『ランダムフォレストとブースティングの違い』が頻出。

import lightgbm as lgb
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = lgb.LGBMClassifier(
    n_estimators=200,
    learning_rate=0.05,
    max_depth=6,
    random_state=42,
)
model.fit(X_train, y_train, eval_set=[(X_test, y_test)])

確認クイズ

勾配ブースティングの特徴として正しいのはどれか。

  1. 弱学習器を並列に独立して作り、平均する
  2. 弱学習器を逐次的に追加し、各ステップで前モデルの誤差を補正する
  3. 決定木を使わない手法である
  4. 教師なし学習である
こたえを見る

正解: 2. 弱学習器を逐次的に追加し、各ステップで前モデルの誤差を補正する

逐次的に追加し、誤差を補正するのが勾配ブースティングの特徴です。 並列に独立した木を作るのはランダムフォレスト(バギング)で、両者の対比は頻出問題です。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。