交差検証手法の概要


43

クロスバリデーション技術の大要を知っている人がいるかどうか、そしてそれらの違いの議論と、それらのそれぞれをいつ使用するかのガイドについて疑問に思っています。ウィキペディアに最も一般的な手法のリストがありますが、他の手法があり、それらに分類法があるかどうかは知りません。

たとえば、次の戦略のいずれかを選択できるライブラリに遭遇しました。

  • 差し出す
  • ブートストラップ
  • K交差検定
  • 除外します
  • 階層化クロス検証
  • バランスのとれた層別相互検証
  • 層別ホールドアウト
  • 階層化されたブートストラップ

そして、ブートストラップ、ホールドアウト、またはCVにおける層別化とバランスの意味を理解しようとしています。

人々が望むなら、この投稿をコミュニティwikiに変えて、ここでテクニックや分類の議論を集めることもできます。


この素晴らしい質問は、各方法の説明にリンクできればさらに役立ちます。
mkt-モニカの復活

回答:


16

そのリストに追加できます:

  • 繰り返しクロス検証
  • 脱退グループ交差検証
  • アウトオブバッグ(ランダムフォレストおよびその他のバギングモデル用)
  • 632+ブートストラップ

これらのテクニックの使用方法や使用するタイミングについては、あまりアドバイスをしていません。R のキャレットパッケージを使用して、CV、Boot、Boot632、leave-one-out、leave-group-out、out-of-bagのクロス検証を比較できます。

一般的に、ブーストラップを使用するのは、繰り返しk-fold CVまたはleave-one-out CVよりも計算量が少ないためです。Boot632は、ブートストラップよりも多くの計算を必要とせず、特定の状況での相互検証または基本的なブートスタッドよりも優れていることが示されているため、Boot632が私の選択したアルゴリズムです。

私は、ほとんどの場合、ランダム検証ではクロス検証ではなくout-of-bagエラー推定値を使用します。通常、out-of-bagエラーは偏りがなく、ランダムフォレストはそのまま計算するのに十分な時間がかかります。


3
これらのそれぞれをいつ使用するかに関するアドバイスはありますか?
whuber

16

K-fold cross-validation(CV)はデータをランダムにK個のパーティションに分割し、それらのK個のパーツの1つをテストケースとして保持し、他のK-1パーツをトレーニングデータとしてまとめます。Leave One Out(LOO)は、N個のデータアイテムを取得してN-fold CVを実行する特殊なケースです。ある意味では、ホールドアウトは別の特殊なケースであり、テストとしてKフォールドの1つだけを選択し、すべてのKフォールドを回転させません。

私の知る限り、10倍CVはデータを効率的に使用し、また不幸なパーティション選択を回避するのに役立つため、ほぼ間違いありません。Hold Outはデータを効率的に使用せず、LOOはそれほど堅牢(またはそのようなもの)ではありませんが、10倍のフォールドが適切です。

データに複数のカテゴリが含まれ、1つ以上のカテゴリが他のカテゴリよりもはるかに小さいことがわかっている場合、Kランダムパーティションの一部には小さなカテゴリがまったく含まれていない可能性があり、これは悪いことです。各パーティションが合理的に代表的であることを確認するには、階層化を使用します。データをカテゴリに分割し、各カテゴリからランダムに比例して選択してランダムパーティションを作成します。

K折り畳みCVのこれらのバリエーションはすべて、置換なしでデータから選択します。ブートストラップは置換するデータを選択するため、同じデータを複数回含めることができ、一部のデータがまったく含まれない場合があります。(各「パーティション」には、各パーティションにN / K個のアイテムがあるKフォールドとは異なり、N個のアイテムもあります。)

(ただし、CVでブートストラップがどのように使用されるかを正確に知らないことを認める必要があります。テストとCVの原則は、トレーニングしたデータでテストしないことを確認することです。実際の世界でテクニックと係数がどのように機能するかについてのより現実的なアイデア)

編集:コメントごとに明確にするために、「ホールドアウトは効率的ではありません」を「データを効率的に使用しないホールドアウト」に置き換えられました。


1
「ホールドアウトは効率的ではありません」と言うとき、私はそれに従うかどうかわかりません。ここで効率とはどういう意味ですか?通常のN倍とは異なり、ホールドアウトは折り目を回転しないため、より高速になります。代わりに、通常のNフォールドCVよりもオーバーフィッティングとの戦いが悪いということですか?
アメリオバスケスレイナ

2
「効率的」とは、データを効率的に使用しないことを意味します。K-fold CVの利点は、データの100%がトレーニングに使用され、データの100%がテストに使用されることです。これにより、データを効率的に使用できます。重要なのは、もちろん、すべてのデータがテストとトレーニングに同時に使用されるわけではないことです。これにより、方法が楽観的なテスト結果(オーバーフィッティング)が得られます。静的な分割を行うことで、Hold Outは、たとえば、データの1/3がトレーニングに使用されず、データの2/3がテストに使用されず、データの多くの情報が無駄になると言います。
ウェイン

@Wayneホールドアウト推定量は漸近的に偏りがありませんか?また、単純なkフォールドCVは、繰り返されるkフォールドCVよりもタイプIIエラーの傾向があります。
-chl

@chl:両方の点で正しいと思います。繰り返しKフォールドCVを使用したことはありませんが、分散が低くなるはずです。
ウェイン

3

ウィキペディアの記事にリンクされているリファレンスの1つが非常に有用であることがわかりました

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.529&rep=rep1&type=pdf

「精度評価とモデル選択のための交差検証とブートストラップの研究」、Ron Kohavi、IJCAI95

CVテクニックのサブセットの経験的比較が含まれています。tl; drバージョンは基本的に「use 10-fold CV」です。


1

...およびそれらのそれぞれをいつ使用するかのガイド...

残念ながら、その問題は信用を得ることよりも困難です。交差検証には、少なくとも2つの主な用途があります。モデルの選択とモデルのパフォーマンスの評価です。

大まかに言えば、高いトレイン対テスト比を使用してデータを分割するCVバリアントを使用する場合、これは評価に適しています。より大きなトレーニングセットを使用すると、完全なデータセットに適合するモデルのパフォーマンスをより正確に模倣できます。

ただし、列車とテストの比率が高いと、選択が悪化する可能性があります。本当に選択すべき「最良の」モデルがあると想像してください。ただし、データセットは非常に大きいです。次に、わずかにオーバーフィットする大きすぎるモデルは、「最良の」モデルとほぼ同じCVパフォーマンスを持ちます(それらのスプリアスパラメーターを無視できると推定できるため)。データのランダム性とCV /分割手順により、多くの場合、真に「最適な」モデルではなく、過剰適合モデルが選択されます。

線形回帰の場合の古い漸近理論については、Shao(1993)の「交差検証による線形モデルの選択」を参照してください。Yang(2007)、「回帰手順の比較のための相互検証の一貫性」およびYang(2006)、「分類のための学習方法の比較」は、より一般的な回帰および分類問題の漸近理論を提供します。しかし、厳密な有限サンプルのアドバイスを得るのは困難です。

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