准确率,精准率,召回率,真正率,假正率,ROC/AUC

前言

  最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来。
我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介绍下什么是混淆矩阵,如下表所示:
混淆矩阵:
在这里插入图片描述

  • P(Positive):代表1
  • N(Negative):代表0
  • T(True):代表预测正确
  • F(False):代表预测错误

TP:预测为1,预测正确,即实际1
FP:预测为1,预测错误,即实际0
FN:预测为0,预测错误,即实际1
TN:预测为0,预测正确,即实际0
简单记这个混淆矩阵就是前面一个表示预测正确与否,后面一个表示预测的值。

一.准确率

混淆矩阵理理解之后我们看下准确率。
准确率:
  准确率即预测正确的结果占总样本的百分比,其公式如下:
准确率 = T P + T N T P + T N + F P + F N 准确率=\frac{TP+TN}{TP+TN+FP+FN} 准确率=TP+TN+FP+FNTP+TN
  准确率虽然可以判断总的正确率,但是在样本不平衡的情况下,准确率就显得无助了。举个例子:比如一个样本中正样本占比0.95,负样本占比0.05,这个时候只需要将全部样本都预测为正样本就能够得到95%的正确率,显然是不合理的。正是因为准确率的这种缺陷,于是诞生了精准率和召回率,或者叫做查准率和查全率。

二.精准率

  精准率(Precision)又叫查准率,它是针对预测结果而言的,是指在所有被预测为正的样本中实际为正的样本的概率,意思就是在预测为正样本的结果中,我们有多少把握可以预测正确,其公式如下:
精准率 = T P T P + F P 精准率=\frac{TP}{TP+FP} 精准率=TP+FPTP
精准率就是你认为找的是对的实际上多少是对的

  注意:精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

三.召回率

  召回率(Recall)又叫查全率,是针对原样本而言的,是指在实际为正的样本中被预测为正样本的概率,其公式如下:
召回率 = T P T P + F N 召回率=\frac{TP}{TP+FN} 召回率=TP+FNTP
召回率就是实际上是对的样本中找出来对的的概率。

  召回率又叫查全率,从他的名字上都能看出来,召回率越高,代表实际想预测出来的样本的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。

四.精准率和召回率的关系,F1分数

  通过上面的公式,我们发现:精准率和召回率的分子是相同,都是TP,但分母是不同的,一个是(TP+FP),一个是(TP+FN),两者的关系可以用一个P-R图来展示,于是就得到了我们常说的P-R曲线:
在这里插入图片描述
  从图中可以看出查全率和查准率是一对矛盾体,两者成反比,想要更高的查全率,那么查准率就会降低,反之,想要更高的查准率,查全率就会降低。我们怎么理解这个曲线呢?查准率表示我们预测为正样本实际上里面有多少为正样本的概率,查全率表示实际为正样本,我找出来了多少。以一个逻辑回归举例,逻辑回归的输出是一个0到1之间的概率数字,因此,如果我们想要根据这个概率判断用户好坏的话,我们就必须定义一个阈值。通常来讲,逻辑回归的概率越大说明越接近1,也就可以说他是坏用户的可能性更大。比如,我们定义了阈值为0.5,即概率小于0.5的我们都认为是好用户,而大于0.5都认为是坏用户。因此,对于阈值为0.5的情况下,我们可以得到相应的一对查准率和查全率。这个阈值是随便定义的,为了找到一个最合适的阈值满足我们的要求,我们就必须遍历0到1之间所有的阈值,而每个阈值下都对应着一对查准率和查全率,从而我们就得到了这条曲线。
这里先补充一个知识点mAP,在目标检测里面我们经常会看到这个词,他的含义就是P-R曲线下面的面积。

五.F1分数

  下面我们来讲下什么是F1分数,通常,如果我们想要找到查准率和查全率之间的一个平衡点,我们就需要一个新的指标:F1分数。F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡。F1分数的公式为:
F 1 分数 = 2 × 查准率 × 查全率 查准率 + 查全率 F1分数=\frac{2\times查准率\times查全率}{查准率 + 查全率} F1分数=查准率+查全率2×查准率×查全率

六.灵敏度和特异度

  讲完了上面的各种率,下面我们再来看下ROC/AUC。在介绍ROC/AUC之前我们还需要知道两个概念:灵敏度和特异度。
灵敏度 = T P T P + F N 灵敏度=\frac{TP}{TP+FN} 灵敏度=TP+FNTP
灵敏度就是召回率。
特异度 = T N F P + T N 特异度=\frac{TN}{FP+TN} 特异度=FP+TNTN
特异度表示实际为负样本,正确的预测为负样本的概率。但是我们通常只关心正样本的概率,二不关心负样本,于是引申出来下面的假正率。假正率表示为:表示实际为负样本,错误的预测为负样本的概率

七.真正率和假正率

  细心的小伙伴可能发现了灵敏度不就是召回率吗,只是换了个马甲而已。由于我们比较关心正样本,所以需要查看有多少负样本被错误地预测为正样本,所以使用(1-特异度),而不是特异度。所以又引申出了两个概念真正率和假正率:
真正率 = 召回率 = 灵敏度 = T P T P + F N 真正率=召回率=灵敏度=\frac{TP}{TP+FN} 真正率=召回率=灵敏度=TP+FNTP
假正率 = 1 − 特异度 = F P F P + T N 假正率=1-特异度=\frac{FP}{FP+TN} 假正率=1特异度=FP+TNFP
  通过上面的定义可以发现,真正率和假正率分别是基于实际表现1和0出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。正因为如此,所以无论样本是否平衡,都不会被影响。还是拿之前的例子,总样本中,95%是正样本,5%是负样本。我们知道用准确率是有水分的,但是用真正率和假正率不一样。这里,真正率只关注95%正样本中有多少是被真正覆盖的,而与那5%毫无关系,同理,假正率只关注5%负样本中有多少是被错误覆盖的,也与那95%毫无关系,所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用真正率和假正率作为ROC/AUC的指标的原因。

八.ROC曲线

  下面我们看下ROC曲线ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。
  ROC曲线中的主要两个指标就是真正率和假正率,上面也解释了这么选择的好处所在。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的ROC曲线图。

在这里插入图片描述
  与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在ROC曲线图中也会沿着曲线滑动。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  ROC曲线中我们仍然会遇到一个问题,怎么判断ROC曲线的好坏?改变阈值只是不断地改变预测的正负样本数,即真正率和假正率,但是曲线本身是不会变的。那么如何判断一个模型的ROC曲线是好的呢?这个还是要回归到我们的目的:FPR表示模型虚报的响应程度,而TPR表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是真正率越高,同时假正率越低(即ROC曲线越陡),那么模型的性能就越好。ROC曲线也无视样本不平衡。
AUC
  同P-R曲线的mAP一样,ROC也会计曲线下的面积,叫做AUC。比较有意思的是,如果我们连接对角线,它的面积正好是0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是50%,表示随机效果。ROC曲线越陡越好,所以理想值就是1,一个正方形,而最差的随机判断都有0.5,所以一般AUC的值是介于0.5到1之间的。
AUC的一般判断标准:

  • 0.5 - 0.7:效果较低,但用于预测股票已经很不错了
  • 0.7 - 0.85:效果一般
  • 0.85 - 0.95:效果很好
  • 0.95 - 1:效果非常好,但一般不太可能

猜你喜欢

转载自blog.csdn.net/qq_38683460/article/details/126492686