一文彻底搞懂ROC曲线与AUC的概念 | 您所在的位置:网站首页 › 代谢组VIP值与ROC的AUC值 › 一文彻底搞懂ROC曲线与AUC的概念 |
一文彻底搞懂ROC曲线与AUC的概念
1. ROC曲线的初级含义1.1 精确率和召回率1.2 ROC曲线的含义
2. ROC曲线如何绘制3. ROC曲线和排序有什么关联?4. AUC和基尼系数有什么纠葛?
1. ROC曲线的初级含义
要了解ROC的含义,必须先搞懂混淆矩阵的含义,以及精确率、召回率的含义。 1.1 精确率和召回率对于一个分类任务的测试集,其本身有正负两类标签,我们对于这个测试集有一个预测标签,也是正负值。对于这些样本,我们的预测是否正确?有可能正样本我们预测成了负样本,负样本我们预测成了正样本,如何用我们的预测结果来评价我们的模型呢?那么就要有如下定义了:TP:真正例,样本为正,预测为正、TN:真负例,样本为负,预测为负、FP:假正例,样本为负,预测为正、FN:假负例,样本为正,预测为负。混淆矩阵如下图所示。 有了精确率和召回率,可以以精确率为横轴,以召回率为纵轴,绘制P-R曲线,这个曲线使用不方便,因此提出了更综合的指标,如F1分数,F1分数计算方式就是取准确率和召回率的调和平均数。 说了这么多,同学要急了,你讲这么多我都知道,我就是一直不知道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曲线如图: 我们刚才已经讲到了一部分排序的知识,那么为什么有些大佬说: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曲线如下: 这里的基尼系数的概念,如下图,是
g
i
n
i
=
A
A
+
B
gini=\frac{A}{A+B}
gini=A+BA 显然,AUC=A+C,因此,通过简单的数学代换,可得GINI=2*AUC-1。 |
CopyRight 2018-2019 实验室设备网 版权所有 |