約3000の正のインスタンスと3000の負のインスタンスのトレーニングセットがあります。しかし、私のテストデータセットはほとんどバランスが取れていません。正のセットには50個のインスタンスしかなく、負のセットには1500個のインスタンスがあります。これにより、精度が非常に低くなります。この問題を解決する方法はありますか?SVMを使用して分類子を作成します。
約3000の正のインスタンスと3000の負のインスタンスのトレーニングセットがあります。しかし、私のテストデータセットはほとんどバランスが取れていません。正のセットには50個のインスタンスしかなく、負のセットには1500個のインスタンスがあります。これにより、精度が非常に低くなります。この問題を解決する方法はありますか?SVMを使用して分類子を作成します。
回答:
これをデータセットシフト設定といいます。このPDF [1]は、関連する根本的な問題のいくつかを理解するのに役立ちます。
ただし、現時点では、最小二乗重要度フィッティングを使用して、テストセットを使用してトレーニングデータの重要度推定を取得できます(テストセットラベルは不要で、特徴ベクトルのみ)[2]。重要度の見積もりを取得したら、それらをlibSVM [3]でインスタンスの重みとして使用できます。
これにより、より良い分類子を取得できるようになります。
[1] http://www.acad.bg/ebook/ml/The.MIT.Press.Dataset.Shift.in.Machine.Learning.Feb.2009.eBook-DDU.pdf
[2] http:// www .ms.ku-tokyo.ac.jp / software.html#uLSIF
[3] http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instances
「現実の世界」は、トレーニングセットやテストセットに似ていると思いますか。トレーニングセットのように見える場合は、ネガティブテストセットから50個のインスタンスをランダムにサンプリングして、より公平な精度の見積もりを取得できます。しかし、私はピーターフロムに同意します。一般的に、テストセットとトレーニングセットはどちらも同じように見えるはずです。