matlab - LibSVM 成本权重对于不平衡数据不起作用

标签 matlab machine-learning svm libsvm

我有一个数据集,负标签值的数量是正标签值数量的 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 帖子中说

have you tried weighting on a smaller scale (ie: <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 Cup 2008的第一个挑战——乳腺癌。 我想按降序对候选人进行排名。

最佳答案

可能是因为你的负面例子和正面例子很难区分。 我将通过对多数类进行下采样并使用所有少数类示例来准备不同的数据集,然后在所有数据集上学习支持向量机。那就用投票吧。这对我有用

关于matlab - LibSVM 成本权重对于不平衡数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13894998/

相关文章:

matlab - 如何在Matlab中使用邻接矩阵绘制两棵合并树

python - 尝试通过网状包在 R 中使用 Python Gekko 时出错

matlab - matlab中的fft()函数中使用的NFFT是什么?

image-processing - 定向梯度直方图与边缘方向直方图

image-processing - 检测拍摄图像的相机

machine-learning - 始终保持高精度的 SVM 分类

Python:浮点图像/替代 matlab 的 im2double?

matlab - 如何使用 MATLAB 进行交叉验证测试?

matlab - 准备我的数据以在 SVM libsvm matlab 中进行训练

python - 为什么 classifier.predict() 方法期望测试数据中的特征数量与训练数据中的特征数量相同?