sklearn:LinearSVC和OneSVM的AUC得分



SVM分类器(SVC)的一个选项是probability,默认情况下为false。文件中没有说明它的作用。查看libsvm源代码,它似乎进行了某种交叉验证。

LinearSVCOneSVM都不存在此选项。

我需要计算几个SVM模型的AUC分数,包括最后两个。我应该使用decision_function(X)作为阈值来计算AUC得分吗?

回答我自己的问题。

首先,绘制ROC曲线需要概率,这是一个常见的"神话"。不,您需要在您的模型中设置某种可以更改的阈值。然后通过改变该阈值来绘制ROC曲线。当然,ROC曲线的点是,通过观察你的模型对观察结果的排序,来观察它在多大程度上复制了假设。

在支持向量机的情况下,我认为有两种方法可以帮助人们绘制ROC曲线:

  1. 正如我在自己的问题中提到的,使用与决策债券的距离
  2. 在SVM中使用偏差项作为阈值:http://researchgate.net/post/How_can_I_plot_determine_ROC_AUC_for_SVM.事实上,如果你使用SVC(probabilities=True),那么概率将以这种方式通过使用CV来计算,然后你可以使用CV来绘制ROC曲线。但正如我提供的链接中所提到的,如果通过改变偏差直接绘制ROC曲线,速度会快得多

我认为,如果我们使用线性核,#2和#1是一样的,就像在我自己的情况下一样,因为在这种特殊情况下,改变偏差就是改变距离。

为了使用sklearn计算AUC,您需要在分类器上使用predict_proba方法;这就是SVC上的probability参数的作用(使用交叉验证进行计算是正确的)。来自文档:

概率:布尔值,可选(默认值=False)

是否启用概率估计。这必须在调用fit之前启用,并且会减慢该方法的速度。

您不能直接使用决策函数来计算AUC,因为它不是概率。我想你可以缩放决策函数,取[0,1]范围内的值,并计算AUC,但我不确定这会有什么统计特性;你肯定无法用它来与使用概率计算的ROC进行比较。

相关内容

  • 没有找到相关文章

最新更新