我注意到,在使用网格搜索选择最佳 C
和 gamma
参数(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 回答
您的数据集是不 balancer 的,这意味着很大一部分属于同一类 . 这导致了所谓的默认或多数类分类器,其中通过简单地将所有内容分类为多数类的一部分来实现高精度 . 所以你是对的,因为数据不考虑这些功能 .
libsvm README建议改变惩罚权重来处理这个问题 . 这是一个相关的问题:https://stats.stackexchange.com/questions/20948/best-way-to-handle-unbalanced-multiclass-dataset-with-svm
有关不 balancer 数据的更多信息,请参见A User's Guide to Support Vector Machines的第7节 .