現在、同じデータセットで3つの異なる機械学習アルゴリズムのパフォーマンスを比較する問題に取り組んでいます。データセットを70/30のトレーニング/テストセットに分割し、GridSearchCVとX_train, y_train
を使用して、各アルゴリズムの最適なパラメーターをグリッド検索しました。
最初の質問、私はトレーニングセットでグリッド検索を実行すると思いますか、それともデータセット全体であると思いますか?
2番目の質問、GridSearchCVの実装でK分割を使用していることを知っています。GridSearchCVで比較する3つのアルゴリズムすべてに同じX_train, y_train
を使用した場合、交差検証を実行したということですか?
どんな答えでもよろしくお願いします。
名前がCV
で終わるscikitのすべての推定量は、相互検証を実行します。ただし、パフォーマンスを測定するために別のテストセットを保持する必要があります。
したがって、トレーニングとテストを行うには、データ全体を分割する必要があります。しばらくの間、このテストデータを忘れてください。
そして、この列車データをグリッド検索のみに渡します。 GridSearchは、このトレインデータをさらにトレインとテストに分割し、渡されたハイパーパラメーターを調整します。そして最後に、モデルをトレインデータ全体に最適なパラメータで適合させます。
次に、最初に取っておいたテストデータでこのモデルをテストする必要があります。これにより、モデルの現実に近いパフォーマンスが得られます。
データ全体をGridSearchCVに使用すると、テストデータがパラメーターチューニングにリークし、最終的なモデルが新しい未表示のデータでうまく機能しない可能性があります。
GridSearchをより詳細に説明する他の回答を見ることができます。
はい、GridSearchCVは交差検証を実行します。コンセプトを正しく理解している場合-モデルをテストするために、データセットの一部をモデルから見えないようにする必要があります。
したがって、トレーニングデータセットに対してモデルをトレーニングし、テストデータセットでモデルをテストします。
ここで私はほとんど同じことをしていました -あなたはそれをチェックしたいかもしれません...