【深度学习基础】常用指标概述

本文对一些常用的指标进行概述整理。

 

AUC和ROC曲线

ROC曲线的全称为 Receiver Operating Characteristic Curve,中译为“受试者工作特征曲线”(不过没见过人用中文这么说),曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。

混淆矩阵

首先需要理解下图的混淆矩阵:

在分类问题中,可以根据真实值和预测结果的组合,划分为四种组合:

真阳:真实值和预测值都为Positive (True Positive, TF)

假阳:真实值为Negative, 预测值为Positive (Fasle Positive, FP)

假阴:真实值为Positive,预测值为Negative (True Negative, FN)

真阴:真实值和预测值都为Negative (False Negative, TN)

其中,TP + FN = N, FP + TN = N。

至于是否将预测值判定为Positive,取决于设置的门限大小(threshold)

精确率(precision)、召回率(recall)、准确率(accuracy)

精确率(precision)是针对预测结果而言的,表示预测为positive的样本中有多少是真正的positive,即有

[公式]

召回率(recall)是针对原来的样本而言的,即表示原来的样本中有多少positive被预测正确了:

[公式]

分子是一样的,只是分母不同,即在不同样本上针对同一成分的描述,下图描述的很形象:

准确率(accuracy),表示预测正确的(包括positive和negative)百分比:

accuracy = (TP + TN)/(TP + FP +TN + FN)

还有个F1的计算,通过召回率和精确率得到

F1 Score = P*R/2(P+R)

ROC曲线

ROC曲线关注两个指标,真阳率(TPR)和假阳率(FPR):

TPR表示预测为positive,实际值也为positive的样本占所有positive的比例,FPR表示预测为postive但实际为negative占所有negative的比例。在ROC空间中,横坐标为FPR,纵坐标为TPR:

ROC曲线和它相关的比率

ROC曲线上的每一个点对应一个threshold,当预测值大于threshold时分类器将其判断为positive,小于时判断为negative,然后计算其TPR和FPR,得到ROC曲线上的一个点。

特别的,在ROC空间中,原点处threshold=1,TPR=FPR=0,右上方threshold=0时,TPR=FPR=1。

理想的目标是TPR越靠近1越好,FPR越靠近0越好,这样召回率越大,假阳率也越小,在图中对应的点就是ROC曲线的左上角。

随着threshold的变化,得到ROC的点也在变化,下图体现了变化过程。当threshold向左移动时,门限降低,蓝色的False Positive区域在扩大,即FPR增大,红的True Positive也在增大,即TPR增大,在ROC空间中对应的为都增大的一个过程,即从A点到B点,从图上看的话,蓝色的分布概率图时扁平的,而红色是凸起的,因此相对而言TPR增大的更为显著,整体的ROC曲线就是向左上角凸起的。

ROC曲线画图

直接引用通用案例。下图中,Class表示样本真实标签(p或者n),Score是测试为正样本的概率:

接下来,设定不同的threshold,这边是从高到底按照Score值作为threshold,分别计算出每一个threshold对应的TPR和FPR,一共20个Score,即设定20个threshold,得到20组TPR和FPR的值,将其结果绘制成图并连接邻接点:

AUC值的计算

AUC(Area under Curve)即ROC曲线下的面积,因为ROC曲线一般实在y=x上方的,AUC显然不可能达到1,因此AUC的取值范围在0.5-1之间,AUC越靠近1说明分类效果越好,前面说了,坐标点是越靠近左上角越好的,因为这种情况下TPR越接近1,FPR越接近0。

ROC曲线可以看出分类器的大致好坏,如下图绿色和蓝色的两条曲线,绿色被蓝色包围了,任意threshold情况蓝色都优于绿色。但是如果两条曲线发生了交叉呢?那么就不好判断两个分类器孰优孰劣了,此时则需要通过比较AUC来衡量模型的优劣性。

从统计的角度理解AUC,引申定义:The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example。即随机给定一个正样本和一个负样本,分类器输出该正样本为正的概率值比分类器输出该负样本为正的那个概率值要大的可能性。可以理解为表示模型区分正负样本能力的数值大小,数值越大,区分越显著,效果越好。

公式证明:https://www.alexejgossmann.com/auc/

 

计算方法一般分为两种:

(1)计算ROC曲线下的面积,需要积分计算,比较复杂,实际较少应用。

(2)按照引申的定义,即随机抽取一对正负样本,正样本大于负样本的概率,即为AUC:

(2.1)和法(2)一样,用于简化计算,首先对score从大到小排序,令最大score对应的样本的排序为n,第二大的score对应的样本排序为n-1,以此类推,。把所有的正类样本的排序rank相加,再减去正样本大于正样本的情况M(M+1)/2,得到的就是所有样本中正类的score大于负类样本的score的数量对,再除以MxN,即得到AUC

sklearn中可以直接调用方法:

 

from sklearn.metrics import roc_auc_score
AUC = roc_auc_score(y_truth,y_pred)

 

 

 

 

Reference:

https://www.zhihu.com/question/19645541

https://zhwhong.cn/2017/04/14/ROC-AUC-Precision-Recall-analysis/

 https://www.plob.org/article/22899.html#:~:text=3.%20%E6%96%B9%E6%B3%953%E8%B7%9F%E6%96%B9%E6%B3%95,2)%2F(M*N)%E3%80%82

posted @ 2022-04-14 20:28  理想很难  阅读(393)  评论(0编辑  收藏  举报