始终具有高精度的SVM分类

时间:2016-03-27 16:30:05

标签: machine-learning classification svm libsvm

我有一个二元分类问题,我正在尝试为我的分类器获得精确回忆曲线。我使用带有RBF内核和概率估计选项的libsvm。

要获得曲线,我将决策阈值从0更改为1,步长为0.1。但是在每次运行中,即使召回率随着阈值的增加而降低,我也会获得高精度。与真正的积极因素相比,我的假阳性率似乎总是很低。

我的结果如下:

Threshold: 0.1
TOTAL TP:393, FP:1, FN: 49
Precision:0.997462, Recall: 0.889140

Threshold: 0.2
TOTAL TP:393, FP:5, FN: 70
Precision:0.987437, Recall: 0.848812

Threshold: 0.3
TOTAL TP:354, FP:4, FN: 78
Precision:0.988827, Recall: 0.819444

Threshold: 0.4
TOTAL TP:377, FP:9, FN: 104
Precision:0.976684, Recall: 0.783784

Threshold: 0.5
TOTAL TP:377, FP:5, FN: 120
Precision:0.986911, Recall: 0.758551

Threshold: 0.6
TOTAL TP:340, FP:4, FN: 144
Precision:0.988372, Recall: 0.702479

Threshold: 0.7
TOTAL TP:316, FP:5, FN: 166
Precision:0.984424, Recall: 0.655602

Threshold: 0.8
TOTAL TP:253, FP:2, FN: 227
Precision:0.992157, Recall: 0.527083

Threshold: 0.9
TOTAL TP:167, FP:2, FN: 354
Precision:0.988166, Recall: 0.320537

这是否意味着我有一个好的分类器或者我某处有一个根本性的错误?

2 个答案:

答案 0 :(得分:2)

其中一个原因可能是在训练数据时你有很多负面样本而不是正面样本。因此,几乎所有的例子都被归类为负样本,除了少数。因此,您可以获得高精度,即较少的误报和较低的回忆,即更多的假阴性。

编辑:

现在我们知道你有更多的负面样本而不是正面样本:

如果查看结果,当您增加阈值时,假阴性的数量会增加,即您的阳性样本被归类为阴性样本,这不是一件好事。同样,这取决于你的问题,一些问题更喜欢高精度而不是召回,有些人更喜欢高召回率而不是精确度。如果您希望精度和召回率都很高,则可能需要通过尝试过采样(重复正样本以使比率变为1:1)或欠采样来解决类不平衡问题(与阳性样本成比例的随机阴性样本)或更复杂的东西,如 SMOTE 算法(添加类似的阳性样本)。

另外,我确信分类器中必须有“ class_weight ”参数,这样可以更加重视训练示例较少的类中的错误。你可能想尝试给予积极阶级更多的权重而不是消极的阶级。

答案 1 :(得分:0)

高精度可能是您的数据具有模式,您的模型似乎很容易掌握,因此它是一个很好的分类器。
也许您的度量计算错误或最有可能:您的模型为overfitting。这意味着你的模型不是学习而是记忆 这可以通过在训练集上测试您的模型来生成。