アンサンブル学習

英語名 Ensemble Learning
読み方 アンサンブル・ラーニング
難易度
所要時間 2〜4週間
提唱者 機械学習・統計学の分野
目次

ひとことで言うと
#

アンサンブル学習は、単一のモデルでは達成できない予測精度を、複数のモデルの予測を組み合わせることで実現する手法群です。バギング・ブースティング・スタッキングの3つが代表的なアプローチとして使われます。

用語の定義
#

押さえておきたい用語
  • バギング(Bagging):データのブートストラップ標本で複数モデルを独立に学習させ、予測を平均(回帰)または多数決(分類)で統合する手法。Random Forestが代表格
  • ブースティング(Boosting):前のモデルの誤りを次のモデルが修正するように逐次的に学習を重ねる手法。XGBoost、LightGBMが広く使われる
  • スタッキング(Stacking):複数の異なるモデルの予測を特徴量として、別のメタモデルが最終予測を行う2層構造の手法
  • 弱学習器(Weak Learner):単体ではランダムより少し良い程度の性能しかないモデル。決定木の深さ1(スタンプ)などが典型
  • 過学習リスク(Overfitting Risk):ブースティングで学習回数を増やしすぎると、訓練データのノイズまで学習してテスト性能が劣化する現象

全体像
#

バギング並列に学習各モデルは独立→ 平均 / 多数決Random Forestブースティング逐次的に学習前の誤りを修正→ 重み付き加算XGBoost / LightGBMスタッキング異種モデルを結合メタモデルで統合メタモデルLR + RF + XGB → LR手法の比較バリアンス削減過学習を抑える並列化しやすい精度 ◯ / 速度 ◎バイアス削減弱学習器を強化精度が最も高い傾向精度 ◎ / 速度 ◯多様性活用異種モデルの強みを組み合わせる精度 ◎ / 複雑度 高
ベースモデル選定
単一モデルの性能確認
アンサンブル手法選択
バギング/ブースティング/スタッキング
ハイパーパラメータ調整
交差検証で最適化
性能評価・運用
テストセットで最終確認

こんな悩みに効く
#

  • 単一の決定木やロジスティック回帰では精度が頭打ちになり、改善の余地が見えない
  • モデルの予測が入力データの些細な変化で大きくブレて、安定しない
  • Kaggleや社内コンペで上位に入りたいが、単一モデルでは限界を感じている

基本の使い方
#

まず単一モデルのベースラインを作る
アンサンブルの前に、ロジスティック回帰や単一の決定木でベースライン性能を測定します。この数値がなければアンサンブルの効果を定量的に評価できません。特徴量エンジニアリングも先に行い、データの質を上げておきます。
課題に合ったアンサンブル手法を選ぶ
過学習が問題ならバリアンスを減らすバギング(Random Forest)、バイアスが高い(精度が低い)ならブースティング(XGBoost / LightGBM)を選びます。時間に余裕があり最大精度を狙うならスタッキングを検討します。
ハイパーパラメータを交差検証で調整する
ブースティングでは学習率(learning_rate)、木の深さ(max_depth)、木の数(n_estimators)が主要パラメータです。学習率を小さくして木の数を増やすのが基本戦略ですが、早期停止(early_stopping)を使って過学習を防ぎます。
本番運用に向けた判断を行う
予測精度だけでなく、推論速度・メモリ使用量・解釈性も考慮します。LightGBMはXGBoostより学習が速く大規模データ向き、Random Forestは並列推論が容易。スタッキングは精度は高いが運用の複雑さが増すため、改善幅が小さいなら単一のブースティングで十分です。

具体例
#

ECサイトの購買予測
月間訪問者800万人のECサイトが、30日以内の購買確率を予測するモデルを構築。単一のロジスティック回帰のAUCは0.72、Random ForestのAUCは0.79。LightGBMを導入し、特徴量120個・学習率0.01・木数3,000・max_depth=6で交差検証した結果、AUCが0.84に向上。さらにLightGBM + XGBoost + CatBoostの3モデルをスタッキングした結果、AUCは0.86に達した。ただしスタッキングの推論時間が単一LightGBMの3倍になるため、本番ではLightGBM単体(AUC 0.84)を採用。AUC 0.72→0.84の改善により、ターゲティングメール配信の購買率が**1.8%から3.4%**に向上した。
製造業の設備故障予測
半導体製造装置メーカーが、装置のセンサーデータ(振動・温度・圧力の87変数×15分間隔)から72時間以内の故障を予測するモデルを構築。単一の決定木のF1スコアは0.42で、故障の見逃しが多かった。Random Forest(木数500)でF1が0.61に改善し、XGBoost(学習率0.05、木数1,500、早期停止あり)でF1が0.73に到達。特徴量重要度の分析から、上位15変数だけで精度の94%を維持できることも判明。モデルの導入により、突発故障によるライン停止が月平均4.2回から1.1回に減少し、ダウンタイムコストが年間約2.8億円削減された。
保険会社のリスク査定
生命保険会社が、申込者の健康リスクを5段階に分類する査定モデルをアンサンブルで構築。過去10年分の申込データ48万件(特徴量:年齢・BMI・健診数値・既往歴など52変数)を使用。単一モデルの加重F1はロジスティック回帰0.54、RandomForest 0.63、LightGBM 0.68。スタッキング(第1層: LightGBM + XGBoost + RandomForest + CatBoost、第2層: ロジスティック回帰)で加重F1が0.72に向上。査定の自動化率が従来の35%から62%に上がり、査定医の作業時間が月間約480時間削減された。精度が足りないケース(上位リスクの境界付近)は従来どおり査定医が判断する運用とした。

やりがちな失敗パターン
#

失敗原因対策
ブースティングで学習しすぎて過学習するn_estimatorsを大きくしすぎ、早期停止を設定していないバリデーションセットでのスコアを監視し、early_stopping_roundsを設定する
アンサンブルしても精度が上がらないベースモデルが似すぎていて多様性がない異なるアルゴリズム(線形・木・ニューラルネット)や異なる特徴量セットを使って多様性を確保する
スタッキングでデータリーケージが起きる第1層の予測値を訓練データ全体で作ってしまった第1層の予測値は必ず交差検証のOut-of-Fold予測で生成し、リーケージを防止する
運用コストを無視して複雑なアンサンブルを選ぶ精度を0.5%上げるために推論パイプラインが3倍複雑になった精度改善幅と運用負荷を天秤にかけ、改善が小さいならシンプルな単一モデルを選ぶ

まとめ
#

アンサンブル学習で最も実用的なのは、LightGBMやXGBoostなどのブースティング系手法に早期停止を組み合わせるパターンです。単一モデルから数ポイント〜十数ポイントの精度改善が見込め、実装も比較的容易です。スタッキングはさらに精度を絞り出せますが、運用の複雑さとのトレードオフがあるため、まずはブースティング単体で十分な精度が出るかを確認してから検討するのが現実的でしょう。