libsvm - 交叉验证精度与标签比率相同

时间:2012-08-31 10:36:24

标签: python libsvm svm

我正在使用libsvm的Python接口,我注意到在使用网格搜索选择最佳Cgamma参数(RBF内核)后,我训练模型时并交叉验证(5倍,如果相关),我收到的准确度与我的训练数据集中的标签比例相同。

我有3947个样本,其中2898个标签为-1,其余的标签为1.因此,这是样本的73.4229%。

当我训练模型并交叉验证它5次时,这就是我得到的 -

optimization finished, #iter = 1529
nu = 0.531517 obj = -209.738688,
rho = 0.997250 nSV = 1847, nBSV = 1534
Total nSV = 1847
Cross Validation Accuracy = 73.4229%

这是否意味着SVM没有考虑这些功能?或者这是有问题的数据?它们都是相关的吗?我只是无法通过73.4229号码。此外,支持向量的数量应该远小于数据集的大小,但在这种情况下,似乎并非如此。

一般来说,当交叉验证精度与数据集中标签的比率相同时,它意味着什么?

1 个答案:

答案 0 :(得分:6)

您的数据集是不平衡的,这意味着很大一部分属于同一类。这导致了所谓的默认或多数类分类器,其中通过简单地将所有内容分类为多数类的一部分来实现高精度。所以你是对的,因为数据不考虑这些功能。

libsvm README建议改变惩罚权重来处理这个问题。这是一个相关的问题:https://stats.stackexchange.com/questions/20948/best-way-to-handle-unbalanced-multiclass-dataset-with-svm

有关不平衡数据的详细信息,请参阅A User's Guide to Support Vector Machines的第7节。