勾配ブースティング原理(GBDT)
残差を逐次的に学習する GBDT の仕組みと、学習率・木の本数・深さの関係を理解します。
GBDT の考え方#
勾配ブースティング(GBDT)は、前のモデルの誤差(残差)を次の木が予測することを繰り返し、 木を足し合わせて予測を改善していくブースティング手法です。
予測 = 木1 + lr × 木2 + lr × 木3 + …
(各木は「それまでの予測の誤差」を学習する)「勾配」とは、損失関数を小さくする方向のことで、各ステップでその方向へ木を足していきます。
学習率と木の本数はトレードオフ#
学習率(learning_rate)は 1 本の木の寄与の大きさです。
- 学習率を小さく → 1 本あたりの効果は控えめ。多くの木が必要だが汎化しやすい
- 学習率を大きく → 速く収束するが過学習しやすい
実務では「小さめの学習率 + 多めの木 + 早期終了」が定石です。
主要パラメータ#
| パラメータ | 役割 |
|---|---|
learning_rate | 各木の寄与。小さいほど慎重(木数を増やす) |
n_estimators | 木の本数。多すぎると過学習 → 早期終了で止める |
max_depth / num_leaves | 木の複雑さ。大きいほど表現力↑・過学習リスク↑ |
subsample / colsample | 各木で使う行/列の割合。小さくすると正則化効果 |
注意
ランダムフォレストと違い、GBDT は n_estimators を増やしすぎると過学習します。
検証スコアが悪化し始める前に早期終了で止めるのが基本です。
scikit-learn での最小例#
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier(
learning_rate=0.05, n_estimators=500, max_depth=3, random_state=42
)実戦では、より高速・高精度な XGBoost / LightGBM / CatBoost を使います(次レッスン以降)。
理解度チェック#
次のステップ#
次は、GBDT の代表的実装の一つ XGBoost を実践します。