k倍交差検証を行う場合、テストの精度が最も高い分類器を使用する必要がありますか?クロス検証から分類器を取得する際の一般的な最善のアプローチは何ですか?
k倍交差検証を行う場合、テストの精度が最も高い分類器を使用する必要がありますか?クロス検証から分類器を取得する際の一般的な最善のアプローチは何ですか?
回答:
次の2つのいずれかを実行する場合は、相互検証を行います。
モデルの選択にはさまざまなシナリオがあります。
(アルゴリズムを選択する場合(モデルと呼ぶ方が良い)とハイパーパラメーター検索を実行する場合は、ネストされた相互検証を実行する必要があることに注意してください。ネストされたCVは本当に必要ですか?)
交差検証により、誤差推定がそのモデルの一般化誤差として可能な限り最も近いことがある程度保証されます(ただし、これは概算が非常に困難です)。フォールド間の平均誤差を観察すると、完全なデータセットに基づいて構築されたモデルの予想誤差を適切に予測できます。また、予測の分散を観察することも重要です。これは、フォールドごとにエラーがどれだけ変化するかです。変動が大きすぎる場合(かなり異なる値)、モデルは不安定になる傾向があります。ブートストラップは、この意味で適切な近似を提供するもう1つの方法です。ELS-Standfordから無料で入手できる「統計学習の要素」ブックのセクション7を注意深く読むことをお勧めします。
前に述べたように、どのモデルでも構築されたモデルを使用してはいけません。代わりに、完全なデータセット(フォールドに分割されたデータセット)でモデルを再構築する必要があります。分離されたテストセットがある場合は、それを使用してこの最終モデルを試して、CVで取得したものと同様の(そして確実にそれ以上の)エラーを取得できます。ただし、CVプロシージャによって与えられる推定誤差に依存する必要があります。
さまざまなモデル(アルゴリズムの組み合わせなど)でCVを実行した後、フォールド間のエラーとその分散に関してパフォーマンスの良いものを選択しました。データセット全体でモデルを再構築する必要があります。ここでよくある混乱があります:モデルはデータ上に構築された予測可能なモデルであると考えて、モデルの選択を一般的に参照しますが、この場合は、適用するアルゴリズム+前処理手順の組み合わせを指します。したがって、予測/分類を行うために必要な実際のモデルを取得するには、データセット全体で勝者の組み合わせを使用してモデルを構築する必要があります。
最後に注意することは、何らかの種類の前処理を適用する場合、クラス情報(機能選択、LDA次元削減など)を使用する場合、これはデータではなくすべてのフォールドで実行する必要があることです。これは重要な側面です。データの直接情報(PCA、正規化、標準化など)を含む前処理方法を適用する場合、同じことを行う必要があります。ただし、データに依存しない前処理を適用することができます(専門家の意見に従って変数を削除しますが、これは明らかです)。このビデオは、その方向であなたを助けることができます:CV正しい方法と間違った方法
ここで、主題に関する最後の良い説明:CVとモデル選択
いいえ。k分割交差検証中に構築されたk分類器は選択しません。まず、相互検証の目的は、予測モデルを作成することではなく、実際に予測モデルがどれだけ正確に実行されるかを評価することです。第二に、議論のために、k = 10でk分割交差検証を使用して、3つの異なる分類アルゴリズムのいずれが特定の分類問題を解決するのに最も適しているかを見つけたとします。その場合、データは同じサイズのk個の部分にランダムに分割されます。パーツの1つはテスト用に予約されており、残りのk-1パーツはトレーニングに使用されます。交差検証プロセスはk(フォールド)回繰り返されるため、反復ごとに異なる部分がテストに使用されます。交差検証を実行した後、各フォールドの結果を見て、どの分類アルゴリズム(トレーニングされたモデルではない!)が最適かを考えます。特定の反復のテストデータに非常に簡単な例が含まれていることがランダムに発生したため、高いテスト精度につながる可能性があるため、10回の反復のいずれかでテスト精度が最も高いアルゴリズムを選択する必要はありません。あなたがしたいことは、最高の精度を生み出したアルゴリズムを選択することです これにより、高いテスト精度が得られます。あなたがしたいことは、最高の精度を生み出したアルゴリズムを選択することです これにより、高いテスト精度が得られます。あなたがしたいことは、最高の精度を生み出したアルゴリズムを選択することですすべてのk分割で平均化されます。アルゴリズムを選択したので、トレーニングデータ全体を使用してアルゴリズムをトレーニングし、実際に予測を開始できます。
これはこの質問の範囲を超えていますが、選択したアルゴリズムを最大限に活用するために、モデルのハイパーパラメーター(存在する場合)も最適化する必要があります。通常、人々は相互検証を使用してハイパーパラメーター最適化を実行します。
したがって、トレーニングとして80%を使用し、検証データとして20%を使用しているトレーニングがあると仮定します。80%でトレーニングし、残りの20%でテストできますが、実際のテストデータと20%が実際のテストデータと類似しておらず、パフォーマンスが悪い可能性があります。そのため、これを防ぐために、k分割交差検証を使用できます。
したがって、異なるモデルがあり、データセットでどれがより良いパフォーマンスを発揮したいかを知りたいとしましょう。k-foldcross validationはうまく機能します。k検証パフォーマンスの検証エラーを把握し、それに基づいてより適切なモデルを選択できます。これは通常、k分割交差検証の目的です。
1つのモデルにのみアクセスし、k分割交差検定でチェックしている場合、テストデータのおおよその誤差を取得できますが、when you are actually training it finally, you can use the complete training data
ここでは、データ全体がその一部よりも優れたパフォーマンスを発揮すると想定されているためです時々そうではないかもしれませんが、これは一般的な仮定です)