Machine learning 支持向量机分类精度一直很高

Machine learning 支持向量机分类精度一直很高,machine-learning,classification,svm,libsvm,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

我有一个二元分类问题,我正试图得到我的分类器的精确召回曲线。我使用带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

这是否意味着我有一个好的分类器,或者我在某个地方犯了一个根本性的错误?

拥有一个高精度可能是因为您的数据有一个模式,您的模型似乎很容易掌握,所以它是一个好的分类器。
可能您的度量值计算错误,或者最有可能:您的模型是。这意味着你的模型不是在学习,而是在记忆。

这可以通过在训练集上测试模型来实现。

具有高精度可能是因为您的数据具有一种模式,您的模型似乎很容易掌握,因此它是一个很好的分类器。
可能您的度量值计算错误,或者最有可能:您的模型是。这意味着你的模型不是在学习,而是在记忆。

这可以通过在训练集中测试模型来实现。

其中一个原因可能是在训练数据时,负样本比正样本多。因此,除少数样本外,几乎所有样本都被归类为阴性样本。因此,您可以获得高精度,即更少的误报和低召回率,即更多的误报

编辑:

现在我们知道你们的阴性样本比阳性样本多:

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


此外,我确信分类器中必须有“class_weight”参数,这使得在训练示例较少的类中错误更加重要。你可能想试着给积极的课程更多的权重,而不是消极的

其中一个原因可能是在训练数据时,阴性样本比阳性样本多。因此,除少数样本外,几乎所有样本都被归类为阴性样本。因此,您可以获得高精度,即更少的误报和低召回率,即更多的误报

编辑:

现在我们知道你们的阴性样本比阳性样本多:

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


此外,我确信分类器中必须有“class_weight”参数,这使得在训练示例较少的类中错误更加重要。你可能想试着给积极的课程更多的权重,而不是消极的

谢谢你的回答。事实上,我用一个与测试结果完全不同的集合来训练模型。但在另一组中,我的成绩不如这一组。因此,即使我的训练集是不同的,我的模型可能有偏见,我不确定这一点。谢谢你的回答。事实上,我用一个与测试结果完全不同的集合来训练模型。但在另一组中,我的成绩不如这一组。因此,即使我的训练集是不同的,我的模型可能有偏见,我不确定这一点。谢谢你的回答。是的,我的阴性样本数量比阳性样本数量多(大约4:1)。然而,通过目视检查,它可以准确地对真阳性进行分类。我如何进一步调查您提到的可能问题?在关于训练样本量的更新中,阳性样本比阴性样本少会导致测试被高精度分类,无论我们有什么阈值?我观察到的行为是这样的,如果分类器判定一个样本为阳性,那么它通常为真(通常概率>0.6,0.7)。看起来它是黑白相间的。有一个很窄的灰色区域,模型将其归类为假阳性。没有完全理解你想要说的,你能详细说明一下吗?我的意思是,假阳性率太低了。我有假阴性,但假阳性率总是很低。如果它被归类为阳性,则通常为真阳性。这种行为使我对普遍性感到紧张。谢谢你的回答。是的,我的阴性样本数量比阳性样本数量多(大约4:1)。然而,通过目视检查,它可以准确地对真阳性进行分类。我如何进一步调查您提到的可能问题?在关于培训样本量的更新中,阳性样本比阴性样本少会导致测试按hi分类吗