テストセットと検証セットの違いは何ですか?


431

Matlabでニューラルネットワークツールボックスを使用すると、このことがわかりにくくなりました。
生データセットを3つの部分に分割しました。

  1. トレーニングセット
  2. 検証セット
  3. テストセット

多くのトレーニングまたは学習アルゴリズムでは、データは多くの場合、トレーニングセットとテストセットの2つの部分に分かれています。

私の質問は:

  1. 検証セットとテストセットの違いは何ですか?
  2. 検証セットは本当にニューラルネットワークに固有ですか?または、オプションです。
  3. さらに進むと、機械学習のコンテキストでの検証とテストに違いはありますか?

56
質問は、書籍「統計学習の要素 222」回答されてます。検証セットは、モデル選択、最終モデル(選択プロセスによって選択されたモデル)予測エラーのテストセットに使用されます。
mpiktas

@mpiktas「モデルの評価と選択」の章を参照していますか?
セルドール

2
はい。ページ番号は第5版からのものでした。
mpiktas

13
@mpiktasがスポットです。実際のテキストは次のとおりですThe training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
。–

回答:


254

通常、教師あり学習を実行するには、2種類のデータセットが必要です。

  1. 1つのデータセット(「ゴールドスタンダード」)には、入力データと正しい/予想される出力があります。このデータセットは、通常、人間または半自動化された方法でデータを収集することによって適切に準備されます。ただし、ここではすべてのデータ行について期待される出力を得ることが重要です。これは、教師あり学習のために必要なためです。

  2. モデルを適用するデータ。多くの場合、これはモデルの出力に関心があるデータであるため、ここにはまだ「期待される」出力はありません。

機械学習を実行しながら、次のことを行います。

  1. トレーニングフェーズ:「ゴールドスタンダード」からのデータを提示し、入力を予想される出力とペアにしてモデルをトレーニングします。
  2. 検証/テストフェーズ:モデルのトレーニングの程度を推定するため(データのサイズ、予測したい値、入力などに依存)、モデルのプロパティを推定します(数値予測子の平均誤差、分類子の分類エラー、IRモデルの再現率と精度など)
  3. アプリケーションフェーズ:新しく開発したモデルを実際のデータに適用して、結果を取得します。通常、このタイプのデータには参照値がないため(そうでなければ、なぜモデルが必要なのでしょうか?)、検証フェーズの結果を使用して、モデル出力の品質について推測することしかできません。

検証フェーズは、多くの場合2つの部分に分割されます

  1. 最初の部分では、モデルを見て、検証データ(=検証)を使用して最高のパフォーマンスのアプローチを選択するだけです。
  2. 次に、選択したアプローチ(=テスト)の精度を推定します。

したがって、50/25/25への分離。

いくつかの競合するアプローチから適切なモデルを選択する必要がない場合、トレーニングされたモデルの検証を実行せずに、基本的にトレーニングセットとテストセットのみがあるセットを再パーティションできます。私は個人的にそれらを70/30に分割します。

この質問も参照してください。


21
検証セットを完全に削除して、テストセットに基づいて最高のパフォーマンスモデルを選択しないのはなぜですか?
セバスチャングラフ14年

4
それは過剰適合のためですか?それとも、単にエラー推定のために、テスト結果に基づいた独立した統計が必要なのでしょうか?
セバスチャングラフ

12
@Sebastian [テストセットのみを使用する場合:] "最終的に選択されたモデルのテストセットエラーは、真のテストエラーを過小評価することがあります。[Hastie et al]
-user695652

23
検証セットは、ハイパーパラメーターを調整するためによく使用されます。たとえば、ディープラーニングコミュニティでは、ネットワークレイヤーサイズ、非表示のユニット番号、正則化期間(L1またはL2のいずれか)の
調整

2
セットを分割する正しい方法は何ですか?選択はランダムにする必要がありますか?類似の写真がある場合はどうなりますか?これは一般化する能力を損ないませんか?2つのセットを別々の場所で撮影している場合、1つをトレーニングセットとして、もう1つをテストセットとして撮影する方が良いでしょうか?
ヨナタンシムソン

263

