评价指标的引出

为什么要引出这么多评价指标,它是基于什么样的需求?

在生活中,最常用的就是准确率,因为它定义简单而且比较通用,但在机器学习中,它往往不是评估模型的最佳工具, 特别是在数据分布不平衡的时候,请看一个例子:

比如我们训练了一个预测地震的模型,预测类别只有两个:0:不发生地震、1:发生地震,当前有100个测试集,如果模型地无脑把每一个测试用例都预测为0,那么它就达到99%的准确率,但实际上它并不具有预测的能力,为什么会出现这种情况?因为这里数据分布不平衡,类别为1的数据太少,完全分错类别1依然可以达到很高的准确率,因此在正负样本不平衡的情况下,准确率这个评价指标就有很大的缺陷。(这里的正负是相对于任务来说的,对于预测地震这个任务而言,目标是预测出地震,所以地震就是正例)

准确率是关注了所有分类正确的,当正负样例分布不平衡时,负例占据了绝大多数,而正例得不到体现,因此会造成分数高的情况,那么一个很自然解决的办法就是我们聚焦于关注正例的识别,于是就引出了精确率(精度)、召回率等指标。

一级指标

准确率、精确率、召回率等这些评价指标都是基于底层的统计指标(一级指标)计算出来的。

对于一个二分类问题,模型的预测结果有四类:

  1. 真正例,模型预测为正例,结果是真的,所以实际是正例(True Positive=TP)
  2. 假正例,模型预测为正例,结果是假的,所以实际是负例(False Positive=FP)
  3. 真负例,模型预测为负例,结果是真的,所以实际是负例(True Negative=TN)
  4. 假负例,模型预测为负例,结果是假的,所以实际是正例(False Negative=FN)

