機能選択と交差検証に同じデータを使用しているか、偏っているか?


8

最適なフィーチャサブセットを選択した後にバイナリ分類器を構築する小さなデータセット(約250サンプル* 100フィーチャ)があります。データを次のように分割するとします。

トレーニング、検証、テスト

特徴選択については、分類子X、Y、Zのパフォーマンスを個別に最適化する特徴の選択に基づくラッパーモデルを適用します。この前処理ステップでは、分類器をトレーニングするためのトレーニングデータと、すべての候補フィーチャサブセットを評価するための検証データを使用します。

最後に、さまざまな分類子(X、Y、Z)を比較します。もちろん、データのテスト部分を使用して、公正な比較と評価を行うことができます。ただし、私の場合、テストデータは非常に小さく(約10から20サンプル)、モデルの評価に相互検証を適用します。

正と負の例の分布は非常に不均衡です(約8:2)。したがって、交差検証では、パフォーマンスの評価に失敗する可能性があります。これを克服するために、2番目の比較方法としてテスト部分(10〜20サンプル)を用意し、相互検証を検証する予定です。

まとめると、トレーニング、検証、テストにデータを分割しています。トレーニングおよび検証パーツは、機能の選択に使用されます。次に、同じデータに対する交差検証を適用してモデルを推定します。最後に、テストを使用して、データの不均衡を考慮した相互検証を検証します。

問題は、分類器X、Y、Zのパフォーマンスを最適化する機能の選択に使用したのと同じデータ(トレーニング+検証)を使用する場合、特徴選択に使用した同じデータ(トレーニング+検証)に交差検証を適用できるかどうかです。最終的なパフォーマンスを測定し、分類子を比較するには?

この設定が偏りのある相互検証メジャーにつながり、正当化されない比較になるかどうかはわかりません。


4
Crossvalidated.comはまさにこのタイプの質問を扱います。このQをそこに移動することをお勧めします。
RomanLuštrik2012年

1つの提案は、相互検証の代わりにブートストラップ(トレーニング+検証のみから)をデータに適用することです。これは質問で述べられたバイアス問題を解決しますか?まだわかりません!!
soufanom 2012年

3
はい、それは偏っています- このサイト、特にこのサイト、またはCVに関するWikipediaページ機能選択タグでQを参照してください

1
同意した。ランダムにシミュレートされたデータセットに設計を適用して、バイアスがどれだけあるかを推定できます。しかし、私は1つの答えが示唆するようにLOOCVをお勧めします。
スティーブP

回答:


5

私はそれが偏っていると思います。N-1パーティションにFSを適用して、最後のパーティションでテストするのはどうですか。そして、すべてのフォールドの機能を何らかの方法で結合します(結合/交差/または特定の問題固有の方法)。


テストのために部品を残すことは、投稿で説明されています。また、説明したように、モデルを比較するには相互検証が必要です。したがって、ネストされた相互検証のアイデアを使用しない限り、これを特徴選択に適用することはできません。ただし、データセットは非常に小さく、ネストされた相互検証を適用することは困難です。
soufanom

6

簡単な答えは、トレーニングするのとは異なるデータセットで特徴選択を行う必要があるということです(すでにこれを行っているため、これを変更しないでください)---これを行わないと、トレーニングデータが過剰に適合します。また、モデルのパフォーマンスの見積もりが膨らむため、テストセットで機能を選択してはなりません(これも既にわかっていると思いますが、質問を正確に理解するのは少し難しいと思いました)。

テストセットをトレーニング、検証、およびテストに既に分割している場合、テストセットが小さすぎて強力な結論を引き出せないほどデータが少ない場合を除いて、相互検証を実行する特別な理由はありません。多くの研究者は、モデルの開発を推進するために使用される場合(つまり、微調整し、次に相互検証を実行して、その方法を確認し、さらに調整するなど)、効果的にテストにアクセスできるため、相互検証が嫌いです。データとこれは、実際には目に見えないデータでのパフォーマンスを過大評価する可能性があります。データが小さすぎて相互検証を行わざるを得ない場合、トレーニング、開発、およびテストセットを使用してこれを行う正しい方法は、データを各分割ごとに3つの部分に明示的に分割することです-大部分を使用する必要があります訓練のために、一部は開発用(ケースでの機能選択、およびフィッティングが必要なその他の無料のパラメーター)で、最後にテスト部分でテストする必要があります。次に、これらのテスト部分全体のスコアを平均化して、モデルのパフォーマンスの推定値を取得できます。ただし、前述したように、これらのスコアを使用して問題に使用したいアプローチを導き出す場合、結果が期待できません。相互検証から得た、目に見えないデータの同じスコア。


finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance 分類器のパフォーマンスをある程度理解するには、これまでに表示または使用されていないテストデータで使用する必要があります。あるデータセットのアルゴリズムパフォーマンスに基づいて決定を下す場合、このデータセットはトレーニングまたはクロス検証のいずれかであり、テストデータセットと呼ばれるべきではありません。
イワン

テストデータで機能を選択する必要があるとは言っていません。フォールドごとに、トレーニング、開発、テストの部分を作成します。トレーニングでトレーニングを行い、無料のパラメータを設定し、開発で機能選択を行い、最終的に学習したモデルをテストデータに適用します。上記で説明したように、この方法は理想的ではありませんが、パラメーターを設定するためにテストデータを明示的に使用していません(モデルが修正されるまで、各折り目に対してテストデータがブラインドになるため、折り目を横切るだけです)

私は同じことについて同意すると思います。テストデータとC / Vデータの違いを明確にしたかっただけです。モデルの選択はパラメーターの選択に似ているため、テストデータを別にして、まったく使用しないのが最適です。これを実行すると、選択したモデルの予想外の新しいデータに対する期待されるパフォーマンスについて安全にレポートできます。
Ivan

1

LOOCVを試しましたか?トレーニングデータが非常に少ない場合は、トレーニングしやすいと思います。あなたの質問に答えると、それはあなたの分類器が他のデータでうまく機能せず、見たことのないような誤った結果を与える可能性があるという理由だけであなたに最良の結果を与えるわけではありません。


最後のLOOCVは、一種の相互検証です。データが小さく、適切な機能を選択して、最後にパフォーマンスを評価するための代表的な測定値を取得したいという問題の解決策が必要です。
soufanom

0

次のようにして、分類子のパフォーマンスを比較できます。

トレーニングセットを取り、可能なすべての機能セットでトレーニングします。各機能セットについて、パラメーターを最小化し、トレーニングセットに適切に適合するようにモデルを構築します。すべての機能セットのモデルが構築されたら、つまり、すべての機能セットのモデルを作成したら、検証セットでモデル(異なる機能セットで構築)を検証し、そのモデル(機能セットの特定のサブセットで構築)を選択します)検証セットのエラーを最小限に抑えます。このようにして、構築されたモデルがトレーニングセットだけでなく検証セットにも適合していることを確認します。

次に、この構築されたモデルを使用して、テストセットでテストします。これにより、トレーニングにも検証にも使用されなかったデータセットに対して分類子が実行されると、その分類子のパフォーマンスがわかります。また、トレーニングセットと検証セットによく適合する機能セットを選択しました。


1
特徴選択のラッパーモデルでは、トレーニングデータセットと検証データセットの両方をサポートする必要があります。ラッパーモデルでは、候補のフィーチャサブセットが指定された分類子をトレーニングおよびテストしています。したがって、このモデルにトレーニングセットのみを与えるだけでは不十分です。問題は、特徴選択に使用したのと同じデータが比較に使用されているが、CVを使用している場合でも、偏りがあり、どの程度であるかということです。
soufanom 2012年

0

可能であれば、追加の相互検証のために一部のデータを控えるのが最善です。たとえば、学習曲線を作成してアルゴリズムを検証するために使用できます。これらの曲線は、以前に使用されたことのないデータセットに基づいて作成する必要があります。

F1スコアが最も高いアルゴリズムを単に選択する場合でも、追加の相互検証データセットを使用してそれを行う必要があります。テストセットは、ソリューションの最終的な精度(目に見えないデータに対して選択した分類子の期待されるパフォーマンス)を報告するために予約する必要があります。


あなたの答えは私が知っているテクニックとして私の質問に述べられています。問題は、特徴選択と交差検証に同じデータを使用することです。
soufanom 2012年

@soufanom最高のパフォーマンスの分類子を選択するには、追加の相互検証データセットが必要であると書きました。そうしないと、結果の信頼性が低下します。モデルのトレーニングまたはパラメーターの選択に使用されたデータセットでモデルを実行して、モデルのパフォーマンスをどのように判断できますか?分類子のパフォーマンスを判断するための信頼できる唯一の方法は、以前に表示されていないデータに対して実行することです。これがあなたの質問に答えることを願っています。そうでない場合は、それを絞り込んでさらに情報を追加してください。
イヴァン

0

それは非常に大きくバイアスされる可能性があります。「統計学習の要素」のモデル検証の章を参照してください。モデルの真のエラー率は50%であるはずですが、モデルのcv精度は70%を超える可能性があります(機能はクラスに依存しません) )。

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