トレーニングセット:学習に使用するサンプルのセット:分類器のパラメーターを適合させるため多層パーセプトロン(MLP)の場合、トレーニングセットを使用して、back-propルールで「最適な」重みを見つけます。

検証セット:分類器のパラメーターの調整に使用される一連の例MLPの場合、検証セットを使用して、隠れたユニットの「最適な」数を見つけるか、逆伝播アルゴリズムの停止点を決定します。

テストセット:完全に訓練された分類器のパフォーマンスを評価するためにのみ使用される一連の例MLPの場合、最終モデル(MLPサイズと実際の重み)を選択した後、テストを使用してエラー率を推定します。テストセットの最終モデルです。これ以上モデルを調整しないでください。

テストセットと検証セットを分離する理由 検証セットは最終モデルを選択するために使用されるため、検証データの最終モデルのエラー率推定値にはバイアスがかかります(真のエラー率よりも小さい)。テストセットで最終モデルを評価した後、モデルを調整しないでください。さらに!

出典:パターン分析入門、リカルドグティエレス-オスナテキサスA&M大学、テキサスA&M大学


42
+1「これ以上モデルを調整してはいけません!」
stmax

6
「パラメータを合わせる」と「パラメータを調整する」の違いは何ですか?
Metariat

18
@stmaxはつまらないものではありませんが、最終的なテストエラーがあり、結果に満足できない場合、モデルをさらに調整できない場合はどうすればよいでしょうか?...このケースについてよく疑問に思います。
スペイシー

5
@Tarantulaではモデルの調整を続けることができますが、新しいテストセットを収集する必要があります。もちろん、誰もそれをしません;)しかし、それに違反すると(特にそれを数回繰り返す場合)、テストセットに適合するモデルにつながる可能性があります-結果として非現実的/楽観的なスコアになります。
stmax

4
この命名法は紛らわしいと思います。テストセットを使用した後、「モデルをこれ以上調整しないでください」と言うのは正しいことですが、...どうするつもりですか?作業を停止しますか?実際には、テストセットの階層全体が必要です。1:検証セット-モデルの調整に使用、2:テストセット、モデルの評価に使用し、図面ボードに戻る必要があるかどうかを確認、3:スーパーテストセット、最終最終アルゴリズムで使用して方法を確認4:ハイパーテストセット。研究者が10年間MNISTアルゴリズムを開発した後、それらがどれほどクレイジーにオーバーフィットするかなどを確認するために使用されます。など。
Timmmm

66

コンピューターサイエンスでの5年間の経験から、単純さほど優れているものはないことがわかりました。

「トレーニング/交差検証/テスト」データセットの概念はこれと同じくらい簡単です。大きなデータセットがある場合は、3つの部分に分割することをお勧めします。

++トレーニングセット(元のデータセットの60%):これは、予測アルゴリズムを構築するために使用されます。アルゴリズムは、トレーニングデータセットの癖に合わせて調整しようとします。このフェーズでは、通常、クロス検証フェーズでのパフォーマンスを比較するために複数のアルゴリズムを作成します。

++ Cross-Validationセット(元のデータセットの20%):このデータセットは、トレーニングセットに基づいて作成された予測アルゴリズムのパフォーマンスを比較するために使用されます。最高のパフォーマンスを持つアルゴリズムを選択します。

++テストセット(元のデータセットの20%):望ましい予測アルゴリズムを選択しましたが、完全に見えない実際のデータでどのように実行されるかはまだわかりません。そのため、選択した予測アルゴリズムをテストセットに適用して、それがどのように実行されるかを確認し、見えないデータに対するアルゴリズムのパフォーマンスを把握できるようにします。

ノート:

-クロス検証フェーズで適切に実行されたアルゴリズムは、アルゴリズムがクロスに基づいて比較されるため、本当に最適なアルゴリズムであるとは限らないため、テストフェーズをスキップすることはお勧めできません。 -検証セットとその癖とノイズ...

-テストフェーズ中の目的は、最終モデルが実際にどのように処理されるかを確認することです。そのため、パフォーマンスが非常に低い場合は、トレーニングフェーズからプロセス全体を繰り返す必要があります。


