古典的機械学習

スタッキング すたっきんぐ

スタッキングスタック一般化メタ学習アンサンブル学習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層のスタッキングが標準的

関連用語