スタッキング すたっきんぐ
スタッキングスタック一般化メタ学習アンサンブル学習Kaggle
スタッキングについて教えて
簡単に言うとこんな感じ!
「複数の異なるモデルの予測を入力として、さらに別のモデル(メタモデル)で最終予測する」高度なアンサンブル手法だよ。ランダムフォレスト・XGBoost・ニューラルネットワーク…それぞれの得意不得意をメタモデルが学習して統合する。Kaggleコンペ上位の定番テクニックなんだ!
スタッキングとは
スタッキング(Stacking、Stack Generalization)は、複数の異なる機械学習モデル(レベル0:ベースモデル)の予測を特徴量として、さらに別のモデル(レベル1:メタモデル)で学習・予測するアンサンブル手法です。
2層構造
【レベル0:ベースモデル(多様なアルゴリズム)】
訓練データ →
├─ ランダムフォレスト → 予測1
├─ XGBoost → 予測2
├─ ニューラルネット → 予測3
└─ SVM → 予測4
↓
【レベル1:メタモデル】
[予測1, 予測2, 予測3, 予測4] → ロジスティック回帰 → 最終予測
情報漏洩の防止:Out-of-Fold予測
ベースモデルの学習に使ったデータでメタモデル用の予測を作ると過学習します。Out-of-Fold(OOF)予測でこれを防ぎます。
訓練データを5分割(5-fold):
Fold1 でモデルを学習 → Fold2〜5 で予測
Fold2 でモデルを学習 → Fold1,3〜5 で予測
... (繰り返し)
→ 全訓練データのOOF予測を集めてメタモデルの学習データに
バギング・ブースティングとの違い
| 比較項目 | バギング | ブースティング | スタッキング |
|---|---|---|---|
| モデルの多様性 | 同じアルゴリズム | 同じアルゴリズム | 異なるアルゴリズム |
| 組み合わせ方 | 多数決 | 加重合算 | メタモデル |
| 精度 | 高い | 高い | 最高水準 |
| 実装の複雑さ | シンプル | やや複雑 | 複雑 |
歴史と背景
- 1992年:Wolpert が “Stacked Generalization” を提案
- 2000年代〜:Kaggle の台頭でスタッキングが競技MLの主要テクニックに
- 現在:上位コンペでは2〜3層のスタッキングが標準的
関連用語
- アンサンブル学習 — スタッキングが属するカテゴリ
- バギング — 並列アンサンブル手法
- ブースティング — 直列アンサンブル手法
- クロスバリデーション — スタッキングのOOF予測に使用
- メタ学習 — スタッキングと関連する学習パラダイム