1
セットをフェーズと呼び、フェーズをフェーズと呼ぶのは簡単でわかりにくいです。
マットオブライエン

2
@innovIsmail検証手順をスキップするとどうなりますか?多くのアルゴリズムがあり、それらをトレインセットでトレーニングし、それらすべてをテストセットに適用し、テストセットで最高のパフォーマンスを発揮するアルゴリズムを選択するとします
-KevinKim

3
あなたはテストステップをスキップしているように思えます。
ミハイダニラ

1
>予測アルゴリズムのパフォーマンスを比較する-このコンテキストでの「アルゴリズム」とは何ですか?モデルはアルゴリズムではありませんか?複数のモデルを構築し、それらを個別にトレーニングして、検証する複数のフェーズを取得する必要がありますか?
Boppity Bop

2
この単純さは幻想です。なぜなら、非巨大なサンプルサイズの状況では、ランダムな分割が繰り返された場合、かなり異なる予測アルゴリズムと検証結果が得られるからです。
フランクハレル

33

決定を行うように求められる各ステップで(つまり、複数のオプションから1つのオプションを選択する)、選択の精度を評価するための追加のセット/パーティションが必要です。分布の末尾をセンター1と間違えます。左は悲観論者です。権利は楽観主義者です。中心は実用主義者です。実用主義者になりましょう。

ここに画像の説明を入力してください

手順1)トレーニング:各タイプのアルゴリズムには、独自のパラメーターオプション(ニューラルネットワークのレイヤー数、ランダムフォレストのツリー数など)があります。アルゴリズムごとに、1つのオプションを選択する必要があります。それがトレーニングセットを持っている理由です。

ステップ2)検証:アルゴリズムのコレクションができました。1つのアルゴリズムを選択する必要があります。それがテストセットを持っている理由です。ほとんどの人は、検証セットで最高のパフォーマンスを発揮するアルゴリズムを選択します(それでも構いません)。しかし、テストセットで最高のパフォーマンスを発揮するアルゴリズムのエラー率を測定せず、検証セットでエラー率をそのまま使用すると、「最も可能性の高いシナリオ」を「最も可能性の高いシナリオ」と誤解してしまいます。それは災害のレシピです。

ステップ3)テスト:アルゴリズムにパラメーターがない場合、3番目のステップは必要ないと思います。その場合、検証ステップがテストステップになります。おそらく、Matlabはパラメーターを要求しないか、パラメーターを使用しないことを選択したため、混乱の原因になります。

1すべてのオプションが同じ(たとえば、すべてのパラメーターが同じ、またはすべてのアルゴリズムが同じ)であるという仮定(帰無仮説)で各ステップに進むと役立つことが多いため、分布を参照します。

2この画像は自分のものではありません。私はこのサイトからそれを取っていますhttp://www.teamten.com/lawrence/writings/bell-curve.png


3
最初の文は、この質問に対する基本的な答えを他のどの答えよりもうまく捉えていると思います。「決定を行うように求められる各ステップ(つまり、いくつかのオプションから1つのオプションを選択する)で、選択の精度を測定するための追加のセット/パーティションが必要です...」
kobejohn

質問:最高のRandomForest(RF)を見つけたい場合、RFのハイパーパラメーターはツリーの数(N)だけであると仮定し、ステップ1で異なるNで多くのRFを実行してフォレストを構築します; 手順2で検証テストに適用し、検証テストよりもエラーが最も少ないN *のRFを選択します。その後、手順3でテストセットにN *のRFを適用し、このRFの真のテストエラーの不偏推定値を取得します。 N *。ただし、すべてのRFをテストセットに適用し、テストエラーが最も少ないもの(N *ではない可能性があります)を選択できます。それが検証ステップ2を行うポイントですか?
ケビンキム

1
@KevinKim:すべてのRFにテストセットを適用し、その結果を使用してさらに選択を行う(別のモデルを選択する)場合は、検証手順を繰り返しただけです。「モデルで最小のエラーを取得する必要があります!」に心を決めました。それがテストではなく、トレーニングと検証のポイントです。テストの目的は、トレーニングとモデルの選択だけです。次に、「一般的な」パフォーマンスを見てみましょう。明らかに、「一般的な」テストセットは、オーバーフィットする場合としない場合があるデータの単なるスライスですが、ポイントは、選択によってモデルを意図的にオーバーフィットしていないことです。
ハニーベア

