k分割交差検証後に予測モデルを選択する方法は?


149

K分割交差検証を行った後、予測モデルを選択する方法を考えています。

これは厄介な言い方かもしれませんので、詳細に説明しましょう。K分割交差検証を実行するたびに、トレーニングデータのK個のサブセットを使用し、K個の異なるモデルになります。

Kモデルの1つを選択する方法を知りたいので、誰かにそれを提示して、「これは私たちが生産できる最高のモデルです」と言うことができます。

Kモデルのどれを選んでも大丈夫ですか?または、テストの中央値を達成するモデルを選択するなど、何らかのベストプラクティスが関係していますか?


2
次の質問の回答が役立つ場合があります。stats.stackexchange.com
2306

十分な精度を得るには、5倍のCVを100回繰り返し、結果を平均化する必要があります。そして、@ bogdanovistからの答えはすぐにわかります。より少ないモデル近似でブートストラップから同じ精度の推定精度を取得できます。
フランクハレル

@フランク・ハレル、なぜあなたは100回の繰り返しが必要だと言いますか(私は通常10倍で10回繰り返します)、OPは何の詳細も与えなかったのでこれは経験則ですか?
BGreene

2
10倍cvの場合、繰り返しを行うのが最適です。5倍の繰り返しがさらに必要になります。これらは経験則です。単一の10倍cvで不安定な答えが返されます。つまり、10回の分割を繰り返すと、心配するだけの十分な答えが得られます。50
フランクハレル

ほぼ正確な複製:stats.stackexchange.com/questions/11602にふさわしい答えがたくさんあります。おそらくこれらのスレッドをマージする必要がありますが、どの方向に行くのかわかりません。どちらも非常に良い答えを受け入れました。しかし、もう1つはより古く、より多くのビュー/賛成票があるため、この1つをその1つにマージすることは理にかなっているかもしれません。
アメーバ

回答:


201

クロスバリデーションの目的を理解する上で、まだ何かが欠けていると思います。

いくつかの用語を明確にしましょう。一般に「モデル」と言う場合、入力データが予測しようとしているものにどのように関係するかを説明する特定の方法を指します。通常、そのメソッドの特定のインスタンスを異なるモデルとは呼びません。したがって、「私は線形回帰モデルを持っています」と言うかもしれませんが、トレーニング済み係数の2つの異なるセットを異なるモデルとは呼びません。少なくともモデル選択のコンテキストでは。

したがって、Kフォールドクロス検証を実行すると、モデルがデータによって訓練され、見られなかったデータを予測できるかどうかをテストしています。あなたが持っているすべてのデータを使用してトレーニングする場合、テストのために残っているものがないため、これにはクロス検証を使用します。たとえば、データの80%をトレーニングに使用し、20%をテストに使用すると、これを1回行うことができますが、テストに選択した20%に特に簡単な(または特に難しい)ポイントが含まれている場合予測する?モデルの学習および予測能力の可能な限り最良の推定値を思い付くことはありません。

すべてのデータを使用します。したがって、上記の80/20分割の例を続けるには、データの80%でモデルを5回トレーニングし、20%でテストすることにより、5倍の交差検証を行います。各データポイントが20%テストセットに1回だけ含まれるようにします。したがって、データから学習し、新しいデータを予測するというタスクをモデルがどれだけうまく実行できるかを理解するために、すべてのデータポイントを使用しました。

しかし、相互検証の目的は、最終モデルを思い付くことではありません。トレーニング済みモデルのこれら5つのインスタンスを使用して実際の予測を行うことはありません。そのために、可能な限り最良のモデルを考え出す必要があるすべてのデータを使用したいと思います。相互検証の目的は、モデルの構築ではなく、モデルのチェックです。

ここで、線形回帰モデルとニューラルネットワークの2つのモデルがあるとします。どのモデルが優れているかをどのように言えますか?K分割交差検証を行い、テストセットポイントの予測でどれがより良いかを確認できます。しかし、クロス検証を使用してパフォーマンスの良いモデルを選択したら、すべてのデータに対してそのモデル(線形回帰またはニューラルネットワーク)をトレーニングします。最終予測モデルの交差検証中にトレーニングした実際のモデルインスタンスは使用しません。

クロス検証に似た方法で作成されたモデルインスタンスを使用してアンサンブルモデルを構築するブートストラップ集約(通常は「バギング」と呼ばれる)と呼ばれる手法がありますが、それは範囲を超えた高度な手法です。ここであなたの質問の。


8
私はこの点に完全に同意し、すべてのデータを使用することを考えました。つまり、データセット全体を使用して最終モデルをトレーニングした場合、これは過剰適合になり、それによって将来の予測が妨害されないでしょうか?
バークU.13年

