モデル選択後の相互検証(エラーの一般化)


21

注:ケースはn >> pです

統計学習の要素を読んでいますが、相互検証を行う「正しい」方法についてさまざまな言及があります(60ページ、245ページなど)。具体的には、私の質問は、モデル検索が行われたときに、k分割CVまたはブートストラップを使用して最終モデルを評価する方法です(個別のテストセットなし)。ほとんどの場合(組み込み機能選択なしのMLアルゴリズム)、

  1. 機能選択ステップ
  2. メタパラメーターの選択手順(SVMのコストパラメーターなど)。

私の質問:

  1. トレーニングセット全体で機能の選択を行い、脇に置いて、機能の選択手順を実行できることを確認しました。次に、kフォールドCVを使用して、特徴選択アルゴリズムが各フォールドで使用され(場合によっては毎回選択される異なる特徴を取得)、エラーが平均化されます。次に、すべてのデータ(確保された)を使用して選択された機能を使用して最終モードをトレーニングしますが、クロス検証からのエラーをモデルの将来のパフォーマンスの推定値として使用します。これは正しいです?
  2. クロス検証を使用してモデルパラメーターを選択する場合、モデルのパフォーマンスを後で推定する方法は?上記の#1と同じプロセスですか、54ページ(pdf)または他の何かに示されているようなネストされたCVを使用する必要がありますか?
  3. 両方のステップ(機能とパラメーターの設定)を実行しているとき.....その後、何をしますか?複雑なネストされたループ?
  4. 別のホールドアウトサンプルがある場合、懸念はなくなり、クロス検証を使用して機能とパラメーターを選択できます(パフォーマンスの見積もりはホールドアウトセットから取得されるため、心配する必要はありません)?

@ user2040(+1)これらの質問は本当に良い質問です。多少関連する質問がここにあります:機械学習で相互検証を実行するときの「最終」モデルの特徴選択
chl

@chiありがとう、私はその投稿を見ました。私は少なくとも私の思考プロセスで正しい軌道に乗っていると思いますか?独立したテストセットを使用すると、機能の選択とモデルのチューニング/選択にCVをより自由に使用できるようになります。そうしないと、同じトレーニングデータを使用してエラーの一般化をトレーニング、調整、および推定するために、ネストされたループが必要になります。
B_Miner

回答:


18

覚えておくべき重要なことは、交差検証では、(ほぼ)公平なパフォーマンス推定値を提供するために、モデルの適合に関係するすべてのステップも、交差検証手順の各フォールドで独立して実行する必要があるということです。最適な方法は、機能の選択、メタ/ハイパーパラメーター設定、およびパラメーターの最適化をモデルフィッティングの不可欠な部分として表示し、他の2つを実行せずにこれらのステップを実行しないことです。

そのレシピから逸脱することで導入できる楽観的なバイアスは、CawleyとTalbotが示すように驚くほど大きくなる可能性があります。さらに悪い偏りのあるプロトコルは、ハイパーパラメーターの調整に対してより敏感であり、したがってモデル選択基準を過剰適合しやすいため、不良モデルを最も強く支持します!

特定の質問への回答:

ステップ1の手順は、特徴の選択が各フォールドで個別に実行されるため有効です。そのため、交差検証するのは、最終モデルに適合するために使用される手順全体です。各フォールドのデータセットは最終モデルに使用されるデータセット全体よりもわずかに小さいため、相互検証の推定にはわずかな悲観的なバイアスがあります。

2では、交差検証を使用してモデルパラメーターを選択するため、パフォーマンス推定に使用される交差検証の各フォールドで独立してその手順を繰り返す必要があり、ネストされた交差検証になります。

3の場合、基本的には、ネストされたネストされたクロス検証を行う必要があります。基本的に、最終モデルに適合するために行うことを意図したすべての最外部の交差検証(パフォーマンス推定に使用)の各フォールドで繰り返す必要があります。

4-はい、別個のホールドアウトセットがある場合、追加の相互検証を必要とせずに、パフォーマンスの公平な推定が得られます。