3分割は、非常に一般的なアプローチです(A)モデルが(B)限られた労力で、(C)限られた観測データを一般化する方法のアイデアを提供します。(B)の点でもっとうまくしたい場合は、提案されていることを行うことができます。異なる検証セットを使用して、一般化のために微調整します。クロスバリデーションと呼ばれる限られたデータで:さまざまなトレーニングとテストセットでトレーニングと検証を繰り返します(トレーニングに数週間かかる可能性があるニューラルネットワークの場合、これは問題ではありません)。
ハニーベア

1
しかし、「現実の世界」でモデルがどのように機能するかはまだ不明です。これは、検証されてテストされた仮定であり、目に見えないデータでうまく機能することであり、科学的な目的のためには通常これで十分と見なされます。検証セットとテストセットが完全に適合するまで、再びモデルを生成して選択すると、テストセットを検証セットに縮退しました。そのために、相互検証を行う方が良いでしょう。テストセットでパフォーマンスが常に著しく低下する場合は、常にデータがひどく分割されているので、セットを再シャッフルして再起動することをお勧めします。
ハニーベア

21

何らかの方法でデータを分割する必要があるということにはなりません。ブートストラップは、モデルの開発とテストの両方にサンプル全体を使用して、予測精度の平均二乗誤差推定値を小さくすることができます。


1
したがって、予測モデルのテスト/検証のために大規模なデータセットを分割することで相互検証を提唱しないのですか?
OFish 14

9
いいえ、データセットが巨大であるか、信号:ノイズ比が高い場合を除きます。クロスバリデーションは、私の経験ではブートストラップほど正確ではなく、サンプルサイズ全体を使用しません。多くの場合、適切な精度を達成するには、相互検証を50〜100回繰り返す必要があります。ただし、データセットには20,000を超える被験者が含まれているため、分割サンプル検証などの単純なアプローチで問題ないことがよくあります。
フランクハレル14

2
知っておくと良いことです!ありがとう。そしてあなたから来て、それは情報の素晴らしい「ソース」です。乾杯!
OFish 14

1
分割サンプル検証は、厳密なブートストラップよりもパフォーマンスが悪いことがよくあります。すべての教師あり学習ステップ(Yを使用するすべてのステップ)を繰り返す外部ブートストラップの外観を作成します。Efron-Gong楽観的ブートストラップは、予測モデルがアルゴリズムで認識されないデータでどれだけバラバラになるかを、データを抑えずに推定します。
フランクハレル

1
はい、繰り返しに重点を置いています。問題となるのは単一の分割です。
フランクハレル

13

典型的な機械学習タスクは、次のネストされたループとして視覚化できます。

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

典型的には、外側のループをすることにより行われる、ヒトに、検証セットとによって内部ループマシン上で、トレーニングセット。次に、モデルの最終的なパフォーマンスを評価するための3番目のテストセットが必要です。

つまり、検証セットは人間向けのトレーニングセットです。


9

これらの3つのセットを考える1つの方法は、2つ(trainingおよびvalidation)が過去のものであるのに対し、testセットは「未来」のものであるということです。モデルは、「過去」のデータ(training/ validationdata)を使用して構築および調整する必要がありtestますが、「将来」のデータは使用しないでください。

実用的な例を挙げるために、野球選手が将来どの程度うまくいくかを予測するモデルを構築するとしましょう。1899-2014のデータを使用してtestvalidationセットを作成します。モデルが構築され、それらのデータに基づいて調整されたら、2015年(実際には過去に!)のデータをテストセットとして使用します。 。(明らかに、理論的には、本当に必要な場合は2016年のデータを待つことができます!)