缩写可能比较容易搞混,注意前面的真假是修饰后面模型预测的正负,是对模型的预测结果的描述,比如第2个,假正例,表示模型预测的是正例,但是结果是假的,意思是实际它是负例,好好体会(手动狗头

将这四个指标放在表格里就能得到如下这样一个矩阵,称它为混淆矩阵(Confusion Matrix):
在这里插入图片描述

二级指标

有了混淆矩阵,就可以进一步计算准确率、精确率(精度)、召回率了,这些属于二级指标,计算方式如下:
在这里插入图片描述
可以看到,相比准确率的全局关注,精确率和召回率更多的关注了正例的内容

三级指标

F1值

有了精确率和召回率,为什么还要引入F1值指标呢?

在实际应用中,模型的精确率和召回率是矛盾的,一个高一个就低,以预测地震为例,测试集中1000天中有10天地震,假如模型不轻易预测为地震,但一个预测一个准,1000天就预测了一天为地震(预测对),那么它的精确率就为1,但召回率只有10%,假如模型随便就预测为地震,预测了100天地震(预测出了全部),那召回率为1,但精确率就只有10%。所以需要综合的考虑两者的分数,于是就引入了F1值,它是精确率和召回率的调和平均,计算方式为:
F 1 = 2 ∗ precision  ∗  recall precision  + recall F_{1}=2 * \frac{\text {precision } * \text { recall}}{\text {precision }+\text {recall}} F1=2precision +recallprecision  recall
F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差,很多常见的任务比如比如命名实体识别就拿它作为评价指标。

ROC和AUC

在二分类问题中还有一个经常使用的评价指标AUC(Area Under roc Curve),而计算AUC依赖于ROC(Receiver Operating Characteristic)曲线。为什么需要这样一个指标?

我们都知道准确率,精确率,召回率,F1-Score等这些指标只能反映模型在某一状态下的性能,而我们给模型不同的分类阈值,模型是是会有不同的性能表现的,那么AUC就是一种能够反映模型全局性能的指标。

我们首先介绍一下ROC曲线,ROC曲线使用真正率(TPR) = TP/(TP+FN),也就是召回率作为纵坐标,使用假正率(FPR)= FP/(FP+TN)作为横坐标,然后不断调整这个分类器的分类阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器(随机分类的性能是)。如下图所示:
在这里插入图片描述

对于这个图,我们当然系统系统TPR越高(覆盖的越多越好),同时FPR越低(虚报的越少越好),反映在图中即ROC曲线越陡,那么模型的性能就越好,于是AUC(Area Under roc Curve)就出现了,AUC的值就是处于ROC 曲线下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的性能。因此AUC是一种用来度量分类模型好坏的一个标准,我们可以通过计算AUC值来对比不同模型性能。

AUC和ROC有一个特点,即可以无视样本的不平衡问题,因为涉及的真正率(TPR)和假正率(FPR)两个指标是分别在实际的正样本和负样本中来进行考察的,所以无论样本是否平衡,都不会被影响。比如总样本中,90%是正样本,10%是负样本。我们知道用准确率是有水分的,但是用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正覆盖的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被错误覆盖的,也与那90%毫无关系,这样就可以避免样本不平衡的问题了。

检索/搜索系统中的评价指标

在检索/搜索系统中,通常会给定一个query,然后通过对系统返回的top k个结果进行统计来评价系统的性能,对返回结果的判定可以是相关和不相关两种,也可以是更细粒度的相关性,这里我们主要考虑前者。

AP/MAP

检索系统中也经常使用准确率(Precision,其实就是分类问题中的精确率,不过检索系统里面大家都叫准确率) = 相关文档总数 / 返回的结果总数 = TP / (TP + FP)和召回率(Recall)= 相关文档总数 / 所有文档总数 = TP / (TP + FN) 来评价系统。

我们都知道检索系统还关心的另外一个事是文档的“位置”,相关文档排序的位置越靠前肯定越好,而Precision和Recall只是去评价检索结果“多大比例”这件事,对位置排序是不敏感的,所以就有了AP(Average Precision)
A P = 1   N × ∑ i = 1 N i  position(i)  \mathrm{AP}=\frac{1}{\mathrm{~N}} \times \sum_{\mathrm{i}=1}^{\mathrm{N}} \frac{\mathrm{i}}{\text { position(i) }} AP= N1×i=1N position(i) i
其中,N 表示相关文档总数,position(i) 表示第 i 个相关文档在检索结果列表中的位置,比如对下面图的结果,AP = (1 + 1/3 + 3/6) / 3 = 0.778
在这里插入图片描述
AP是一个query的查询结果,MAP(Mean Average Precision)就是多个query查询的平均正确率(AP)的均值,从整体上反映模型的检索性能。

RR/MRR

RR(reciprocal rank)倒数排名,指检索结果中第一个相关文档的排名的倒数,MRR(mean reciprocal rank)是指多个查询语句的排名倒数的均值,即:
M R R = 1 ∣ Q ∣ ∑ i = 1 ∣ Q ∣ 1 rank ⁡ i M R R=\frac{1}{|Q|} \sum_{i=1}^{|Q|} \frac{1}{\operatorname{rank}_{i}} MRR=Q1i=1Qranki1
其中 rank ⁡ i \operatorname{rank}_{i} ranki 表示第i个查询语句的第一个正确答案的排名。

MRR的评估假设是基于唯一的一个相关结果,换句话说,正确答案只有一个,所以MRR主要用于寻址类检索(Navigational Search)或问答类检索(Question Answering) 。比如q1的答案是排在第3位,q2的答案是在第4位,那么MRR=(1/3+1/4)/2。

持续更新中……

如果对你有帮助,请点个赞让我知道:-D

reference
https://www.cnblogs.com/xuexuefirst/p/8858274.html
https://blog.csdn.net/qq_35290785/article/details/89603729
https://www.zhihu.com/question/23700474/answer/1878757572
https://zhuanlan.zhihu.com/p/351986117
https://www.cnblogs.com/memento/p/8673309.html

更多推荐