スタッキング(Stacking / Stacked Generalization)とは、異なる種類の複数のモデル(ベースモデル)の予測結果を、別のモデル(メタモデル)で統合するアンサンブル学習手法です。各モデルの強みを活かした高精度な予測を実現します。
2層構造
第1層(ベースモデル)では、ランダムフォレスト、SVM、ニューラルネットワークなど異なるアルゴリズムのモデルを学習します。第2層(メタモデル)では、ベースモデルの予測値を入力として新たなモデル(通常はロジスティック回帰や線形回帰)を学習し、最終的な予測を行います。
| ひとことで言うと | 複数モデルの予測結果を入力にして、さらに別のモデルで最終判断する手法。 |
|---|---|
| 何がうれしいか | 種類の違うモデルの長所を組み合わせられ、最高精度を狙える。 |
| 注意点 | 構造が複雑で運用が重い。データリークを防ぐ実装上の注意が必要。 |
リーク対策
ベースモデルの予測値を生成する際、訓練データの予測にはk分割交差検証を用いて、各フォールドの予測値を結合します。これにより情報のリーク(データ漏洩)を防ぎます。
11階:複数モデル木・線形・NNなど
▶
2各モデルの予測それぞれの答えを出す
▶
3予測を特徴量に新しい入力データとする
▶
42階:統合モデル最終的な判断を学習
▶
5最終予測単体より高精度
Kaggleでの活用
スタッキングはKaggleコンペティションの上位入賞ソリューションで頻繁に使用される手法です。複数の多様なモデルを組み合わせることで、単一モデルでは達成できない精度を実現できます。