2012-12-15 39 views
2

我有一个数据集,负数标签值的数量是正数标签值的163倍,所以我有一个不平衡的数据集。我已经试过了:不平衡数据的LibSVM成本权重不起作用

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:我正试图实施2008年KDD杯 - 乳腺癌的第一项挑战。 我想通过降序排列候选人。

回答

0

这可能是由于原因,你的负面和积极的例子是不好分离的。 我会准备不同的数据集,通过对大多数类下采样并使用所有的少数类示例,然后在所有数据集上学习svm。然后使用投票。这对我有用