Jam*_*min 10 machine-learning auc
给定一个平衡的数据集(两个类的大小相同),将其拟合到 SVM 模型中,我会产生高 AUC 值(~0.9)但精度低(~0.5)。
我完全不知道为什么会发生这种情况,谁能为我解释一下这个案例?
我最近偶然发现了同样的问题。这是我自己想出来的 - 如果我错了,请告诉我。
在我们思考为什么 ROC 曲线下的面积 (AUC) 可以很高而准确度很低之前,让我们先回顾一下这些术语的含义。
所述接收器操作特征(ROC)曲线图的假阳性率FPR(吨)相对于真阳性率TPR(吨),用于改变判定阈值(或预测截止值)吨。
TPR和FPR定义如下:
TPR = TP / P = TP / (TP+FN) = number of true positives / number of positives
FPR = FP / N = FP / (FP+TN) = number of false positives / number of negatives
Run Code Online (Sandbox Code Playgroud)
在 ROC 分析中,假设分类器可以简化为以下功能行为:
def classifier(observation, t):
if score_function(observation) <= t:
observation belongs to the "negative" class A
else:
observation belongs to the "positive" class B
Run Code Online (Sandbox Code Playgroud)
将决策阈值t视为训练分类器时调整的自由参数。(并非所有分类器都有直接的参数化,但对于知道坚持逻辑回归或简单阈值,对于这样的参数t有一个明显的选择。)在训练过程中,选择最佳阈值t*使得一些成本功能被最小化。
给定训练/测试数据,请注意参数t 的任何选择决定了哪些数据点是真阳性 (TP)、假阳性 (FP)、真阴性 (TN) 或假阴性 (FN)。因此,t 的任何选择也决定了 FPR( t ) 和 TPR( t )。
所以,我们看到以下内容:ROC曲线代表由判决门限参数化的曲线牛逼,其中x = FPR(牛逼)和Y = TPR(牛逼)为所有可能的值牛逼。
结果 ROC 曲线下的面积称为 AUC。它衡量您的训练/测试数据,以及分类器区分“正”类和“负”类样本的能力。完美分类器的 ROC 曲线将通过最佳点 FPR( t* ) = 0 和 TPR( t* ) = 1 并产生 1 的 AUC。然而,随机分类器的 ROC 遵循对角线 FPR( t )=TPR ( t ),产生 0.5 的 AUC。
最后,准确率定义为所有正确标记的案例与案例总数的比率:
accuracy = (TP+TN)/(Total number of cases) = (TP+TN)/(TP+FP+TN+FN)
Run Code Online (Sandbox Code Playgroud)
那么怎么可能同时AUC大而准确度低呢?好吧,如果您的分类器以高假阴性率(或少量真阴性)为代价在正类(高 AUC)上获得了良好的性能,则可能会发生这种情况。
为什么训练过程导致分类器预测性能如此差的问题是另一个问题,并且特定于您的问题/数据和您使用的分类方法。
总而言之,ROC 分析会告诉您一些关于正类样本与其他类的分离程度的信息,而预测准确性则暗示了分类器的实际性能。
我猜你在计算roc曲线时错过了阅读正确的类...
这将解释低准确度和高(错误计算的)AUC。
很容易看出,如果 ROC 曲线交叉,则在用于比较两个分类器时,AUC 可能会产生误导。分类器 A 可能会产生比 B 更高的 AUC,而 B 对于您实际使用分类器的大多数阈值表现更好。事实上,实证研究表明,常见分类器的ROC曲线交叉确实很常见。AUC 不一致并因此成为不恰当的衡量标准还有更深层次的原因(请参阅下面的参考文献)。
http://sandeeptata.blogspot.com/2015/04/on-dangers-of-auc.html