我有一个数据集,其中负标记值的数量是正标记值数量的 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%。我搜索并找到了一个帖子 (#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杯的第一个挑战-乳腺癌。我想按降序对候选人进行排名。