スタッキング

Stacking (Stacked Generalization)

スタッキング(Stacking / Stacked Generalization)とは、異なる種類の複数のモデル(ベースモデル)の予測結果を、別のモデル(メタモデル)で統合するアンサンブル学習手法です。各モデルの強みを活かした高精度な予測を実現します。

2層構造

第1層(ベースモデル)では、ランダムフォレスト、SVM、ニューラルネットワークなど異なるアルゴリズムのモデルを学習します。第2層(メタモデル)では、ベースモデルの予測値を入力として新たなモデル(通常はロジスティック回帰や線形回帰)を学習し、最終的な予測を行います。

表:スタッキングの要点まとめ
ひとことで言うと複数モデルの予測結果を入力にして、さらに別のモデルで最終判断する手法。
何がうれしいか種類の違うモデルの長所を組み合わせられ、最高精度を狙える。
注意点構造が複雑で運用が重い。データリークを防ぐ実装上の注意が必要。

リーク対策

ベースモデルの予測値を生成する際、訓練データの予測にはk分割交差検証を用いて、各フォールドの予測値を結合します。これにより情報のリーク(データ漏洩)を防ぎます。

図:スタッキングの2階建て構造
11階:複数モデル木・線形・NNなど
▶
2各モデルの予測それぞれの答えを出す
▶
3予測を特徴量に新しい入力データとする
▶
42階:統合モデル最終的な判断を学習
▶
5最終予測単体より高精度

Kaggleでの活用

スタッキングはKaggleコンペティションの上位入賞ソリューションで頻繁に使用される手法です。複数の多様なモデルを組み合わせることで、単一モデルでは達成できない精度を実現できます。