Scikit learn sklearn:LinearSVC和OneSVM的AUC分数
SVM分类器(Scikit learn sklearn:LinearSVC和OneSVM的AUC分数,scikit-learn,svm,libsvm,Scikit Learn,Svm,Libsvm,SVM分类器(SVC)的一个选项是probability,默认为false。文档没有说明它的功能。查看libsvm源代码,它似乎进行了某种交叉验证 此选项不适用于LinearSVC或OneSVM 我需要计算几个SVM模型的AUC分数,包括最后两个。我是否应该使用decision\u函数(X)作为阈值来计算AUC分数?为了使用sklearn计算AUC,您需要在分类器上使用predict\u proba方法;这就是SVC上的probability参数所做的(使用交叉验证计算它是正确的)。从文档中:
SVC
)的一个选项是probability
,默认为false。文档没有说明它的功能。查看libsvm
源代码,它似乎进行了某种交叉验证
此选项不适用于LinearSVC
或OneSVM
我需要计算几个SVM模型的AUC分数,包括最后两个。我是否应该使用
decision\u函数(X)
作为阈值来计算AUC分数?为了使用sklearn计算AUC,您需要在分类器上使用predict\u proba
方法;这就是SVC
上的probability
参数所做的(使用交叉验证计算它是正确的)。从文档中:
概率:布尔值,可选(默认值=False)
是否启用概率估计。这必须在调用fit之前启用,并且会减慢该方法的速度
不能直接使用决策函数来计算AUC,因为它不是概率。我想您可以缩放决策函数,以获取
[0,1]
范围内的值,并计算AUC,但我不确定这将具有什么统计特性;你当然不能用它来比较使用概率计算的ROC。回答我自己的问题
首先,绘制ROC曲线需要概率,这是一个常见的“神话”。不,您的模型中需要某种阈值,可以更改。然后通过改变该阈值绘制ROC曲线。当然,ROC曲线的要点是,通过观察模型对观察结果的排序,来观察模型对假设的再现程度
在SVM的例子中,我看到人们用两种方式为他们绘制ROC曲线:
SVC(probabilities=True)
则概率将通过使用CV以这种方式为您计算,然后您可以使用CV绘制ROC曲线。但正如我提供的链接中提到的,如果通过改变偏差直接绘制ROC曲线,速度会快得多我认为#2和#1是一样的,如果我们使用线性核,就像我自己的情况一样,因为在这个特殊情况下,改变偏差就是改变距离。这是不准确的。您需要阈值,这些阈值不必是概率。通常你使用概率,但它们可以是分数,就像在评估排名分类器的ROC时一样?我一整天都在做这件事,失败得很惨。