キングの仕組みについて解説します。この記事を読めば、スタッキングの理解、実装が円滑になると思います。記事の目的スタッキングのシンプルな仕組みを知り、実装しやすくする。いうときにスタッキングが有効なのか、どのようなモデルを組み合わせればよいのかを知る。※コード実装部分は書いていません!スタッキングとはスタッキングとはアンサンブルの手法の一つであり、モデルを積み上げていく方法です。・クロスバリデーションを用いる・目的変数の予測結果を特徴量として用いる・アンサンブル手法でもあり特徴エンジニアリング手法でもあるといった特徴があり、trainデータとtestデータの分布が似ているとき、特に良い精度が出せます。以下がスタッキングの手順です。クロスバリデーションでtrainデータとtestデータの目的変数を予測する1の予測をそれぞれの特徴量に追加する1,2を色々なモデルで行う1~2で追加した特徴量も含めて、testデータの目的変数の予測を行うそれでは手順について細かく見ていきましょう。クロスバリデーションでtrainデータとtestデータの目的変数を予測するクロスバリデーションでtrainデータとtestデータの目的変数をそれぞれ予測します。1,trainデータを分割(fold1~4)し、分割の内の1つ(青の丸部分)を、それ以外の残りのデータ(オレンジの丸部分)を用いて予測する2,オレンジ丸部分を用いてtestデータの目的変数(青の長丸)を予測する。3,1と2を全ての組み合わせで行う下の図は、1〜3を図にしたもので、クロスバリデーションのやり方です。※trainデータの方ではtrainデータの目的変数の一部(分割の少数側)を予測するのに対し、testデータの方ではtestデータの目的変数の全体を予測していることに注意してください。※trainデータの説明変数をtrainX、目的変数をtrainY。testデータの説明変数をtestX、目的変数をtestYとしています。以上が全ての分割の組み合わせで各目的変数を予測するイメージです。これでtrainデータとtestデータの目的変数の全体を予測することができました。(下図)1枚目:クロスバリデーションでtrainデータの目的変数を予測したもの2枚目:クロスバリデーションでtestデータの目的変数を予測し、4つの予測結果を平均します。1で行った目的変数の予測結果をそれぞれの特徴量に追加する見出しの通りですが、下図のように追加します。1,2を色々なモデルで行う1,2の作業、つまり、「クロスバリデーション→trainデータ、testデータの目的変数の予測→特徴量に追加」を色々なモデルで行いましょう。複数のモデル(今回は3つ)で行ってみました。その結果、このような感じで特徴量が増えていきます。「どのようなモデルを組み合わせれば良いのだろう?」とか「最後の予測では全ての特徴量を含めたほうがいいの?」とか、疑問に思いませんでしたか?自分が社内のインターン生で勉強会を行った時、これらのような質問が飛んできました。Q,どのモデルを組み合わせれば良いのですか?A,ごめんなさいわかりません!後日調べます!ということで、Kaggle本や様々なネット記事を検索して調べてみました。結局、確立した方法はみつかりませんでした。色々な組み合わせを試してみて、精度の上がったものを選択するようです。キングはアンサンブル手法ですので、汎化性能があがるようにモデルを組み合わせるのが良いです。相関の近いモデルどうしを組み合わせても汎化性能は上がりません。モデル同士の相関を調べてみて、組み合わせて実験するのが良いのではないでしょうか。Q,最後の予測では元々合った特徴量含めるべき?A,場合によるのではないでしょうか...?(わかってない)ということで、同じように調べて考えてみました。同じデータの使われる回数が増え過学習しやすくなります。その代わり、元々合った特徴量と予測値の関係性を分析することができます。