トレーニングおよび検証データのパフォーマンスは良いが、テストデータのパフォーマンスは非常に悪い


8

5-6kの変数で回帰問題があります。データを重複しない3つのセット(トレーニング、検証、テスト)に分割します。私はトレーニングセットのみを使用してトレーニングを行い、モデルごとに異なる200変数のセットを選択することで、多くの異なる線形回帰モデルを生成します(このようなサブセットを約100k試します)。モデルにとしてスコアを付け。この基準を使用して、最終的にモデルを選択します。選択したモデルは、トレーニングデータと検証データで非常に類似したR ^ 2を持っていることがわかります。ただし、このデータをテストデータで試した場合、R ^ 2ははるかに低くなります。だから私は、トレーニングと検証データの両方に何らかの形で過剰適合しているようです。より堅牢なモデルを取得するにはどうすればよいですか? min(Rtraining data2,Rvalidation data2)R2R2

トレーニングデータのサイズを増やしてみましたが、効果がありませんでした。おそらく、各サブセットのサイズを縮小することを考えています。

正則化を使用してみました。ただし、投げ縄または弾性ネットを使用して取得したモデルは、サブセット選択アプローチを実行して取得したモデルと比較して、トレーニングセットと検証セットのR ^ 2がはるかに低くなっR2ています。したがって、これらのモデルは考慮しません。モデルAがトレーニングセットと検証セットの両方でモデルBよりも優れている場合、モデルAはモデルBよりも明らかに優れていると想定しているためです。これに同意しません。

関連して、R2は私のモデルを選択するための悪い基準だと思いますか?

回答:


5

これは過剰適合のように聞こえますが、実際には、コードまたはプロセスに何らかの「バグ」がある可能性が高いと思います。まず、テストセットがトレーニング/検証セットと何らかの形で体系的に異なっていないことを確認します。データが日付(またはその他)でソートされているとします。最初の50%をトレーニングに使用し、次の25%を検証に使用し、残りをテストに使用した場合、トレーニングデータが検証データをある程度表すような方法でデータを誤って階層化した可能性がありますが、テストデータ。これは偶然に行うのはかなり簡単です。

また、偶発的に発生することもある検証データの「ダブルディッピング」が発生しないようにする必要もあります。

あるいは、CV自身の@Frank Harrellは、単一の列車/テストの分割は、システムのパフォーマンスに関する有用な情報を提供するにはあまりにも可変的であることが多いと報告しています(多分、彼は引用またはいくつかのデータを考慮に入れることができます)。精度の測定値の平均と分散の両方を測定できるようにする、相互検証やブートストラップなどを行うことを検討する場合があります。

ミケラとは異なり、問題はあなたの採点メカニズムではないと思います。そうは言っても、ような状況は想像できないので、検証データのみを使用してスコアリングすることをお勧めします。Rtrag2<Rvaldato2

より一般的には、などの連続出力モデルのパフォーマンスを測定するには、その潜在的な注意点を知っていることを前提として、が妥当な選択だと思います。正確に何をしているのかに応じて、最大または最悪の場合のエラーも確認することもできます。出力を何らかの方法で離散化している場合(ロジスティック回帰、一部の外部しきい値)、精度/再現率/ AUCを調べることをお勧めします。R2


返信ありがとうございます。私は確かにデータを日付順にソートしています。それを3つの部分に分け、最初の部分をトレーニングに、次の部分を検証に、最後の部分をテストに使用します。私のアプリケーションでは、トレーニングと検証セットの後にテストデータが常に時系列になりますが、好きなようにトレーニングと検証セットを混在させることができます(相互検証の実行を含む)。相互検証を試してみましょう。ただし、トレーニングセットと検証セットの両方のがかなり近いため、それがうまくいくとは思いません。<残りのコメントは次のコメントに続きます>R2
user10

また、さまざまな日の分散も確認します。差異が大きい場合は、相互検証が役立つと思います。そうでなければ、私がすでに持っているような検証セットを持っていることと同様の結果を与えると私は期待します。再度、感謝します!R2
user10

順序自体は問題ではありません。それは、トレーニングセットがテストセットよりも検証セットをより代表する可能性があるということです。たとえば、店舗の売上を予測しているとします。トレーニングセットに6月、7月、8月が含まれている場合、9月の売上予測(検証セット)も適切に機能します。人々が代わりなどショートパンツや日焼け止め、のクリスマスプレゼントと冬服を購入している:11月と12月の売上高に試験したときしかし、それは完全にバラバラになるかもしれない
マット・クラウス

1

min(training r-square,validation r-square)データを使用してスコアを生成しているため、モデルの選択を促進するために使用されているため、過剰適合です。トレーニングr-squareは同等かそれ以下になる可能性が高いため(結局、回帰を実行しただけです)、これはトレーニングデータのr-squareでモデルを選択することとほぼ同じです。

これは、トレーニングデータにきつすぎて適合し、検証データを無視する効果があります。

ちょうどvalidation r-squareそれを使用した場合、より良い結果が得られるはずです。


しかし、それが検証データセットを持つことのポイントではないでしょうか。検証でエラーの少ないモデル(つまり、サンプル外)を設定したモデルを選択するだけではいけませんか?
user10

ごめんなさい、あなたの質問を少し読み間違えました。答えを修正しました。
mikera 2013

回帰を実行したので、トレーニングは通常、検証より大きくなるはずです。また、最小値を使用しているので、検証セットを使用してモデルを選択するのと同じではありませんか?たまたま、minを使用しているため、トレーニングと検証の両方に優れた得られますが、これは残念ながらテストセットにはなりません。ありがとう!R 2 R 2R2R2R2
user10
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.