前言
最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来。
我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介绍下什么是混淆矩阵,如下表所示:
混淆矩阵:
- 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
曲线图中也会沿着曲线滑动。
文章来源:https://www.toymoban.com/news/detail-457645.html
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的一般判断标准:文章来源地址https://www.toymoban.com/news/detail-457645.html
- 0.5 - 0.7:效果较低,但用于预测股票已经很不错了
- 0.7 - 0.85:效果一般
- 0.85 - 0.95:效果很好
- 0.95 - 1:效果非常好,但一般不太可能
到了这里,关于准确率,精准率,召回率,真正率,假正率,ROC/AUC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!