相互検証後の完全なデータセットでのトレーニング?


140

相互検証後に完全なデータセットでトレーニングすることは常に良い考えですか?別の言い方をすれば、データセット内のすべてのサンプルでトレーニングを行って、この特定のフィッティングがオーバーフィットするかどうかを確認できないのですか?


問題の背景:

私が持っていると言うモデルの家族によってパラメータ。また、データポイントのセットがあり、データを最も一般化するモデルを選択するために、k分割交差検証を使用してモデル選択を行うとします。αN

モデルの選択では、たとえば、各候補に対してk分割交差検証を実行することにより、検索(たとえば、グリッド検索)を実行できます。交差検証の各フォールドで、学習モデルます。α βα

交差検証のポイントは、これらの各フォールドについて、「見えないデータ」でテストすることにより、学習したモデルに過剰適合があるかどうかを確認できることです。結果に応じて、グリッド検索でのクロス検証中に最適化されたパラメーターについて学習したモデル選択できます。βbestαbest

ここで、モデルの選択後に、データセット内のすべてのポイントを使用、できればより良いモデルを学習したいと考えています。このために、モデル選択中に選択したモデルに対応するパラメーター使用し、完全なデータセットでトレーニングした後、新しい学習モデル取得します。問題は、トレーニングのためにデータセットのすべてのポイントを使用 する場合、この新しい学習モデル目に見えないデータにオーバーフィットするかどうかを確認できないことです。この問題を考える正しい方法は何ですか?Nαbestβfull βfull


2
ほぼ正確な複製:stats.stackexchange.com/questions/52274にふさわしい答えがたくさんあります。おそらくこれらのスレッドをマージする必要がありますが、どの方向に行くのかわかりません。どちらも非常に良い答えを受け入れました。
アメーバ

回答:


111

相互検証の考え方は、モデルのパフォーマンスを推定するためではなく、モデルの構築方法を使用して得られたパフォーマンスを推定することです。

クロス検証を使用してモデル( s)のハイパーパラメーターを推定し、それらのハイパーパラメーターを使用してモデルをデータセット全体に適合させる場合、クロス検証推定が認識されれば問題ありませんパフォーマンスの(おそらく実質的に)楽観的に偏っている可能性があります。これは、交差検証のパフォーマンスを最小化するためにモデルの一部(ハイパーパラメーター)が選択されているためです。そのため、交差検証の統計にゼロ以外の分散がある(および分散する)場合、過剰適合の可能性がありますモデル選択基準。α

ハイパーパラメーターを選択して、結果のモデルのパフォーマンスを推定する場合は、ネストされたクロス検証を実行する必要があります。この場合、外側のクロス検証を使用してモデルのパフォーマンスを評価し、検証は、各フォールドのハイパーパラメーターを個別に決定するために使用されます。セット全体で交差検証を使用してハイパーパラメーターを選択し、最適化されたハイパーパラメーターを使用してデータセット全体で分類器を作成することにより、最終モデルを構築します。

もちろん、これは計算コストがかかりますが、不適切なパフォーマンス推定によって生じるバイアスが大きくなる可能性があるため、価値があります。私の論文を見る

