ハイパーパラメータチューニング基準のテストデータとモデル選択基準の検証データを実行した後、データ全体で最終モデルをトレーニングしませんか?


9

データ全体とは、トレーニング+テスト+検証を意味します

検証データを使用してハイパーパラメーターを修正し、テストデータを使用してモデルを選択したら、モデル全体をトレーニングするのではなく、データ全体でモデルをトレーニングして、パラメーターをトレーニングする方が良いでしょう。データのトレーニング


2
テストデータを使用してハイパーパラメータを修正しないでください。ブラインドコントロールグループ(テストセット)を削除して、実験全体を台無しにしました。
JahKnows、2017

@JahKnowsモデルのハイパーパラメータの調整が完了した後、別のデータセットでどれほど一般化されているかわからないことを除いて、害を理解できません。どのようにして実験を台無しにしたのですか?私は何かを逃していますか?
Apoorva Abhishekh 2017

回答:


8

問題は誤った仮定の下にあります。多くの人はあなたが「できない」とあなたが言うことをします。

実際、広く展開されているsklearnパッケージのグリッド検索実装はまさにそれを実行します。でない限りrefit=False、データ全体を使用して最終モデルを再トレーニングします。

一部のハイパーパラメータについては、データ量に関連しているため、これはあまり望ましくない場合があります。たとえばmin_samples_leaf意思決定ツリーの事前剪定戦術を考えてみましょう。より多くのデータがある場合、事前プルーニングは期待どおりに実行されない可能性があります。

しかし、繰り返しになりますが、実際にはほとんどの人がクロス検証後にデータ全体を使用して再トレーニングを行うため、可能な限り最高のモデルが得られます。

補遺: @NeilSlaterは、CVの上でホールドアウトを実行する人がいると以下で述べています。つまり、トレーニングテストの分割があり、トレーニングでモデル選択を実行します。彼によると、彼らは元のトレーニングセット分割を使用して再トレーニングしますが、テストセットは再トレーニングしません。テストセットは、最終的なモデル推定を実行するために使用されます。個人的に、私はこれに3つの欠陥があると思います:(a)とにかく再トレーニングしているため、一部のハイパーパラメーターがトレーニングの量に依存していることで言及した問題は解決しません、(b)多くのモデルをテストするときは、より洗練された方を好みますデータが無駄にならないようにするための入れ子の交差検証などの方法、および(c)ホールドアウトは、データが少ないときにモデルが一般化する方法を推測するためのひどい方法です。


この機能は相互検証の再利用に関するものですが、相互検証からの仮定しかなく、パフォーマンスの測定値がないため、テストデータを再利用することはお勧めできません。バグや問題のパラメータ(例で挙げた例など)があると、モデルが検出不能に悪化する可能性があります。
Neil Slater

@NeilSlaterここであなたが言ったことを理解できません:「この機能は相互検証の再利用に関するものです」
Ricardo Cruz

"機能"-> refitGridSearchCV関数のオプション。保持されたテストデータを含めることは再適合しません(そのデータを確認することすらできません)。
Neil Slater

@NeilSlater、私を信じていない場合は、自分でコードを簡単に確認できます(ここ)。refit = Trueの場合は、「データセット全体を使用して最良の推定量をフィット」します。
Ricardo Cruz

1
@NeilSlater、それは私の経験ではありませんが、他の人がそれを利用できるように、コメントにあなたの経験を追加しました。ありがとうございました。
Ricardo Cruz

1

はい、できます。

テストデータはデータをトレーニングするために同様の分布から取得されることになっているため、モデルを壊すことはありません。モデルを適切にトレーニングした場合、大きな変化はありません(以前のテスト/検証データでのより正確な測定基準を除く)。

ただし、テストデータがトレーニングデータとまったく同じ分布から得られることはめったにありません。そのため、実際のアプリケーションケースのシナリオでは、モデルの一般化可能性が向上する可能性があります。


1
この提案に従ってテストデータを含めることの問題は、モデルの一般化の程度を測定できないことです。はい、あなたはそれがより一般化することを期待するかもしれません。しかし、それを測定する能力を削除したため、あなたにはわかりません。私はその警告を追加することを提案し、なぜこれがまだ大丈夫なのかを説明します(たとえば、新しいデータを受け取ったときに、より良いモデルをうまく利用しながら、新しいテストセットとして扱い、新しい測定を構築できる可能性があります。 -しかし、それはリスクです)
Neil Slater

@NeilSlater:別のデータセットで一般化される程度を測定する機能を削除したことを理解しています。しかし、テストとホールドアウトの両方がある場合、ハイパーパラメーターのチューニング後でも、トレーニング+テストでモデルを再度トレーニングできます。モデルが一般化されているかどうかを確認するためのホールドアウトが残ります。これは私が尋ねたものとは違うことを知っています。しかし、私はあなたの意見を知りたいだけです。
Apoorva Abhishekh 2017

1
@ApoorvaAbhishekh:まだ別のホールドアウトデータセットがある場合、はい、それをnew_train = {old train、old cv、old test}でトレーニングされた新しいモデルに対する新しいテストセットとして使用できます。次に、一般化の尺度を取得します。使いすぎないように注意する必要がありますが、新しい組み合わせセットに問題がある場合(たとえば、データが多くなるため、早期停止を変更する必要があるなど)、新しいcvセットとして使用することはできません。。。あなたがまだ別のホールドアウトを準備してない限り。。。
Neil Slater

@NeilSlater理論的には、パフォーマンスを知るために新しいデータセットが必要です。実際には、fcknを長時間使用していて、何を期待するかがわかっているので、モデルが適切に機能することを確認できます。ただし、通常は、たとえばコンピュータービジョンなど、モデルのパフォーマンスをチェックするためのその他のデータ(ラベルのないデータ)もあります。それは正しくありませんが、うまくいきます。確かに極端なケースですが、うまくいくかもしれないと言いたいです。私自身、常にトレーニングに混ぜないテストセットを持っています。
Il'ya Zhenin 2017

1

この質問の答えは、使用するトレーニングアルゴリズム(テクノロジ)によって異なります。たとえば、アンサンブル分類で、トレーニングと検証(テストではない)セットが最後に結合されるいくつかのアプローチを見てきました。検証でも主にハイパーパラメーターを決定するために使用されることを知ることは非常に重要です。これらのハイパーパラメーターの一部は、トレーニングに使用されるデータの関数である可能性があります。たとえば、停止するタイミングを知るために使用されていたDNN検証では、ネットワークのパラメーター(重み)をチューニングし続けるとオーバーフィットが発生する可能性があるため、いつ停止するかを知る方法が必要です。検証セットがないと、トレーニングプロセスで盲目的に歩くことになります。一方、前に指定したのとまったく同じ数の反復を使用すると、これらの追加のサンプルから得られない可能性が高くなります。上記のように、テストセットに触れないでください。テストセットがないと、モデルを評価する方法がありません。これはギャンブルです。実際のデータ分布(テストデータによって表される)の精度を推定せずに、モデルやソリューションを提供することはできません。


トレーニングデータでトレーニングし、検証データでハイパーパラメーターを調整し、モデルに基づいてテストデータを選択した後、モデル全体に​​データをトレーニングできますか?または、ハイパーパラメーター調整が完了した後でトレーニングデータと検証データを組み合わせて、テストデータを使用して精度を推定できますか?間違って書いてしまったことをお詫びします。今それを修正しました。
Apoorva Abhishekh 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.