回答:
最もおもしろい答えが本当に質問に答えないことは面白いです:)私はこれをもう少し理論でバックアップするのが良いと思いました-主に「データマイニング:実用的な機械学習ツールとテクニック」とトム・ミッチェルの「機械学習」。
前書き。
そのため、分類子と限られたデータセットがあり、一定量のデータをトレーニングセットに入力し、残りをテストに使用します(必要に応じて、検証に使用する3番目のサブセット)。
私たちが直面しているジレンマはこれです:良い分類子を見つけるには、「トレーニングサブセット」はできるだけ大きくする必要がありますが、適切なエラー推定値を得るには「テストサブセット」はできるだけ大きくする必要があります-しかし、両方のサブセットは同じプール。
トレーニングセットがテストセットよりも大きくなければならないことは明らかです。つまり、スプリットは1:1であってはなりません(主な目標はテストではなくトレーニングです)が、スプリットがどこにあるべきかは明確ではありません。
ホールドアウト手順。
「スーパーセット」をサブセットに分割する手順は、holdout methodと呼ばれます。簡単に不運になり、特定のクラスの例がサブセットの1つで欠落(または過大表示)される可能性があることに注意してください。
シングル(非反復)ホールドアウトの手順では、テストとトレーニングデータと平均の二つの結果の役割を交換検討するかもしれないが、これは1と唯一のもっともらしいです:受け入れられないトレーニングとテストセット間の1分割(参照はじめに)。しかし、これはアイデアを与え、改善された方法(代わりに交差検証と呼ばれます)-以下を参照してください!
交差検証。
交差検証では、固定数のフォールド(データのパーティション)を決定します。3つのフォールドを使用する場合、データは3つの等しいパーティションに分割され、
これは三重交差検定と呼ばれ、層別化も同様に採用される場合(これはよくあることですが)、層化三重交差検定と呼ばれます。
しかし、見よ、標準的な方法は2/3:1/3分割ではありません。「データマイニング:実用的な機械学習ツールとテクニック」を引用して、
標準的な方法[...]は、階層化された10倍交差検証を使用することです。データは10個の部分にランダムに分割され、クラスは完全なデータセットとほぼ同じ割合で表されます。各パートは順番に行われ、学習スキームは残りの10分の9でトレーニングされます。そのエラー率は、ホールドアウトセットで計算されます。したがって、学習手順は、異なるトレーニングセット(それぞれに多くの共通点がある)で合計10回実行されます。最後に、10個のエラー推定値が平均化され、全体的なエラー推定値が得られます。
なぜ10ですか?そのため、「異なる学習技術を持つ多数のデータセットの..Extensiveテストは、10のエラーの最良の推定値を得るために、折り目正しい数の程度であり、これまでのバックアップ、いくつかの理論的な証拠もあることが示されている..」 I避難所それらが意味する広範なテストと理論的証拠は見つかりませんでしたが、これはもっと掘り下げるための良いスタートのようです-望むなら。
彼らは基本的に言うだけです
これらの議論は決して決定的なものではなく、評価のための最良のスキームは何かについての機械学習およびデータマイニングサークルで議論が激しさを増していますが、実用的な観点からは10倍交差検証が標準的な方法になりました。[...]さらに、正確な数10について魔法のようなものはありません。5倍または20倍の交差検証は、ほぼ同じくらい良いと思われます。
ブートストラップ、そして-最後に!-元の質問に対する答え。
しかし、2/3:1/3がしばしば推奨される理由については、まだ答えが出ていません。私の考えは、ブートストラップメソッドから継承されているということです。
交換によるサンプリングに基づいています。以前は、「グランドセット」のサンプルをサブセットの1つに正確に入れました。ブートストラップは異なり、サンプルはトレーニングセットとテストセットの両方に簡単に表示できます。
我々はデータセット取る一つの特定のシナリオに見てみましょうD1のn個のインスタンスをし、それをサンプリングnは別のデータセットを取得するために、交換に時間D2のn個のインスタンスを。
今、狭く見てください。
D2の一部の要素は(ほぼ確実に)繰り返されるため、元のデータセットには選択されていないインスタンスがいくつか存在する必要があります。これらをテストインスタンスとして使用します。
特定のインスタンスがD2で取得されなかった可能性はどのくらいですか?各テイクでピックアップされる確率は1 / nなので、反対は( 1-1 / n)です。
これらの確率を乗算すると、(1-1 / n)^ nになります。これはe ^ -1で、約0.3です。つまり、テストセットは約1/3、トレーニングセットは約2/3になります。
これが、1/3:2/3分割の使用が推奨される理由であると思います。この比率は、ブートストラップ推定法から取得されます。
それをまとめます。
最後に、データマイニングブックからの引用(これは証明することはできませんが、正しいと仮定します)で締めくくります。
ブートストラップ手順は、非常に小さなデータセットのエラーを推定する最良の方法です。ただし、Leave-one-outクロス検証のように、2つのクラスを持つ完全にランダムなデータセットである特別な人工的な状況を考慮することで説明できる欠点があります。予測ルールの真のエラー率は50%ですが、トレーニングセットを記憶したスキームでは、100%の完全な再代入スコアが得られるため、etrainingインスタンス= 0となり、0.632ブートストラップはこれを0.368の重みで混合します全体のエラー率はわずか31.6%(0.632¥50%+ 0.368¥0%)であり、誤解を招くほど楽観的です。
m個のレコードの有限セットを考えます。すべてのレコードをトレーニングセットとして使用すると、次の多項式ですべてのポイントを完全に適合させることができます。
y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m
トレーニングセットで使用されていない新しいレコードがあり、入力ベクトルXの値がトレーニングセットで使用されているベクトルXと異なる場合、予測yの精度について教えてください。
1次元または2次元の入力ベクトルX(オーバーフィット多項式を視覚化するため)がある例に目を通し、X値が単にあるペア(X、y)の予測誤差の大きさを確認することをお勧めしますトレーニングセットの値とは少し異なります。
この説明が理論上十分であるかどうかはわかりませんが、うまくいけば助けになります。回帰モデルで問題を説明しようとしたのは、他のモデル(SVM、ニューラルネットワークなど)よりも直感的に理解しやすいと思うからです。
モデルを作成するとき、データを少なくともトレーニングセットとテストセットに分割する必要があります(一部のデータはトレーニング、評価、および相互検証セットに分割します)。通常、データの70%がトレーニングセットに使用され、30%が評価に使用されます。その後、モデルを構築するときに、トレーニングエラーとテストエラーを確認する必要があります。両方のエラーが大きい場合、モデルが単純すぎる(モデルのバイアスが高い)ことを意味します。一方、トレーニングエラーが非常に小さいが、トレーニングエラーとテストエラーの間に大きな違いがある場合は、モデルが複雑すぎる(モデルの分散が大きい)ことを意味します。
適切な妥協案を選択する最善の方法は、さまざまな複雑さのモデルのトレーニングおよびテストエラーをプロットし、テストエラーが最小のものを選択することです(下の図を参照)。
これが一般化の問題です。つまり、トレーニングセットの一部ではない将来の例を正しく分類するという仮説です。この素晴らしい例をご覧ください。モデルが新しいデータではなく、所有しているデータのみに適合する場合に何が起こったのか:Titius-Bode law
これまでのところ@andreiserは、トレーニング/データ分割をテストに関するOPの質問の後半部分に華麗な答えを与えた、と@nikoは過剰適合を回避する方法を説明しましたが、誰も質問のメリットを得ていない:なぜ訓練と評価のためのさまざまなデータを使用して過剰適合を回避するのに役立ちます。
データは次のように分割されます。
これでモデルができました。と呼びましょう。トレーニングインスタンスを使用して適合させ、検証インスタンスを使用してその精度を確認します。相互検証も行う場合があります。しかし、いったいなぜテストインスタンスを使用して再度チェックするのでしょうか?
問題は、実際には、さまざまなパラメーターを使用して、さまざまなモデルを試すことです。これは、過剰適合が発生する場所です。検証インスタンスで最高のパフォーマンスを発揮するモデルを選択的に選択します。しかし、私たちの目標は、一般的にうまく機能するモデルを持つことです。これが、テストインスタンスがある理由です。検証インスタンスとは異なり、テストインスタンスはモデルの選択に関与しません。
検証インスタンスとテストインスタンスのさまざまな役割を理解することが重要です。
詳細については、統計学習の要素:データマイニング、推論、予測の 222ページを参照してください。