Q1への回答をもう一度。それが問題ですよね?実際にモデリング手順を相互検証しているのに、モデルを相互検証していると非常によく考えます。数学を書き留めるとき、fはモデルまたはモデリング手順を表すことができるため、その違いは哲学的かもしれません。しかし、その後、私たちが望むことを手順の相互検証、またはモデルの相互検証を行うことができます。あなたの考えは?
qoheleth 14年

モデルがトレーニングされたデータのサンプルに依存するため、モデルをクロス検証することはできません。モデルを異なるデータのサンプルに適合させるとすぐに、それは異なるモデルになります。私が本当に言っていたのは、データのサンプル全体で何らかの方法でモデルを調整する場合(たとえば、特徴選択を実行することによって)、テストパーティションが調整に使用されているため、交差検証によって一般化の楽観的な推定が得られるということですモデルの側面(つまり、使用される機能セット)。HTH。
ディクラン有袋類14年

コメントセクションで議論を続けてもいいかどうかはわかりませんが、誰かがそうでないと言うまで...はい、あなたはCVについてのあなたの主張が最も外側のレベルで行われる必要があることを理解し、私はそれを反対していません。実際、昨日同僚に同じアドバイスをしただけです。クロスバリデーションの対象が不明な場合が多いことを指摘しています。同時に、モデリング手順ではなくモデルの評価を取得することが実際に必要なのかどうか疑問に思います。治療法は、モデルの誤差を推定するために手順の誤差を使用していると考えることができます。たぶんこれは動作します。
qoheleth

外部のテストセットがなければ、特定のモデルのパフォーマンスを直接推定することはできません。ただし、モデルを生成するメソッドのパフォーマンスは、メソッド全体が相互検証される場合、モデル自体のパフォーマンスの合理的なプロキシです。言い換えれば、あなたの最後の文の要約に同意します!
ディクラン有袋類14年

5

私は、取得するのに数百万の費用がかかるデータセットで広範なクロスバリデーション分析を行ってきましたが、利用可能な外部バリデーションセットはありません。この場合、妥当性を確認するために、広範囲にネストされた相互検証を実行しました。各トレーニングセットからのみ機能と最適化されたパラメーターを選択しました。これは、大きなデータセットの場合は計算コストがかかりますが、有効性を維持するために私がしなければならなかったことです。ただし、それに伴う合併症があります。たとえば、各トレーニングセットで異なる機能が選択されます。

したがって、私の答えは、外部データセットへの実行可能なアクセス権がない場合、これは妥当な方法です。外部データセットがある場合、メインデータセットで必要に応じて街に行くことができ、外部データセットで1回テストできます。


@ user2643:ネストされたCVの作成方法について共有するための参照はありますか?私の質問でリンクしたpdfと同じ行に沿っていましたか?また.....このデータマーケティングデータは偶然ですか?
B_Miner

@ user2643このアプローチの問題(正しい)は、精度(分類)または精度(回帰)の単一の基準しか得られないことです。あなたが言ったように、それらは折り畳みごとに異なるため、「これらは最も興味深いものです」と言うことはできません。私は、置換スキーム(k = 1000、5%レベルで快適であるため)の下で、10倍のCVを使用して、結果の信頼性を評価する遺伝的データ(600k変数)に取り組んでいます。このようにして、「私たちのモデルはうまく一般化できるかどうか」と言うことができます。
-chl

2
機能が折り畳まれている場合、有用な機能を自信を持って識別するのに十分な情報がないことを意味するので、クロス検証の利点として(単一のモデルの結果を見るだけで、特徴選択基準に過剰適合しているため、誤解を招く可能性があります)。多くの特徴を持ち、観測値が少ない問題の場合、リッジ回帰によりパフォーマンスが向上することが多いため、特徴の特定が主要な目標でない限り、特徴の選択を行わない方がよい場合がよくあります。
ディクランMarsupial

np

@ user2040:返信が遅くなってすみません。ネストされたCVアプローチの独自のソフトウェア実装を作成しました。私の研究はバイオインフォマティクスに関連しているため、すぐにソフトウェアの説明をバイオインフォマティクスジャーナルに投稿する予定です。しかし、それはあらゆる研究領域で使用できます。試してみたいと思ったら、私に知らせてください。yahooドットコムで金魚
1434
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.