19
番号!オーバーフィッティングはモデルの複雑さと関係があり、モデルのトレーニングに使用されるデータ量とは関係ありません。モデルの複雑さは、パラメーターが取る値ではなく、モデルが使用する方法に関係しています。たとえば、回帰モデルにx ^ 2係数とx係数を含めるかどうか。
ボグダノビスト

17
@Bogdanovist:オーバーフィットは、複雑すぎるモデルのトレーニングケースが少なすぎることと関係があると言っています。そのため、(また)多くのトレーニングケースに関係しています。ただし、トレーニングケースを増やすことで、過剰適合のリスクを減らすことができます(モデルが常に複雑になるため)。
cbeleites

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.-K倍交差検証でグリッド検索を行う場合、これはグリッド検索で見つかった最適なパラメーターを使用し、トレーニングデータ全体にモデルを適合させ、テストセットを使用して一般化パフォーマンスを評価するということですか?
アルン

4
@ arun、k-fold cross validationを使用し、最適なパラメーターとハイパーパラメーターを持つ最適なモデルを選択した場合、トレーニングセットに最終モデルをフィッティングした後、再度使用してパフォーマンスをチェックする必要はありませんテストセット。これは、指定されたパラメーターを使用したモデルが未表示のデータに対してどのように動作するかを既に確認したためです。
サンディープS.サンドゥ

29

ボグダノビストの答えに加えて、いくつかの点を紹介させてください

あなたが言うように、異なるモデルを訓練します。それらは、トレーニングデータの1 /(k-1)番目が他のケースと交換されるという点で異なります。これらのモデルは、これらのモデルで測定された(平均)パフォーマンスがすべてのケースでトレーニングされたモデルのパフォーマンスのサロゲートとして取得されるため、サロゲートモデルと呼ばれることもあります。k

さて、このプロセスにはいくつかの仮定があります。

  • 仮定1:代理モデルは「データ全体」モデルと同等です。
    この仮定が破綻することは非常に一般的であり、症状は倍交差検証(または他のリサンプリングベースの検証スキーム)の悲観的なバイアスです。学習曲線にまだ正の勾配がある場合、サロゲートモデルのパフォーマンスは「全体のデータ」モデルのパフォーマンスよりも平均して劣ります(つまり、トレーニングサンプルが少なくなるとモデルが悪化します)。k

  • 仮定2は、仮定1の弱いバージョンです。サロゲートモデルがデータモデル全体よりも平均的に悪い場合でも、それらは互いに同等であると仮定します。これにより、代理モデルのテスト結果を1つの平均パフォーマンスとして要約できます。 モデルの不安定性は、この仮定の破綻につながりますトレーニングケースでトレーニングされたモデルの実際のパフォーマンスは大きく異なります。これを測定するには、分割交差検証(サブセットへの新しいランダム割り当て)の反復/繰り返しを行い、同じケースの異なるサロゲートモデルの予測間の分散(ランダムな差異)を調べます。N k 1k
    kkNk1kkk

  • ケースの数が限られているということは、テストケースの数が限られているため、パフォーマンス測定がランダムエラー(分散)の影響を受けることを意味します。この分散のソースは、モデルの不安定分散とは異なります(したがって、追加されます)。

観察されたパフォーマンスの違いは、これらの2つの変動要因によるものです。

考えられる「選択」はデータセットの選択です。サロゲートモデルの1つを選択すると、トレーニングサンプルのサブセットを選択し、トレーニングサンプルのこのサブセットが優れたモデルにつながると主張します。これは本当の場合かもしれませんが、通常「優越性」は偽物です。いずれにしても、サロゲートモデルの「最良」を選択することはデータ駆動型の最適化であるため、この選択したモデルを新しい未知のデータで検証(パフォーマンスを測定)する必要があります。この相互検証内のテストセットは、サロゲートモデルの選択に使用されたため、独立していません。

あなたは私たちの論文を見たいかもしれません、それは物事が通常回帰よりも悪い場合の分類についてです。ただし、これらの変動要因とバイアスがどのように加算されるかを示しています。
Beleites、C。およびNeugebauer、U。およびBocklitz、T。およびKrafft、C。およびPopp、J .:分類モデルのサンプルサイズ計画。アナルチムアクタ、2013、760、25-33。
DOI:10.1016 / j.aca.2012.11.007
はarXivの原稿を受け入れました:1211.1323


あなたが言うとき、あなたとBogdanovistは不一致であるpicking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.と彼は言うBut once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.。これは非常に一般的であり、標準化されたアプローチが指定されていることが重要である
jpcgandre

特に、CVからデータを除外することはおそらく不可能である小さなデータセットの場合、モデルを過剰適合させるリスクも高くなります!この問題を明確にするために参照が必要です。
jpcgandre

