データをトレーニングセットとテストセットに分割するだけでは不十分な理由


18

分類器のパフォーマンスにアクセスするには、データをトレーニング/テストセットに分割する必要があることを知っています。しかし、これを読んで

SVM用に手動で設定する必要があるC設定など、推定器のさまざまな設定(「ハイパーパラメーター」)を評価する場合、推定器が最適に実行されるまでパラメーターを微調整できるため、テストセットでオーバーフィットするリスクが依然としてあります。この方法では、テストセットに関する知識がモデルに「漏れ」、評価メトリックが一般化パフォーマンスについてレポートしなくなります。この問題を解決するために、データセットのさらに別の部分をいわゆる「検証セット」として保持することができます。トレーニングはトレーニングセットで進行し、その後検証セットで評価が行われ、実験が成功したと思われる場合、テストセットで最終評価を行うことができます。

ハイパーパラメーターの調整中にテストセットをオーバーフィットすることで正当化される、別の(3番目の)検証セットが導入されていることがわかります。

問題は、この過剰適合がどのように表示されるかを理解できないため、3番目のセットの正当性を理解できないことです。


2
ここでの混乱の多くは、「検証」という用語の2つまたは3つのかなり異なる意味から来ていると思います。相互検証の検証は、ほとんどの場合、置換なしの分割手順の単なる名前です。引用されたテキストの「検証」セットは、「チューニング」または「最適化セット」としてよりよく理解されるでしょう。一方、工学や分析化学などでの「検証」とは、特定の最終メソッドが目的に適合していることを証明することを意味します。(私にとって、テストは検証よりもはるかに最終的なものではありません...)
cbeleitesはMonicaをサポートします

回答:


17

トレーニングデータのみでモデルをトレーニングしている場合でも、テストセットに基づいてハイパーパラメーター(SVMのなど)を最適化しています。そのため、パフォーマンスの推定値は楽観的である可能性があります。これは、基本的にベストケースの結果を報告しているためです。このサイトの一部ですでに述べたように、最適化は統計上のすべての悪の根源ですC

パフォーマンスの推定は、常に完全に独立したデータで行う必要があります。テストデータに基づいていくつかの側面を最適化する場合、テストデータは独立していないため、検証セットが必要になります。

これに対処する別の方法は、相互にラップされた2つの相互検証手順で構成されるネストされた相互検証によるものです。内側の交差検証はチューニングで使用され(最適化されたハイパーパラメーターの特定のセットのパフォーマンスを推定するため)、外側の交差検証は機械学習パイプライン全体の一般化パフォーマンスを推定します(つまり、ハイパーパラメーターの最適化+最終モデルのトレーニング) )。


私は間違っている可能性がありますが、テストセットはハイパーパラメーターのチューニングだけでなく、たとえば回答で示したように、LDAやランダムフォレストと比較したSVMのパフォーマンスなど、さまざまなタイプの手法の比較にも使用されます。

@fcoppensはい、間違いなく。これについては明示的に言及しませんでしたが、それは確かにそのステップにも当てはまります。
マーククレセン

1
より一般的には、ここでのチューニングまたは最適化は、あらゆる種類のデータ駆動型(内部相互検証による)プロセスです。
cbeleitesはモニカをサポートします

@MarcClaesen質問があります。ハイパーパラメーターの2つの異なる値があり、これらの2つのモデルをトレーニングセットに適合させ、テストセットに適用した場合、テストセットで得られたエラー率が、これら2つのモデル?別の独立したテストデータセットを提供してくれた場合、この新しいテストデータセットは本質的に以前のテストセットと同じだからです。そのため、モデルのテストスコアが優れている場合、新しいテストデータセットで他のモデルよりも優れている必要があります。検証セットが必要な理由
ケビンキム

「テストデータに基づいていくつかの側面を最適化する場合、テストデータは独立していないため、検証セットが必要になります。」それは洞察に満ちています
スディップバンダリ

11

このように物事を考えるのが最も簡単だと思います。クロス検証は、モデル/アルゴリズムのハイパーパラメーター調整、およびモデル/アルゴリズムのパフォーマンス評価に使用されます。

アルゴリズムの実際のトレーニングの一部として最初の使用を検討してください。たとえば、GLMの正則化強度を決定するための相互検証は、GLMの最終結果を確立する一環です。この使用法は通常、内部相互検証と呼ばれます。(ハイパー)パラメーターはまだ設定されているため、チューニングセットの損失は実際のアルゴリズムのパフォーマンスの優れた尺度ではありません。

クロス検証の2番目の使用法は、モデルを作成したプロセス全体で保持されたデータを使用して、予測力をテストすることです。このプロセスは、外部相互検証と呼ばれます。

内部検証は、モデルを作成したプロセスの一部である可能性があるため、多くの場合、内部および外部の両方の相互検証が必要であることに注意してください。


個人的には、「外部相互検証」という語句は使用しません。クロス検証は、モデルの選択と調整のためにトレーニングセットからさまざまな検証セットを繰り返し分割するためです。これは、最終モデルのパフォーマンスを判断するために使用される未知のデータの将来の一時的なプロキシとして、テストセットでこれを繰り返し行うことは意味がありません。
ヘンリー

3
ヘンリー、あなたは外部の相互検証を理解しているとは思わない。「テストセットでこれを繰り返し行う」ことができます。テスト目的で完全なデータの一部を繰り返し保持しながら、残りの部分で完全なトレーニング手順を実行します(内部相互検証を含む場合があります)。通常、外部相互検証は通常、フォールドで行われ、元のデータのすべてをある時点でテストセットに含めることができます。
jlimahaverford

αα

2

モデルの構築中に、トレーニングサンプルでモデルをトレーニングします異なるモデルトレーニングできることに注意してください(つまり、SVM、LDA、ランダムフォレストなどの異なる手法、またはチューニングパラメーターの値が異なる同じ手法、または混合)。

トレーニングしたすべての異なるモデルの中から1つ選択する必要があるため、検証サンプルを使用して、テストサンプルでエラーが最小のモデルを見つけます。

この「最終」モデルでは、まだ誤差推定する必要があるため、テストサンプルを使用します


1
2番目と3番目の段落の文言を逆にします:検証セットを使用して最適なモデルを見つけ、そのハイパーパラメーターを調整します(トレーニングセットを分割するいくつかの検証セットでこれを行い、この相互検証を行います)。確定したら、テストセットに適用して、モデルのサンプル外パフォーマンスの例を確認します。
ヘンリー

@ヘンリー:OKヘンリー、フェーズのラベルはシーケンス/コンテンツより重要ではないと思いますが、あなたの発言は私にとって理にかなっています、テキストを編集します、ありがとう(+1)、

1

交差検定は、モデル選択における過剰適合の問題を完全に克服するものではなく、単に減らすだけです。相互検証エラーは、使用するデータセットによって異なります。データセットが小さいほど、相互検証エラーが大きくなります。

さらに、モデル選択の自由度が高い場合、相互検証基準がオーバーフィットするため、モデルのパフォーマンスが低下する危険があります。

したがって、データが2つのセット(トレーニングセットとテストセット)に分割されると、分割は静的に行われます。そのため、トレーニングセットが過剰に適合する可能性があります。ただし、クロス検証セットは、k分割クロス検証、Leave-out-one-cross-validation(LOOCV)などのさまざまな方法で作成されます。これにより、2セット分割の正確な適合報酬が確実に排除されます。したがって、オーバーフィットの可能性が減少します。

これらは、理解を深めるのに役立つリソースです。

そのため、小さいデータセットではなく、大きなデータセットがある場合にクロス検証が役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.