AUC在分类任务中的计算法方法

摘要:

在机器学习的分类任务中,我们常用许多的指标,诸如召回率(Recall)、准确率(Precision)、F1值、AUC等。
那么,如果手动计算AUC应该要怎么计算呢?相信大家很多时候都是用写好的库直接计算,可能对AUC计算不太了解,下面这篇文章就简单的概述一下AUC的计算方法。
(注:本文的重点其实不在于阐述什么是AUC。因为网上关于这方面的文章实在太多了。但是对于AUC的计算的文章相对来说少一些)

1.什么是AUC?

相信这个问题很多玩家都已经明白了,简单的概括一下,AUC(are under curve)是一个模型的评价指标,用于分类任务。
那么这个指标代表什么呢?这个指标想表达的含义,简单来说其实就是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。
A U C = P ( P 正 样 本 > P 负 样 本 ) AUC = P (P_{正样本} > P_{负样本}) AUC=P(P>P)
具体关于AUC含义的分析推荐以下回答:

AUC如何理解?

2.如何计算AUC?

计算AUC时,推荐2个方法。

方法一:

在有M个正样本,N个负样本的数据集里。一共有MN对样本(一对样本即,一个正样本与一个负样本)。统计这MN对样本里,正样本的预测概率大于负样本的预测概率的个数。
∑ I ( P 正 样 本 , P 负 样 本 ) M ∗ N \frac {\sum I(P_{正样本},P_{负样本})}{M*N} MNI(PP),其中,
I ( P 正 样 本 , P 负 样 本 ) = { 1 , P 正 样 本 > P 负 样 本 0.5 , P 正 样 本 = P 负 样 本 0 , P 正 样 本 < P 负 样 本 I(P_{正样本}, P_{负样本}) = \left \{ \begin{aligned} 1, P_{正样本} > P_{负样本} \\ 0.5, P_{正样本} = P_{负样本} \\ 0, P_{正样本} < P_{负样本} \end{aligned} \right. I(PP)=1,P>P0.5,P=P0,P<P

这样说可能有点抽象,我举一个例子便能够明白。

IDlabelpro
A00.1
B00.4
C10.35
D10.8

假设有4条样本。2个正样本,2个负样本,那么M*N=4。即总共有4个样本对。分别是:
(D,B),(D,A),(C,B),(C,A)。
在(D,B)样本对中,正样本D预测的概率大于负样本B预测的概率(也就是D的得分比B高),记为1
同理,对于(C,B)。正样本C预测的概率小于负样本C预测的概率,记为0.
最后可以算得,总共有3个符合正样本得分高于负样本得分,故最后的AUC为 1 + 1 + 1 + 0 4 = 0.75 \frac {1+1+1+0}{4} = 0.75 41+1+1+0=0.75

在这个案例里,没有出现得分一致的情况,假如出现得分一致的时候,例如:

IDlabelpro
A00.1
B00.4
C10.4
D10.8

同样本是4个样本对,对于样本对(C,B)其I值为0.5。
最后的AUC为 1 + 1 + 1 + 0.5 4 = 0.875 \frac {1+1+1+0.5}{4} = 0.875 41+1+1+0.5=0.875

方法二:

另外一个方法就是利用下面的公式:
A U C = ∑ i n s i ∈ p o s i t i v e c l a s s r a n k i n s i − M × ( M + 1 ) 2 M × N AUC = \frac {\sum_{ins_i \in positiveclass}rank_{ins_i} - \frac {M \times (M+1)}{2}}{M \times N} AUC=M×Ninsipositiveclassrankinsi2M×(M+1)
这个公式看起来有点吓人,首先解释一下每一个符号的意思:
公式的含义见:公式解释

r a n k i n s i rank_{ins_i} rankinsi,代表第i条样本的序号。(概率得分从小到大排,排在第rank个位置)
M , N M,N M,N分别是正样本的个数和负样本的个数
∑ i n s i ∈ p o s i t i v e c l a s s \sum_{ins_i \in positiveclass} insipositiveclass只把正样本的序号加起来。

同样本地,我们用上面的例子。

IDlabelpro
A00.1
B00.4
C10.35
D10.8

将这个例子排序。按概率排序后得到:

IDlabelprorank
A00.11
C10.352
B00.43
D10.84

按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项 M ( M + 1 ) 2 \frac{M(M+1)}{2} 2M(M+1)即: ( 4 + 2 ) − 2 ∗ ( 2 + 1 ) 2 2 ∗ 2 = 6 − 3 4 = 0.75 \frac{(4+2) - \frac{2*(2+1)}{2}}{2*2} = \frac{6-3}{4} = 0.75 22(4+2)22(2+1)=463=0.75,这个答案和我们上面所计算的是一样的。

这个时候,我们有个问题,假如出现得分一致的情况怎么办?下面举一个例子说明:

IDlabelpro
A10.8
B10.7
C00.5
D00.5
E10.5
F10.5
G00.3

在这个例子中,我们有4个取值概率为0.5,而且既有正样本也有负样本的情况。计算的时候,其实原则就是相等得分的rank取平均值。具体来说如下:
先排序:

IDlabelprorank
G00.31
F10.52
E10.53
D00.54
C00.55
B10.76
A10.87

这里需要注意的是:相等概率得分的样本,无论正负,谁在前,谁在后无所谓。

由于只考虑正样本的rank值:
对于正样本A,其rank值为7
对于正样本B,其rank值为6
对于正样本E,其rank值为(5+4+3+2)/4
对于正样本F,其rank值为(5+4+3+2)/4

最后我们得到:

在这里插入图片描述

3.最后的最后,如何用程序验证?

为了方便,我们使用sk-learn里面自带的库来简单的验证一下我们的例子。

在这里插入图片描述

其python的代码

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([1,1,0,0,1,1,0])
y_scores = np.array([0.8,0.7,0.5,0.5,0.5,0.5,0.3])
print "y_true is ",y_true
print "y_scores is ",y_scores
print "AUC is",roc_auc_score(y_true, y_scores)
 
 
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print "y_true is ",y_true
print "y_scores is ",y_scores
print "AUC is ",roc_auc_score(y_true, y_scores)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AUC(Area Under the Curve)是一种常用的模型性能指标,常用于二分类模型,例如深度学习模型。 在深度学习AUC表示分类模型对正负样本分类的准确度,其值介于0到1之间,越接近1表示模型的分类效果越好,越接近0.5表示模型分类效果与随机猜测无异,而值越接近0表示模型分类效果越差。 AUC计算方法是通过计算ROC曲线(Receiver Operating Characteristic Curve)下的面积来得到的。ROC曲线是以真正例率(True Positive Rate, TPR)为纵坐标,假正例率(False Positive Rate, FPR)为横坐标的图形,其刻画了在不同的分类阈值下,模型对正负样本的分类效果。而AUC则是ROC曲线下的面积,可以表示为一个分类器区分正例和负例的能力。 ### 回答2: AUC是Area Under the Curve的缩写,即曲线下面积。在深度学习AUC被广泛应用于评估分类模型的性能。 AUC常用于二分类任务,通过绘制Receiver Operating Characteristic (ROC)曲线,计算曲线下的面积来衡量分类模型的准确性。ROC曲线的横坐标是1-Specificity(False Positive Rate),纵坐标是Sensitivity(True Positive Rate),它们是模型在不同阈值下的表现。 AUC反映了模型将正样本排在负样本之前的能力,即分类器将正例置于负例前面的概率。AUC的取值范围在0.5到1之间,值越接近1,表示模型分类能力越好。 AUC在深度学习有着重要的意义。通过计算AUC,我们可以客观地评估模型在不同阈值下的分类性能,而不受阈值选择的影响。它对非平衡数据集的处理更加合理,适用于具有不同类别权值的任务,如医学诊断或金融欺诈检测。 此外,AUC还有助于选择最佳模型。当比较多个模型时,AUC提供了一个统一的指标,方便模型之间的比较和选择最佳模型。 总而言之,AUC在深度学习表示分类模型的准确性和排名能力。它是一个重要的评估指标,可用于评估模型性能、处理非平衡数据集和选择最佳模型。 ### 回答3: AUC(区分度)是深度学习评估二分类问题性能的一种常用指标,其全称为“Area Under the ROC Curve”。ROC(受试者工作特征)曲线描绘了在不同分类阈值下,模型的真阳性率(tpr)与假阳性率(fpr)之间的关系。AUC表示ROC曲线下的面积,范围在0到1之间。在深度学习AUC可以被视为评估分类器在不同阈值下的不确定性能。 AUC在深度学习的含义主要有以下几个方面: 1. AUC提供了一个通过综合考虑不同阈值下模型的表现来评估模型性能的指标。由于深度学习模型具有高度非线性和复杂性,单一的分类阈值评估往往无准确地衡量模型的整体性能。AUC能够在漏检和误检之间进行平衡。 2. AUC对于不平衡数据集的评估更为合适。在深度学习,由于少数类样本数量较少,数据集往往呈现不平衡分布。使用准确率等评价指标可能会被主导于多数类,而忽略了对少数类的关注。而AUC基于不同阈值下的性能表现评估,能够更好地处理不平衡数据集,提供更全面的模型评估。 3. 模型在不同子集上的性能差异也可以通过AUC来评估。在深度学习,由于数据集样本的多样性和复杂性,模型的性能可能会因不同的数据子集而有所差异。通过计算AUC可以获得模型在不同数据子集上的稳定性评估,并提供更细致的模型表现。 总而言之,AUC在深度学习提供了一种全面、平衡、适应不平衡数据集以及考虑数据子集性能差异的模型性能评估方法。通过分析AUC,可以更好地了解和优化深度学习模型的分类能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值