私が読んだことから、クロス検証は次のように実行されると常に考えてきました。
K分割交差検定では、元のサンプルがランダムにk個のサブサンプルに分割されます。 k個のサブサンプルのうち、単一のサブサンプルがモデルをテストするための検証データとして保持され、残りのk − 1個のサブサンプルがトレーニングデータとして使用されます。次に、交差検証プロセスがk回繰り返され(フォールド)、k個のサブサンプルのそれぞれが検証データとして1回だけ使用されます。次に、折り畳みからのkの結果を平均化(または結合)して、単一の推定値を生成できます。
したがって、k個のモデルが構築され、最後のモデルはそれらの平均です。 Wekaのガイドには、各モデルは常にすべてのデータセットを使用して構築されると書かれています。それでは、Wekaの相互検証はどのように機能しますか?モデルはすべてのデータから構築され、「相互検証」とは、k折り畳みが作成され、各折り畳みがその上で評価され、最終的な出力結果が単に折り畳みからの平均結果であることを意味しますか?
それで、ここに再びシナリオがあります:100個のラベル付きデータがあります
トレーニングセットを使用
10倍のCVを使用
Wekaは100個のラベル付きデータを取得します
10個の同じサイズのセットが生成されます。各セットは2つのグループに分けられます。90個のラベル付きデータがトレーニングに使用され、10個のラベル付きデータがテストに使用されます。
90個のラベル付きデータからアルゴリズムを持つ分類器を生成し、セット1の10個のテストデータに適用します。
セット2〜10に対して同じことを行い、さらに9つの分類子を生成します。
10個の同じサイズ(90個のトレーニングと10個のテスト)のセットから生成された10個の分類子のパフォーマンスを平均します
それがあなたの質問に答えるかどうか教えてください。
私はコメントで答えたでしょうが、私の評判は私にまだ許可していません:
Rushdiの受け入れられた答えに加えて、クロス検証フォールドセット用に作成されたモデルは、パフォーマンス測定が実行されて平均化された後にすべて破棄されることを強調します。
結果のモデルは、テストオプションに関係なく、完全なトレーニングセットに基づいてalwaysです。 MTAは引用されたリンクの更新を求めていたため、ここにあります: https://web.archive.org/web/20170519110106/http://list.waikato.ac.nz/pipermail/wekalist/ 2009-December/046633.html / 。これはWEKAのメンテナーの1人からの回答であり、私が書いたことだけを指摘しています。
私はそれを理解したと思う。 (たとえば)weka.classifiers.rules.OneR -x 10 -d outmodel.xxx
を使用します。これは2つのことを行います。
outmodel.xxx
に書き込まれるモデルです。このモデルはnot交差検証の一部として使用されます。Wekaは、ここで述べた従来のk分割交差検証に従います。完全なデータセットがあり、それをkセットの等しいセット(10倍のCVの場合はk1、k2、...、k10)にオーバーラップなしで分割します。次に、最初の実行で、トレーニングセットとしてk1からk9を取り、モデルを作成します。 k10でそのモデルを使用して、パフォーマンスを取得します。次に、トレーニングセットとしてk1〜k8およびk10があります。それらからモデルを開発し、k9に適用してパフォーマンスを取得します。このように、各フォールドが最大1回使用されるすべてのフォールドをテストセットとして使用します。
次に、Wekaはパフォーマンスを平均し、それを出力ペインに表示します。
データを10セグメントに分割して10の交差検証を行い、デシジョンツリーを作成して評価したら、Wekaが行うことは、データセット全体に対してアルゴリズムを11回実行することです。これにより、実際に展開できる分類子が生成されます。評価結果とエラーの推定値を取得するために10倍の交差検証を使用し、最後に実際に使用する実際の分類器を取得するためにもう一度分類を行います。 k番目の相互検証中に、異なる決定ツリーが作成されますが、最終的な決定ツリーはデータセット全体で作成されます。 CVは、過剰適合または大きな分散の問題があるかどうかを確認するために使用されます。