こちらの記載がわかりやすいように思います。
変数選択・特徴量選択のときに注意すること
- 特徴量選択の元データは、実際使うデータであっても、新たにデータ分割したものであっても、オーバーフィッティングのリスクは存在する。
- 大切なのは、目的変数の情報を特徴量選択に入れないこと。
ただし、これは、オーバーフィッティングに着目した考え方の原理ですので、「目的変数の情報を特徴量選択に入れること」を否定するものではありません。オーバーフィッティングのリスクを考慮して、汎化性能を見てマズそうなら別の手法に変えましょう、くらいなニュアンスと思います。実際、サンプルコードとしては、目的変数の情報を特徴量選択に入れる方法の1種であるEmedded Methodとして、決定木による重要度を使っている例が多いようです。
また、特徴量選択の際に、どこまでのデータを利用するのかは、様々な流儀があるようです。必ずしもout-of-Foldで検証するべきとは限らず、実際の学習と同じテストデータをそのまま使うことが多いです。サンプルコードも単純にx-train, y-trainそのまま使っている例が多いです。この理由としては、特徴量選択という行為は、本質的にはモデルを単純化して、バリアンスを減らす方向に働くため、オーバーフィッティングのリスクは他の最適化より少ないからである、と考えます。なお、書籍「Kaggleで勝つデータ分析の技術」では「理想的にはout-of-Foldで検証することが望ましい」と記載されており、逆に言えば、多くの場合はそうしていない、ということを表現しています。
一方、ハイパーパラメータチューニングの際は、行為そのものがバリアンスを増やすリスクがあります。よって、kfoldといった手法で、out-of-Foldで検証すべきでしょう。サンプルコードでもそうなっている例が多いようです。
特徴量生成〜選択〜ハイパーパラメータ最適化の一連の流れについては、「特徴量生成、特徴量選択、ハイパーパラメータのチューニングを自動化するライブラリを使ってみた」も参考になります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/31 10:03 編集
2020/10/31 10:41
2020/10/31 10:53
2020/10/31 12:58
2020/10/31 13:10