一文彻底搞懂ROC曲线与AUC的概念

1. ROC曲线的初级含义

要了解ROC的含义,必须先搞懂混淆矩阵的含义,以及精确率、召回率的含义。

1.1 精确率和召回率

对于一个分类任务的测试集,其本身有正负两类标签,我们对于这个测试集有一个预测标签,也是正负值。对于这些样本,我们的预测是否正确?有可能正样本我们预测成了负样本,负样本我们预测成了正样本,如何用我们的预测结果来评价我们的模型呢?那么就要有如下定义了:TP:真正例,样本为正,预测为正、TN:真负例,样本为负,预测为负、FP:假正例,样本为负,预测为正、FN:假负例,样本为正,预测为负。混淆矩阵如下图所示。
在这里插入图片描述
在这里插入图片描述
即精确率的含义是:命中的正样本数比所有的预测为正的样本数
召回率的含义是:命中的正样本数比所有样本集中的正样本数
精确率衡量查得多准,召回率衡量查得多全。
这里尤其要注意,精确率和准确率是不一样的,准确率应该用预测正确的样本数除以样本总数: a c c u r a c y = T P + T N T P + T N + F P + F N accuracy=\frac{TP+TN}{TP+TN+FP+FN} accuracy=TP+TN+FP+FNTP+TN

1.2 ROC曲线的含义

有了精确率和召回率,可以以精确率为横轴,以召回率为纵轴,绘制P-R曲线,这个曲线使用不方便,因此提出了更综合的指标,如F1分数,F1分数计算方式就是取准确率和召回率的调和平均数。
在这里插入图片描述
我们在做分类任务的时候,通常输出的是样本为正类或负类的概率值,因此我们在利用精确率和召回率两个指标时,这两个指标是随着我们设定的分类的阈值变化的,具有一定的主观性,但是我们希望有更好的指标克服这个缺点,能够客观描述一个模型的质量。这就是ROC曲线
ROC曲线以真正例率TPR为纵轴,以假正例率FPR为横轴,在不同的阈值下获得坐标点,并连接各个坐标点,得到ROC曲线。

2. ROC曲线如何绘制

说了这么多,同学要急了,你讲这么多我都知道,我就是一直不知道ROC曲线怎么画出来的!你的基础知识你自己留着用吧,告诉我怎么画这个鬼玩意就行啦!!面试的时候老是考,我总是没有说清楚。
好了,废话不多说,直接开搞,我们假设测试集有10个样本,其中5个正样本,5个负样本,然后我们的模型对每一个样本都有一个预测为正类的概率值,将概率值从高到低进行排序,然后我们的样本就被排列出来了,结合我们已有的正负类的标签,我们可以写出一个序列:[1,1,0,1,1,0,0,1,0,0],这个序列是啥意思呢,顺序是我们预测的,01是样本本身的,我们当然希望这个序列1多多在前面,0多多在后面,因为这样就意味着我们的模型能把正样本排在前面,负样本排在后面,精确率和召回率不就自然而然就高了吗?
好了,现在你知道最好的一种预测结果是什么了,没错就是[1,1,1,1,1,0,0,0,0,0]了,这种情况下,5个正样本都被预测出来,排在了前面,那么这种情况下的ROC曲线怎么画呢,这就到了最关键的时刻,首先,我们要确定阈值,啥阈值?就是把预测结果归类为正样本的阈值,这个阈值是和样本紧密联系的,比如我们的预测值是[0.9,0.87,0.81,0.76,0.7,0.65,0.6,0.5,0.4,0.3],那当大于等于了0.9才认为是正样本时,我们的预测结果就是[1,0,0,0,0,0,0,0,0,0],而真实的标签是[1,1,1,1,1,0,0,0,0,0],这个时候,预测的TP值是1,因此真正例率是 T P R = 1 5 TPR=\frac{1}{5} TPR=51
由于预测的假正样本是0个,假正例率是 F P R = 0 5 FPR=\frac{0}{5} FPR=50
因此我们得到了第一个点(0,0.2)。
继续,当阈值设为0.87时,预测的结果是[1,1,0,0,0,0,0,0,0,0],因此预测的TP=2,真正例率是 T P R = 2 5 TPR=\frac{2}{5} TPR=52
由于预测的假正样本是0个,假正例率是 F P R = 0 5 FPR=\frac{0}{5} FPR=50
得到第二个点(0, 0.4)
依次减少阈值,可以分别算出各自的TP和FP,计算坐标点依次为(0,0.6),(0,0.8),(0,1),
当我们的阈值为0.65时,预测结果是[1,1,1,1,1,1,0,0,0,0],这时候TPR=1,FPR=1/5=0.2,坐标点是(0.2,1),以此类推,后面的坐标点是(0.4,1)(0.6,1)(0.8,1),(1,1).
连接所有的点,可以得到ROC曲线如图:
在这里插入图片描述
这是一条完美的曲线,只有在理想的状态才会出现,现实是骨感的,我们下面再举两个更一般的例子:
当我们的预测排序为[1,1,1,1,0,1,0,0,0,0]时,用同样的方法,可以计算出各个点,然后绘制ROC曲线如图:
在这里插入图片描述
总而言之,左上角的面积我们希望越小越好!这样的ROC的曲线才受人待见~

3. ROC曲线和排序有什么关联?

我们刚才已经讲到了一部分排序的知识,那么为什么有些大佬说:AUC值其实是一个概率,是模型将正样本排在负样本前面的概率。
下面我们从概率的角度来看看,ROC曲线是为什么能体现正样本排负样本前面的概率,我们知道AUC的值就是ROC曲线围成的面积,我们希望越大越好。
当我们的排序结果是[1,1,1,1,1,0,0,0,0,0]时,显然,正样本全部在负样本前面,因此,AUC=1,正样本排负样本前面的概率为1,没毛病老铁。
当排序结果是[1,1,1,1,0,1,0,0,0,0],可以根据上文的ROC曲线,算出AUC是0.96,那我们直接从这个排序的结果,可不可以计算出相应的AUC呢,我们从概率的角度来算一下,对于这5个正样本,每个样本可以赋予0.2的概率值,前4个样本都排在负样本之前,最后一个正样本,它有0.8的概率值排在负样本之前,因此可以计算整体正样本在负样本之前的概率值:0.2*4+0.2*0.8=0.96,完美。
再举个例子:
[1, 1, 1, 0, 1, 0, 1, 0, 0, 0]对应的ROC曲线如下:
在这里插入图片描述
概率值计算:0.23+0.20.8+0.2*0.6=0.88,注意图中的面积标错了,计算可得应为0.12。
好的,现在你终于知道AUC怎么可以表达正样本排在负样本前面的概率了吧。

4. AUC和基尼系数有什么纠葛?

这里的基尼系数的概念,如下图,是 g i n i = A A + B gini=\frac{A}{A+B} gini=A+BA
显然,AUC=A+C,因此,通过简单的数学代换,可得GINI=2*AUC-1。
在这里插入图片描述
好了,到目前为止,总算说清楚了ROC和AUC这件事情!你懂了吗?不懂就再看两遍吧,你那么聪明。所谓基础不牢,地动山摇,诸位在学习中也要记住,知识点无小事,不可不求甚解,不可一知半解,阿弥陀佛~~

  • 28
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值