一文彻底搞懂ROC曲线与AUC的概念 您所在的位置:网站首页 代谢组VIP值与ROC的AUC值 一文彻底搞懂ROC曲线与AUC的概念

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

2024-05-26 12:59| 来源: 网络整理| 查看: 265

一文彻底搞懂ROC曲线与AUC的概念 1. ROC曲线的初级含义1.1 精确率和召回率1.2 ROC曲线的含义 2. ROC曲线如何绘制3. ROC曲线和排序有什么关联?4. 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这件事情!你懂了吗?不懂就再看两遍吧,你那么聪明。所谓基础不牢,地动山摇,诸位在学习中也要记住,知识点无小事,不可不求甚解,不可一知半解,阿弥陀佛~~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有