02.4
アンサンブル
n_estimators や learning_rate を動かすと ROC-AUC や MSE がどう変わるかを確かめます。直感 #
1 本の決定木は、訓練データが 10 件入れ替わるだけで分割の位置が変わる不安定なモデルです。アンサンブルはこの不安定さを逆手に取り、少しずつ違う木を何十本も作って多数決すれば個々の間違いが打ち消される(バギング)、あるいは前の木が外した点を次の木に重点的に直させれば 1 本では届かない精度に積み上がる(ブースティング)、という 2 つの発想で木を束ねます。章の前半でこの 2 つの違いを AdaBoost とバギングの図で押さえ、後半で XGBoost・LightGBM・CatBoost が勾配ブースティングのどこを速く・頑健にしたのかを比べます。
この章の構成 #
このチャプターで学べること #
- 並列(バギング)と逐次(ブースティング)という 2 つの組み合わせ方の違いと、分散・バイアスのどちらを下げるか
n_estimators・learning_rate・max_depth(num_leaves)が ROC-AUC や MSE に与える効果の読み方- XGBoost・LightGBM・CatBoost の正則化・ヒストグラム近似・カテゴリ処理という違い
これが分かるとできること #
- 表形式データの課題に対して、ベースラインのランダムフォレストから勾配ブースティング系へ進める判断ができる
- Train と Test のスコアの差を見て、
learning_rateを下げる・max_depthを浅くするなど改善の優先順位を説明できる random_stateを固定した再現可能な手順で、パラメータを 1 つずつ動かす実験を組める
手法クイックリファレンス #
| 手法 | 戦略 | 計算量 | 推奨場面 |
|---|---|---|---|
| Bagging | 並列学習+多数決 | 中 | 分散を減らしたいとき |
| AdaBoost(分類) | 逐次重み付け | 中 | 弱分類器の組み合わせ |
| AdaBoost(回帰) | 逐次重み付け | 中 | 弱回帰器の組み合わせ |
| Gradient Boosting | 残差を逐次学習 | 中〜高 | 精度重視の汎用モデル |
| XGBoost | 正則化+高速化 | 高 | コンペ・大規模データ |
| LightGBM | 葉分割+高速 | 高 | 大規模データ・高速学習 |
| CatBoost | カテゴリ自動処理 | 高 | カテゴリ特徴量が多いとき |
| Stacking | メタ学習器 | 高 | 最大精度を追求 |
学習の進め方 #
まず ランダムフォレスト と バギング で「木をばらつかせて平均する」側を押さえ、分散の式 \(\rho\sigma^2 + (1-\rho)\sigma^2/B\) がどう縮むかを見ます。次に AdaBoost と 勾配ブースティング で「前の木の間違いを次の木が直す」側に進み、ステップ再生で残差が縮む様子と learning_rate の役割を確認します。最後に XGBoost・LightGBM・CatBoost の 3 ページを同じ 1000 件のデータで読み比べ、Train と Test の ROC-AUC の差を見ながらパラメータを調整する流れを身に付けます。
まとめ #
このチャプターでは、Bagging による分散低減から、AdaBoost・Gradient Boosting の逐次学習、XGBoost・LightGBM・CatBoost の高速実装、Stacking によるメタ学習まで、アンサンブル手法を体系的に学びます。1 本の決定木の限界を理解した上で、データ規模・特徴量の性質・精度要件に応じた手法の選択と、n_estimators・learning_rate・木の深さで過学習を制御しながら精度を最大化するチューニングの指針を身に付けることがゴールです。