GC CawleyおよびNLC Talbot、モデル選択の過剰適合とパフォーマンス評価におけるその後の選択バイアス、Journal of Machine Learning Research、2010年。Research、vol。11、pp。2079-2107、2010年7月。(wwwpdf

ただし、モデルの選択に過剰適合がある可能性があります(ネストされた交差検証では、テストすることができます)。私が有用だとわかった方法は、過度に複雑なモデルをもたらす可能性が高いハイパーパラメーター値にペナルティを科す正則化項をクロス検証エラーに追加することです。

GC CawleyおよびNLC Talbot、ハイパーパラメータのベイズ正則化によるモデル選択の過剰適合の防止、Journal of Machine Learning Research、第8巻、841〜861ページ、2007年4月。(wwwpdf

したがって、あなたの質問に対する答えは、(i)はい、使用するデータが多いほどよく一般化される可能性が高いため、完全なデータセットを使用して最終モデルを作成する必要がありますが、(ii)ネストされた交差検証を行い、モデル選択での過剰適合をさらに回避するために、交差検証統計にペナルティを課すことを潜在的に検討します。


3
+1:「クロス検証を使用してモデル(α)のハイパーパラメーターを推定し、それらのハイパーパラメーターを使用してモデルをデータセット全体に適合させる場合は問題ありません」
Neil G

4
@soufanom、いいえ、モデルに関する選択を行うための「初期実験」の使用は過剰適合をもたらす可能性が高く、ほぼ確実にパフォーマンス分析に楽観的なバイアスを導入します。パフォーマンス分析に使用される交差検定は、各フォールドでモデルを個別に当てはめる際に使用されるすべてのステップを繰り返す必要があります。私の論文の実験は、カーネルモデルがこの種の偏りに非常に敏感である可能性があることを示しています。
ディクラン有袋類

3
SVMなどのカーネルメソッドの場合、計算コストをほとんどかけずにleave-one-outクロス検証を実行できることがよくあります(回答に記載されている論文を参照)。この「仮想」leave-one-outクロス検証を使用して、ハイパーパラメーターを調整し、パフォーマンス評価のためにk倍のクロス検証でネストします。コストは非常に合理的です。私の意見では、ハイパーパラメーターの調整によってパフォーマンス評価が何らかの形で偏っている手順を使用することは受け入れられません。信頼性の高い推定値を取得するには、計算上の費用が必要です。
ディクランMarsupial

2
@DikranMarsupial。私はあなたの答えの3番目の段落をまったく得ていません。ネストされたクロス検証を行うと、外側の CVの各フォールドに対して異なるハイパーパラメーターのセットが取得されます(つまり、パラメーターのグリッドで内側の CVを実行することでハイパーパラメーターのセットが1つ取得されます)。次に、最適なハイパーパラメーターセットを選択する方法を教えてください。
アメリオバスケスレイナ

1
交差検証は、本質的に、メソッド自体ではなく、モデルを適合させるメソッドのパフォーマンスを推定する手段です。したがって、ネストされたクロス検証を実行してパフォーマンス推定値を取得した後、クロス検証した手順(ハイパーパラメーターの選択を含む)を使用して、データセット全体を使用して最終モデルを再構築するだけです。
ディクランマースピアル

23

@ mark999による回答に追加するだけで、Max Kuhnのcaretパッケージ(Classification and Regression Training)は、ブートストラップ相互検証またはN折り畳みCVおよびその他のスキームに基づくモデル選択のRで最も包括的なソースです。

rmsパッケージの素晴らしさを無視するのではなくcaret、Rで利用できるほとんどすべての学習メソッドに適合させることができますがvalidatermsメソッドでのみ動作します(と思います)。

このcaretパッケージは、データの前処理、一般的なモデルの適合および評価を行う単一のインフラストラクチャです。そのため、すべての方法に簡単に使用でき、多くのパフォーマンス測定のグラフィカルな評価を提供しますまあ)あなたのグリッドと変数の重要性。

パッケージビネットを参照して開始します(使用は非常に簡単です)キャレットを使用した
データ前処理
変数の選択
キャレット変数の重要性を使用したモデルの構築

パッケージの詳細および具体的な実装例については、キャレットWebサイトを参照することもできます。公式
キャレットWebサイト


ありがとう。モデルを選択した後(を呼び出すことで行われますtrain)、キャレットに完全なデータセットでトレーニングする方法があるかどうかを知っていますか?
アメリオバスケスレイナ

それが良いアイデアなのか、なぜそうしたいのかわからないが、trainによって返された最終モデルを完全なデータセットに適合させることができます。
モモ

16

フランク・ハレルはクロス検証ではなくブートストラップ検証を推奨すると信じています。ブートストラップ検証では、完全なデータセットに適合したモデルを検証でき、クロス検証よりも安定しています。validateHarrellのrmsパッケージを使用してRで実行できます。

詳細については、ハレルの著書「回帰モデリング戦略」および/またはエフロンとティブシラーニの「ブートストラップ入門」を参照してください。


9
「悪いCV」に関する次の神話を省くために、これは用語の問題です。Harrellの「相互検証」はN-fold CVを意味し、「ブートストラップ検証」はCVのリサンプリングを意味します。明らかに、この2番目のフレーバーはより安定で全体的に優れていることに同意しますが、これは一種の相互検証でもあります。

1
mark999または@mbq、ブートストラップを使用して完全なデータセットに適合したモデルを検証する方法について詳しく説明していただけますか?
アメリオバスケスレイナ

1
@ user27915816まあ、原理的にはどうでもいい。交差検証の背後にある考え方は、与えられたトレーニング方法が最終モデルと非常によく似たセットで良いモデルを確実に作成しているかどうかをテストし、そうであれば、奇妙なことは起こらないという静かな仮定でこの観察結果を完全なセットに一般化することですそして、あなたが使用したそのCV法は何らかの形で偏っていません。もちろんこれはほぼ常に十分ですが、あなたが持っているすべてのデータに基づいて構築されたモデルがオーバーフィットしていないことを決して確信することはできません。

14

ここにはさまざまな質問があると思います:

問題は、データセット内のすべてのポイントをトレーニングに使用すると、この新しい学習モデルがβフルオーバーフィットかどうかを確認できないことです!

重要なのは、パラメーターの最適化、(x)、または一般化パフォーマンスの推定のいずれかに対して、1つの検証ステップのみを使用できることです。

そのため、相互検証(または他の種類のデータ駆動型パラメーター決定)によるパラメーターの最適化を行う場合、これらのトレーニングおよび最適化サンプルとは独立したテストサンプルが必要です。Dikranはネストされた相互検証と呼ばれ、別の名前は二重相互検証です。または、もちろん、独立したテストセット。

それで、この投稿の質問は次のとおりです。k倍交差検証後、完全なデータセットでトレーニングすることをお勧めしますか?または、代わりに、αbestの相互検証分割の1つで学習したモデルの1つに固執する方が良いでしょうか?

相互検証モデルのいずれかを使用すると、通常より悪いフルセットでトレーニングよりも(自分の学習曲線のパフォーマンス= F(nsamples)は、まだ実際には増加している、少なくとも場合、それは次のようになります。それがなかった場合、あなたはおそらく設定されているだろう独立したテストセットは別として)

クロス検証モデル間で(同じパラメーターを使用して)大きな変動が見られる場合、モデルは不安定です。その場合、モデルを集約することは、データ全体でトレーニングされた1つのモデルを使用するよりも役立ち、実際には優れています。

更新:この集約は、置換による再サンプリング(ブートストラップ/ブートストラップ外検証)ではなく、置換なしのリサンプリング(クロス検証)に適用されるバギングの背後にある考え方です。

この手法を使用した論文は次のとおりです
。Beleites、C.&Salzer、R .:小さいサンプルサイズの状況でのケモメトリックモデルの安定性の評価と改善、Anal Bioanal Chem、390、1261-1271(2008)。
DOI:10.1007 / s00216-007-1818-6

おそらく最も重要なことは、データセット内のすべてのポイントでトレーニングを行いながら、オーバーフィットと戦う方法はありますか?

「最適な」モデルに許可された自由度に対して非常に保守的であること、つまり、最適化のクロス検証結果に関する(ランダムな)不確実性を考慮することによって。dfが実際にクロス検証モデルに適している場合、より大きなトレーニングセットに対して多すぎることはない可能性が高くなります。落とし穴は、パラメーターの最適化が実際に複数のテストであるということです。誤って見栄えの良いパラメーターセットから保護する必要があります。


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...これについてもう少し説明できますか?たとえば、10 kの相互検証セットアップでロジスティック回帰を実行し、10セットの係数で終わる場合、最終モデルを形成するために係数推定値を集計することをお勧めしますか?もしそうなら、どうやってこれを行うことができますか?
ジュバル14

@cbeleitesで詳しく説明できますIf the d.f. are actually appropriate for the cross validation models。私の理解では、トレーニング/検証セットは完全なデータセットと比較してそれほど大きくないと主張していますが、正しいですか?
jpcgandre 14

1
@jpcgandre:さらなる使用のためにサロゲートモデルの1つを選択することは、実際にはデータ駆動型モデルの選択です。つまり、外部の独立したレベルの検証が必要です。そして一般的に、十分なケースがない限り、合計サンプルサイズののテストに基づいて統計的に意味のあるモデル比較を実際に行うことができるので、IMHOは選択しないでください。1k
cbeleites

1
さらに重要なのは、反復相互検証サロゲートモデルが同じハイパーパラメーターセットを共有していることです。つまり、それらは重要であるとみなすすべてにおいて同等ですが、トレーニングとテストケースのtest意的な選択です。私たちは通常、何をすべきか、基本的である-実際にはこのように「良い」モデルを選択すると、主に良いテスト/トレーニングセットの組み合わせを選択する必要がありません、私たちは有利な場合のために働いていないだけで良く、したがって、一般化された選択肢が欲しい:希望します。この観点から、「通常の」相互検証から代理モデルを選択することは意味がありません。
cbeleites

1
@jpcgandre:(df)データセットのでのトレーニングに適したモデルの複雑さを選択すると主張します(これはデータセット全体とほぼ同じです)。データセット全体のトレーニングには、あまりにも制限の厳しいモデルに向かうバイアスに到達します。しかし、実際にこれが問題になるとは思わない。私の分野での私の印象としては、あまりにも複雑なモデルに向かって誤っている傾向があるということだ。11k
cbeleites

6

あなたがすることは相互検証ではなく、ある種の確率的最適化です。

CVの概念は、オブジェクトのサブセットでモデルを構築し、残りのオブジェクトでテストを数ラウンド実行することにより、見えないデータのパフォーマンスをシミュレートすることです。すべてのラウンドのやや平均化された結果は、セット全体でトレーニングされたモデルのパフォーマンスの近似値です。

モデル選択の場合、各パラメーターセットに対して完全なCVを実行する必要があります。したがって、各セットアップに対してフルセットのパフォーマンスの近似値を取得する必要があります。

ただし、実際に最良の近似精度を備えたモデルが実際に最高になることはまったく保証されていないことに注意してください。モデル選択手順全体をクロス検証して、モデルの精度は重要ではありません。


2
@mbqに感謝しますが、フォローするかどうかはわかりません。私がやるハイパー空間での私のグリッドサーチの各点の値のためのN倍の相互検証を。N-foldsの平均結果は、あなたが言及した近似を与えます。これは、モデルを比較し、検証セットに最適なモデルを選択することによりモデル選択を行うために使用します。私の質問は、完全なデータセットでトレーニングを行うとどうなるかです。学習したモデルは変化し(学習したモデルのパラメーターが変化する)、原理的には過剰適合に苦しんでいるかどうかを知る方法はないと思います。β
アメリオバスケスレイナ

@AmVもしそうなら、OK-私が書いたように、CVはすでにフルセットのシナリオをテストしています。新しいデータなしではこれ以上言うことはできません。繰り返しますが、ネストされたCVを最大で実行して、モデル選択自体に過剰適合がないかどうかを確認できます(選択によって非常に良い改善が得られる場合、またはデータにノイズが多い場合、このリスクは非常に大きくなります)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.