データ全体とは、トレーニング+テスト+検証を意味します
検証データを使用してハイパーパラメーターを修正し、テストデータを使用してモデルを選択したら、モデル全体をトレーニングするのではなく、データ全体でモデルをトレーニングして、パラメーターをトレーニングする方が良いでしょう。データのトレーニング
データ全体とは、トレーニング+テスト+検証を意味します
検証データを使用してハイパーパラメーターを修正し、テストデータを使用してモデルを選択したら、モデル全体をトレーニングするのではなく、データ全体でモデルをトレーニングして、パラメーターをトレーニングする方が良いでしょう。データのトレーニング
回答:
問題は誤った仮定の下にあります。多くの人はあなたが「できない」とあなたが言うことをします。
実際、広く展開されているsklearnパッケージのグリッド検索実装はまさにそれを実行します。でない限りrefit=False
、データ全体を使用して最終モデルを再トレーニングします。
一部のハイパーパラメータについては、データ量に関連しているため、これはあまり望ましくない場合があります。たとえばmin_samples_leaf
、意思決定ツリーの事前剪定戦術を考えてみましょう。より多くのデータがある場合、事前プルーニングは期待どおりに実行されない可能性があります。
しかし、繰り返しになりますが、実際にはほとんどの人がクロス検証後にデータ全体を使用して再トレーニングを行うため、可能な限り最高のモデルが得られます。
補遺: @NeilSlaterは、CVの上でホールドアウトを実行する人がいると以下で述べています。つまり、トレーニングテストの分割があり、トレーニングでモデル選択を実行します。彼によると、彼らは元のトレーニングセット分割を使用して再トレーニングしますが、テストセットは再トレーニングしません。テストセットは、最終的なモデル推定を実行するために使用されます。個人的に、私はこれに3つの欠陥があると思います:(a)とにかく再トレーニングしているため、一部のハイパーパラメーターがトレーニングの量に依存していることで言及した問題は解決しません、(b)多くのモデルをテストするときは、より洗練された方を好みますデータが無駄にならないようにするための入れ子の交差検証などの方法、および(c)ホールドアウトは、データが少ないときにモデルが一般化する方法を推測するためのひどい方法です。
refit
GridSearchCV関数のオプション。保持されたテストデータを含めることは再適合しません(そのデータを確認することすらできません)。
はい、できます。
テストデータはデータをトレーニングするために同様の分布から取得されることになっているため、モデルを壊すことはありません。モデルを適切にトレーニングした場合、大きな変化はありません(以前のテスト/検証データでのより正確な測定基準を除く)。
ただし、テストデータがトレーニングデータとまったく同じ分布から得られることはめったにありません。そのため、実際のアプリケーションケースのシナリオでは、モデルの一般化可能性が向上する可能性があります。
この質問の答えは、使用するトレーニングアルゴリズム(テクノロジ)によって異なります。たとえば、アンサンブル分類で、トレーニングと検証(テストではない)セットが最後に結合されるいくつかのアプローチを見てきました。検証でも主にハイパーパラメーターを決定するために使用されることを知ることは非常に重要です。これらのハイパーパラメーターの一部は、トレーニングに使用されるデータの関数である可能性があります。たとえば、停止するタイミングを知るために使用されていたDNN検証では、ネットワークのパラメーター(重み)をチューニングし続けるとオーバーフィットが発生する可能性があるため、いつ停止するかを知る方法が必要です。検証セットがないと、トレーニングプロセスで盲目的に歩くことになります。一方、前に指定したのとまったく同じ数の反復を使用すると、これらの追加のサンプルから得られない可能性が高くなります。上記のように、テストセットに触れないでください。テストセットがないと、モデルを評価する方法がありません。これはギャンブルです。実際のデータ分布(テストデータによって表される)の精度を推定せずに、モデルやソリューションを提供することはできません。