二分类模型评价指标-AUC

本文深入探讨了AUC(Area Under the Curve)在二分类模型评估中的意义及其计算方法,详细介绍了ROC曲线的数学原理及其实用价值,旨在帮助读者理解如何通过AUC和ROC曲线来衡量模型性能。

AUC的含义和计算*****

AUC针对二分类模型效果进行评价,二分类模型有时可能得到的是一个概率值,这个概率值表明为(0或1类)的可能性(不同于决策树分类,我们会直接得到一个确切分类),我们划定一个具体概率值p,大于则为正,小于则为负,然后使用acc或其他指标评价,其实这样做有很大漏洞,我们不能准确找到这个具体概率值p来确定正负样本的概率分界,这样得到的评价指标信服力和准确性都不稳定,于是我们提出了AUC,直接从概率值入手,仅仅对二分类模型进行评价。

①数学上的解释:ROC曲线下对应X轴的投影面积

ROC曲线:x轴为伪阳性率,y轴为真阳性率,真阳性率 = 真阳性数/(真阳性数+伪阳性数),伪阳性率= 伪阳性数/(真阳性数+伪阳性数),将真伪阳性率的值都标注在ROC平面上,再连起来构成ROC曲线,然后ROC在x轴的投影面积就是我们要求的AUC值。

②通俗点的解释:从正样本中随机抽取一个样本,从负样本中随机抽取一个样本,通过二分类模型对其进行预测,得到正样本的预测概率为p1,负样本的为p2,p1>p2的可能性或概率就是AUC。

通过二分类模型,对所有正负样本获得一个score,首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去所有正样本和正样本配对的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N(除以M×N就是转化为可能性)。即

公式解释:

 1、为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1

  2、根据上面的解释,不难得出,rank的值代表的是能够产生score前大后小的这样的组合数,但是这里包含了(正,正)的情况,所以要减去这样的组(即排在它后面正例的个数),即可得到上面的公式

  另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。 
### 二分类任务中AUC评估指标解释 #### AUC定义 AUC全称为Area Under the Curve,指的是ROC曲线下面积。该值衡量的是模型区分正类和负类的能力,在不同阈值下综合考虑真正率(True Positive Rate, TPR)与假正率(False Positive Rate, FPR)[^1]。 #### ROC曲线构建原理 对于给定的数据集以及预测概率输出的模型而言,通过改变决策边界(Threshold),可以得到一系列不同的(TPR,FPR)坐标点组合而成的一条连续上升至左上角结束的折线图即为ROC曲线[^2]。 #### 手动计算AUC的方法 为了手动计算AUC,需遵循如下逻辑: - 对于每一个测试样本对(i,j),当i属于实际正例而j属于实际反例时; - 如果P(i)>P(j),则计数器加1;若两者相等,则加上0.5作为半次成功匹配; - 最终将上述统计量除以总的可比较样本次数N_pos*N_neg获得最终得分范围介于[0,1]之间越接近后者越好说明泛化性能更佳。 ```python def compute_auc(y_true, y_pred_proba): n_pos = sum(y_true == 1) n_neg = sum(y_true == 0) rank_sum = 0 for i in range(len(y_true)): if y_true[i]: for j in range(len(y_true)): if not y_true[j]: if y_pred_proba[i]>y_pred_proba[j]: rank_sum += 1 elif y_pred_proba[i]==y_pred_proba[j]: rank_sum += 0.5 auc_score = (rank_sum / (n_pos * n_neg)) return auc_score ``` #### AUC的意义 较高的AUC表明模型具有更好的能力来区分正类和负类实例而不依赖特定的截断点设置。因此,在对比多个竞争算法表现差异方面提供了相对公平有效的依据之一[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值