5
@jpcgandre:意見の相違はありません。Bogdanovistは、相互検証を介して選択されたハイパーパラメーターから選択したモデルを実際に計算する方法を説明し、そのような選択の後、モデルは別の(外部)独立検証レベルを受ける必要があると付け加えました。言い換えれば、例えばネストされた検証設計:ハイパーパラメーター選択のための内部検証ループ、選択されたモデルをテストするための外部ループ(たまたま十分なケースがある場合は、独立したテストセットに行くこともできます)。
cbeleites

5
内部/外部検証のセットアップは、二重またはネストされた相互検証として知られる相互検証用です。クロスモデル検証(dx.doi.org/10.1016/j.chemolab.2006.04.021)と呼ばれることもあります。独立したテストセットでは、train /(最適化)検証/テスト(=最終検証)の3つのセットの分割に対応します。2番目のレベルのCVのデータを除外できないほど少ない場合は、ハイパーパラメーターセットの1つを選択して最適化を試みるのではなく、他の方法でハイパーパラメーターを修正する必要があると思います。
cbeleites

@cbeleites質問があります。次に、最終的なモデルパラメーターを取得するには、各外部フォールドからハイパーパラメーターの平均を取得し、その平均化されたハイパーパラメーターを使用してデータセット全体を再トレーニングしますか?または、通常のCVでハイパーパラメーター検索を実行し、ネストされたCVを繰り返し使用してこのメ​​ソッドの安定性を確認することもできますか?
ミシェル

11

この優れた記事「最終的な機械学習モデルのトレーニング方法」は、機械学習でのCVの使用に関するすべての混乱を解消するのに非常に役立ちました。

基本的に、CV(たとえば、80/20分割、kフォールドなど)を使用して、手順全体(データエンジニアリング、モデルの選択(アルゴリズムなど)、ハイパーパラメーターなど)が将来の見えない状態でどれだけうまく機能するかを推定します。データ。そして、受賞した「手順」を選択すると、CVの適合モデルが目的を果たし、破棄できるようになります。次に、同じ勝利の「手順」を使用し、データセット全体を使用して最終モデルをトレーニングします。


1

とても興味深い質問です。明確にするために、モデルとモデル評価の違いを理解する必要があります。完全なトレーニングセットを使用してモデルを構築し、このモデルが最終的に使用されることを期待しています。

K倍交差評価はKモデルを作成しますが、すべて削除されます。Kモデルは評価にのみ使用されます。そして、このモデルがデータにどの程度適合するかを示すメトリックを生成しただけです。

たとえば、LinearRegression algoを選択し、同じトレーニングセットに対して2つの操作を実行します。1つは10倍のクロス検証で、もう1つは20倍のクロス検証です。回帰(または分類子)モデルは同じでなければなりませんが、相関係数とルート相対二乗誤差は異なります。

以下は、wekaを使用した10倍および20倍のクロス検証の2回の実行です。

10倍での最初の実行

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

20倍で2回目

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

上記の議論が完全に正しいかどうかはわかりません。相互検証では、実行ごとにデータをトレーニングとテストに分割できます。トレーニングデータのみを使用して、モデルに適合し、検討中のモデルの各クラスで調整パラメーターを選択する必要があります。たとえば、ニューラルネットでは、チューニングパラメーターはニューロンの数と活性化関数の選択です。これを行うには、トレーニングデータのみを相互検証します

各クラスで最適なモデルが見つかると、テストデータを使用して最適なモデルが評価されます。「外側の」相互検証ループを使用して、テストデータのパフォーマンスをより正確に推定し、変動性を推定することができます。ディスカッションでは、異なるクラスのテストパフォーマンスを、ニューラルネットとSVMの比較で比較できます。モデルサイズが固定された1つのモデルクラスが選択され、データ全体を使用して最適なモデルが学習されます。

機械学習アルゴリズムの一部として、常に最高のモデルクラスを(たとえば毎週)選択したい場合、この選択でさえトレーニングデータで評価する必要があります!動的オプションの場合、テストデータ測定を使用してモデルクラスの選択を判断することはできません。


0

なぜk分割交差検証を使用するのですか?

クロスバリデーションは、見えないデータに対するメソッドのスキルを推定する方法です。電車とテストの分割を使用するように。

相互検証は、データセットの複数のサブセットで複数のモデルを体系的に作成および評価します。 これにより、パフォーマンス測定値の母集団が得られます

  • これらの測定値の平均を計算して、手順が平均してどれだけうまく機能するかを知ることができます
  • これらの測定値の標準偏差を計算して、手順のスキルが実際どれだけ変化すると予想されるかを知ることができます

これは、使用するアルゴリズムとデータ準備手順を選択するときに、ある手順と別の手順をより微妙に比較する場合にも役立ちます。

また、平均とスプレッドを使用して、実際の機械学習手順で期待されるパフォーマンスの信頼区間を与えることができるため、この情報は非常に貴重です。

参照

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