ROC和AUC最详细解读

本着科普类文章最基本的原则,由浅入深的讲解ROC和AUC.

  • 混淆矩阵
  • ROC曲线
  • AUC
  • 优势
混淆矩阵

混淆矩阵是衡量二分类模型最简单、最直观的方法。

正例(positive) 反例(negative)
(预测)正例 true positive(TP) false positive(FP)
(预测)反例 false negative(FN) true negative(TN)

\quad \quad 上面这个表格就是混淆矩阵,行标题的正例和反例是样本真实的分类,列标题代表分类模型预测的结果。TP代表样本真是为正例,模型预测也为正例,叫做真阳;FP代表样本真实是反例,模型预测为正例,叫做假阳;FN代表样本真实是正例,模型预测为反例,叫做假阴;TN代表样本真实是反例,模型预测也为反例,叫做真阴。
\quad \quad 从混淆矩阵中,我们可以得到5个基本的评价分类模型指标:
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
表示所有分类正确的样本占总样本的比值(ACC)。

p r e c i s i o n ( 精 确 率 ) = T P T P + F P precision(精确率)=\frac{TP}{TP+FP} precision=TP+FPTP
表示在所有预测为正例的样本中,真实为正例的比值(PPV)。

r e c a l l ( 召 回 率 ) = T P T P + F N recall(召回率)=\frac{TP}{TP+FN} recall=TP+FNTP
表示在所有真实为正例的样本中,预测也为正例的比值(TPR)。

s p e c i f i c i t y ( 特 异 率 ) = T N T N + F P specificity(特异率)=\frac{TN}{TN+FP} specificity=TN+FPTN
表示在所有真实为反例的样本中,预测也为反例的比值(TNR)。

F 1 m e a s u r e = 2 1 p r e c i s i o n + 1 r e c a l l F1\quad measure=\frac{2}{\frac{1}{precision}+\frac{1}{recall}} F1measure=precision1+recall12
综合了precision和recall的结果,取值在0到1之间,0表示模型效果最差,1表示模型效果最好。

ROC曲线
ROC曲线的绘制

\quad \quad 先给出两个概念的定义:
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP,代表实际的正样本中,正确预测的比例,记作真阳率。
F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP,代表实际的负样本中,错误预测的比例,记作假阳率。
\quad \quad TPR、FPR ∈ [ 0 , 1 ] \in[0,1] [0,1],TPR越高越好,而FPR越低越好。对于任意的一个二分类模型,都可以得到TPR和FPR两个指标,我们以FPR为横坐标,TPR为纵坐标,在平面直角坐标系中标出该分类模型对应的点。
\quad \quad 有了一个点,如何得到一条曲线呢?总所周知,分类模型首先给出样本属于某类的概率,然后人为指定一个阈值,概率大于该阈值则样本属于某类,小于则属于另一类。下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
ROC和AUC最详细解读_第1张图片
我们从高到底,依次把score作为分类模型的阈值,在每一个阈值下都可以计算出一对(FPR, TPR),共有20个点,把它们画在坐标系中,就可以得到一条曲线,即ROC曲线。实际中,我们会有很多个测试样本,按上面的方法会得到很多个点,最终得到一条近似光滑的曲线。当模型达到理想状态,即FPR为0,TPR为1,模型最好,因此越接近(0,1)点的分类模型效果越好。当FPR=TPR时,模型效果等于随机分类。
\quad \quad 对上面的描述做一个总结:ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC 曲线。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。

AUC

\quad \quad AUC即 area under curve,顾名思义,AUC是ROC曲线下的面积,也是二分类模型的一个评价指标。为什么要使用AUC呢?因为当比较不同分类模型的性能时,ROC给出的只是一个直观上的对比结果,即曲线越靠近左上角越好。当两个分类模型的ROC曲线相交时,很难直接说出那个模型的性能更好。因此,我们进一步引出了AUC这个指标,它是一个数值,可以清晰地比较模型优劣。AUC值小于1,一般介于0.5到1之间,AUC值越大越好。

优势

\quad \quad 为什么使用ROC曲线呢?原因有二(期待有人继续补充):
1.当测试集中的正负样本比例发生变化时,ROC曲线基本不变。它很好的规避了样本不均衡带来的影响和虚假accuracy。仍然借用网络上的一张图:
ROC和AUC最详细解读_第2张图片
a和b分别表示两个模型在正负样本均衡下的ROC曲线和PR曲线(precision-recall曲线),c和d分别是负样本增大到原来的10倍的结果。明显看出,PR曲线变化很大,而ROC曲线的形状基本不变。
2.前面说到,分类模型中需要人为指定一个阈值,根据这个阈值来最终确定每个样本的类别,因此这个阈值的选择会直接影响模型的精度。ROC曲线描绘了不同阈值下的FPR和TPR,帮助我们选到最优的阈值,一定程度上避免了这个问题。

你可能感兴趣的:(神经网络,评价体系)