2

負のラベルの値の数が正のラベルの値の数の163倍であるデータセットがあるため、不均衡なデータセットがあります。私はそれを試しました:

model = svmtrain(trainLabels, trainFeatures, '-h 0 -b 1 -s 0 -c 10 -w1 163 -w-1 1');
[predicted_label, accuracy, prob_estimates] = svmpredict(testLabels, testFeatures, model, '-b 1');

精度はほぼ99%でしたが、検索して次のことがわかりました。http: //agbs.kyb.tuebingen.mpg.de/km/bb/showthread.php?tid=376 &page=1投稿#7に

小規模な重み付けを試しましたか(例:<1)

そして私はそれを次のように変更しました:

model = svmtrain(trainLabels, trainFeatures, '-h 0 -b 1 -s 0 -c 10 -w1 0.5 -w-1 0.003');
[predicted_label, accuracy, prob_estimates] = svmpredict(testLabels, testFeatures, model, '-b 1');

データのバランスが悪いため、毎回高精度です。何か案は?

PS:私はKDDカップ2008の最初の挑戦である乳がんを実行しようとしています。候補者を降順でランク付けしたいと思います。

4

1 に答える 1

0

あなたの否定的な例と肯定的な例が分離しにくいことが原因である可能性があります。多数派クラスをダウンサンプリングし、すべての少数派クラスの例を使用して、さまざまなデータセットを準備し、すべてのデータセットで svm を学習します。次に、投票を使用します。これは私のために働いた

于 2013-01-04T10:34:39.293 に答える