简单易懂的ROC曲线和AUC面积
前言
咱们在前面的学习中,对于模型的好坏,我们使用最多的是用精准度来衡量。这对于数据样本类别个数相对均匀来讲,是很好的衡量方法。但是对于数据样本类别极度失衡的情况,比如正样本有1000个,负样本只有10个,使用模型精准度来作为衡量标准就不合适了。接下来,咱们介绍一种新的衡量模型好坏的方法–ROC曲线。
什么是ROC曲线和AUC面积
1. ROC曲线
ROC,全拼为Receiver Operating Characteristic Curve,意思为受试者工作特征曲线。字面意思我们可能不太好理解,没关系,咱们先看去了解一下下面这个表格:
然后我们基于这个表,有可以得出以下两个指标:
-TPR:真阳性率(true posotive rate),也称灵敏度或正确率,用来反应发现病人的能力。
-FPR:假阳性率(false positive rate),也称为误诊率,解释为实际无病,但是被判定为有病的百分比
下面举个例子来说明一下。假设我们训练了一个识别苹果的模型,共有5个待测试数据集,其中3个是苹果分别是a1,a2,a3;2个是橘子,o1,o2。
将数据集输入到模型中,输出结果为 a1、a2、o1 为苹果,a3、o2不是苹果。
那么,我们此时可以先把表格填写完整:
这样我们就可以得出其真阳性率和假阳性率。
TPR = 2/(2+1)=0.6667
FPR = 1/(1+1)=0.5
所以真阳性率为0.6667,假阳性率为0.5.
从公式上来看,对于模型的期待,我们肯定希望真阳性率越来越高,假阳性率越来越低。
基于此呢,我们引出ROC曲线。
ROC曲线 曾经被用作二战时期的雷达监测,现在多被用在医学诊断和模型评估。
在ROC曲线中,真阳性率TPR 作为坐标轴的Y轴,也就是纵轴。假阳性率作为坐标轴的X轴,也就是横轴。
我们看下面这个图:
由于我们希望真阳性率越大越好,假阳性率越小越好,所以我们期待蓝色曲线靠近左上角,这样能够体现我们模型比较优良。
在图像中,我们有两个初始点,(0,0),(0,1)。
(0,0)表示,当TP=0时,即在所有真实确诊病人中,没有一个被检测出来;当FP=0时,即任何一个没有患病的人都没有被检测出来患病,也就是没有出现误诊。
(1,1)表示,TP=TP+FN,即FN为0,也就表示所有真实确诊的病人,都被检测出来了;FP = FP+TN,即TN为0,表示所有没有患病的人,都被检测出有病,即误诊率为100%。
2. 如何画ROC曲线
首先我们看再看一眼公式: