Machine learning 平衡数据集AUC高、精度低的原因

Machine learning 平衡数据集AUC高、精度低的原因,machine-learning,auc,Machine Learning,Auc,给定一个平衡的数据集(两个类的大小相同),将其拟合到一个SVM模型I中会产生一个较高的AUC值(~0.9),但精确度较低(~0.5) 我完全不知道为什么会发生这种情况,有人能为我解释一下吗?我想你在计算roc曲线时错过了正确的课程… 这将解释低准确度和高(错误计算)AUC 很容易看出,当使用AUC来比较两种情况时,AUC可能会产生误导 如果ROC曲线交叉,则使用分类器。分类器A可以产生 AUC高于B,而B在大多数情况下表现更好 实际使用分类器的阈值。事实上 实证研究表明,这在我国确实非常普遍 要

给定一个平衡的数据集(两个类的大小相同),将其拟合到一个SVM模型I中会产生一个较高的AUC值(~0.9),但精确度较低(~0.5)


我完全不知道为什么会发生这种情况,有人能为我解释一下吗?

我想你在计算roc曲线时错过了正确的课程…
这将解释准确度和(错误计算)AUC

很容易看出,当使用AUC来比较两种情况时,AUC可能会产生误导 如果ROC曲线交叉,则使用分类器。分类器A可以产生 AUC高于B,而B在大多数情况下表现更好 实际使用分类器的阈值。事实上 实证研究表明,这在我国确实非常普遍 要交叉的常用分类器的曲线。还有更深层次的原因 为什么AUC是不连贯的,因此是一个不恰当的度量(参见 参考资料如下)


我最近偶然发现了同样的问题。以下是我自己的想法——如果我错了,请告诉我

在我们思考为什么ROC曲线下的面积(AUC)可能高而准确度低之前,让我们首先回顾一下这些术语的含义

对于不同的决策阈值(或预测截止值)t,接收器-操作员特性(ROC)曲线绘制假阳性率FPR(t)与真阳性率TPR(t)

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
在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
那么,当准确度较低时,AUC怎么可能较大呢?如果您的分类器在阳性类别(高AUC)上实现了良好的性能,但却以较高的假阴性率(或较低的真阴性数)为代价,那么这可能会发生

为什么训练过程导致分类器的预测性能如此差,这是另一个问题,具体取决于您的问题/数据和您使用的分类方法


总之,ROC分析告诉您正类样本与其他类样本的分离程度,而预测精度则暗示了分类器的实际性能。

如果每次都发生这种情况,则可能是您的模型不正确。 从内核开始,您需要更改并尝试使用新集合的模型。
每次查看混淆矩阵,检查TN和TP区域。模型不足以检测其中一个。

对这种行为的另一个简单解释是,您的模型实际上非常好-只是它的最终阈值不好,无法进行预测

在二值图像分类任务中,我使用卷积神经网络遇到了这个问题。考虑一下,你有4个样本,标签为0,0,1,1。假设您的模型为这四个样本创建连续预测,如下所示:0.7、0.75、0.9和0.95

我们认为这是一个很好的模型,因为高值(>0.8)预测类1,而低值(<0.8)预测类0。因此,ROC-AUC为1。注意我是如何使用阈值0.8的。然而,如果你对这些预测使用了一个固定且选择不当的阈值,比如说0.5,这是我们有时对模型输出施加的压力,那么所有4个样本预测都将是1级的,这将导致50%的准确率

请注意,大多数模型的优化不是为了精度,而是为了某种损失函数。在我的有线电视新闻网(CNN)里,仅仅几个时代的训练就解决了这个问题


当您将连续模型输出转换为二进制预测时,请确保您知道自己在做什么。如果您不知道对给定ROC曲线使用什么阈值,请查看Youden索引或找到表示ROC曲线中“最左上”点的阈值。

您能绘制您的混淆矩阵吗?顺便说一句,我的第一个想法是您没有正确引导标签。试着绘制roc曲线,你可能会注意到AUC猜测0为1,反之亦然……答案有用吗?关于这方面更详细的答案也请看一看!在二元的情况下,例如外部树,仍然是这样吗?既然“正”类和“负”类的AUC都是相同的(不是吗?),那么我假设(在平衡数据集的假设下)AUC会给出与准确度相同的结果,而TPR应该是:
真阳性的次数/标签阳性的次数?
如果我错了,请纠正我,但是:假设阈值0.5不能很好地区分这两个类别,但是0.7做得很好。然后,我们的AUC=1,但(因为大多数分类器仅以最高的“概率”对类进行分类),最终的结果可能是精度较低,但AUC较高。如果你将类别的分类改为0.7而不是0.5,我们是否也应该有较高的准确度(在这种情况下等于1)?
accuracy = (TP+TN)/(Total number of cases) = (TP+TN)/(TP+FP+TN+FN)