データの実際の時間的順序が実際の未来と一致しない可能性があるため、明らかにどこでも引用符を使用しています(定義により、おそらくすべてのデータ生成は実際の過去に行われました)。実際には、testセットは単純にtraining/ validationセットと同じ期間のデータである可能性があり、「保留」されます。このように、それはモデルの調整に影響を与えませんでしたが、それらのデータを保持することは実際には未来から来ていません。


4
他のすべての答えを読んだ後、この答えは私にとって「クリック」しました!トレインセットを使用してトレーニングし、検証セットで過剰適合していないこと(およびモデルとハイパーパラメーターが「不明なデータ」で機能すること)を確認し、テストセット-「新しいデータ」で評価します。予測力がある..!
stolsvik

これは、testデータがトレーニングプロセスの一部であってはならないという意味でそれを見るための公正な方法です。「将来の」データとして扱うと、それは間違いなく間違いを犯します。
javadba

7

ほとんどの教師付きデータマイニングアルゴリズムは、次の3つの手順に従います。

  1. トレーニングセットは、モデルを構築するために使用されます。これには、事前に分類されたターゲット変数と予測変数を持つデータのセットが含まれます。
  2. 通常、ホールドアウトデータセットまたはテストセットを使用して、トレーニングセット外のデータに対するモデルの性能を評価します。テストセットには事前に分類された結果データが含まれますが、事前に分類されたデータがモデル結果と比較される最後まで、テストセットデータがモデルを通過する場合は使用されません。モデルは、テストセットのエラーを最小限に抑えるように調整されます。
  3. 別のホールドアウトデータセットまたは検証セットを使用して、ステップ2で調整済みモデルを評価します。ここでも、検証セットデータが調整済みモデルに対して実行され、結果は未使用の事前分類データと比較されます。

4

検証セットを使用する理由について混乱している人もいるので、検証データセットを使用しないとどうなるかについて、簡単で直感的な説明をします。

検証セットを使用しない場合は、代わりにハイパーパラメーターを選択し、テストデータセットのモデルのパフォーマンスに基づいてトレーニングを停止するタイミングを決定する必要があります。テストデータセットのモデルのパフォーマンスに基づいてトレーニングを停止するタイミングを決定した場合、モデルがテストデータセットで適切に実行されたときにトレーニングを停止できます。次に、結果を報告するときに、テストデータセットの精度を報告します。これに関する問題は、実際にはテストセットでより良い結果をもたらしたのはランダムな変動であるにもかかわらず、モデルが本当にうまくいったと言うことができるということです。

代わりに検証セットを使用してトレーニングを停止するタイミングを決定する場合、テストセットのモデルの精度は、一般にタスクでどれだけうまく実行されるかを偏りなく反映しており、最適化されていないことを示していますテストセットでうまく機能するためのモデル。


2

ここでは、「差別的プライバシー」と呼ばれる機械学習の比較的新しいアプローチを示すことで、他の非常に良い答えを追加したいと思います(Dworkの論文を参照してください。詳細はWin Vectorブログをご覧ください)。このアイデアにより、最終モデルのパフォーマンスを損なうことなく、テストセットを実際に再利用できます。一般的な設定では、テストセットは最終的なパフォーマンスを推定するためにのみ使用されます。理想的にはそれを見ることさえ許されていません。

このWin Vectorブログで詳しく説明されているように(他のエントリも参照)、モデルのパフォーマンスにバイアスをかけずにテストセットを「使用」することができます。これは、「差分プライバシー」と呼ばれる特別な手順を使用して行われます。学習者はテストセットに直接アクセスできません。


-1

私の考えは、ニューラルネットワークツールボックスのこれらのオプションは、過剰適合を回避するためのものです。この状況では、重みはトレーニングデータに対してのみ指定され、グローバルトレンドを表示しません。検証セットを持つことにより、反復はトレーニングデータエラーの減少が検証データの減少と検証データエラーの増加を引き起こす場所に適応できます。トレーニングデータエラーの減少とともに、これは過剰適合現象を示しています。


テストセットがプロセス全体に健全性チェックを追加することを敢えてします。すべてのエポックで検証/損失曲線を複製するトレーニング曲線を作成できます。しかし、エポックや戦車でテストセットの精度が改善されない場合は、何の役にも立ちません。過剰適合です。
agcala
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.