0

バイナリ サポート ベクター マシンを使用していくつかのピクセルを分類しようとしています。私のトレーニング データベースは 28 個のデータ ファイルで構成され、クラス 1 のピクセル数は 16571、クラス 2 のピクセル数は 313 の 2 つのクラスがあります。

テスト データ (各ファイル) には約 600 ピクセルがあり、6 ~ 10 ピクセルのみがクラス 2 のメンバーであり、残りのピクセルはクラス 1 です。

私の問題は、トレーニング後にデータを分類しようとすると、SVM がすべてのピクセルを class1 に分類することです。

おそらくclass2のサンプルが少ないからだと思います。ただし、利用可能なデータファイルの数は限られています (約 35 データファイル)。

svm をトレーニングして妥当な結果を得るにはどうすればよいですか?

ご協力ありがとうございました。

4

1 に答える 1

0

SVM は実際、列車セットのサイズの大きな違いに敏感である可能性があります。次の 2 つの方法を試すことをお勧めします。

  1. サンプリングによってクラス 1 のトレイン セットを制限し、そのサイズがクラス 2 のサイズとほぼ同じになるようにし、改善を確認します (クラス 2 のサイズの 1 倍から 10 倍のサイズが適合する可能性があります)。

  2. SVM の 'cost' パラメータで遊んでください (たとえば、SVMLightでは 'J' パラメータで行われます)。クラスのバランスを取るのに役立ちます。

もちろん、両方の方法を一緒に使用することもできます。つまり、クラス 1 のトレーニング データのサイズをある程度制限してから、コスト パラメータを使用してクラスのバランスをさらに調整します。

于 2012-09-10T13:09:38.597 に答える