前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习评测指标概述

机器学习评测指标概述

作者头像
我有一只萌妹子
发布2022-06-23 14:05:31
1.2K0
发布2022-06-23 14:05:31
举报
文章被收录于专栏:编程碎碎念编程碎碎念

机器学习评测指标概述

文章目录

1. 基本分类

1.1 样本类别

机器学习评测任务的一个样本,根据预测结果和标注结果的不同,有如下所示的四个类别:

真实\预测

正类

负类

正类

TP

FN

负类

FP

TN

具体而言

TP(True Positive):P表示预测为正类;同时实际也是正类,这是正确的,所以是True,组合为TP,也叫真阳

FN(Flase Negative):N表示预测为负类;同时实际是正类,这是错误的,所以是False,组合为FN,也叫假阴

FP(False Positive):P表示预测为正类,同时实际是负类,这是错误的,所以False,组合为FP,也叫假阳

TN(True Negative):N表示预测为负类,同时实际是负类,这是正确的,所以True,组合为TN,也叫真阴

以新冠肺炎核酸检测为例,假定阳性为正类,那么对于一次核酸检测,阳性患者被检测为阳性为TP,被检测为阴性为FN,阴性健康人被检测为阳性为FP,被检测为阴性为TN。

1.2 置信度阈值

置信度阈值(confidence threshold),用于对预测结果进行分类。模型的每一个预测结果都会伴随一个置信度,给定置信度阈值后,只有预测置信度超过阈值且结果预测正确才能认为是一个TP。

1.3 IoU阈值

IoU(Intersection over Union),指框的交并比,取值范围为[0,1],如果两个框完全重合则为1,完全不重合为0。在目标检测的样本分类过程中,判断框是否预测正确,一方面要比较模型输出的置信度和给定的置信度阈值,另一方面也要计算预测框与标注框的IoU,置信度阈值和IoU阈值同时满足条件才能认为预测正确。此外,如果预测结果中多存在多框,那么对于某个预测框,与其IoU最大的标注框为对应框,在进一步比较预测类别是否正确。

Figure 2: Computing the Intersection of Union is as simple as dividing the area of overlap between the bounding boxes by the area of union (thank you to the excellent Pittsburg HW4 assignment for the inspiration for this figure).
Figure 2: Computing the Intersection of Union is as simple as dividing the area of overlap between the bounding boxes by the area of union (thank you to the excellent Pittsburg HW4 assignment for the inspiration for this figure).

2. 基本指标

基于单个样本的基本分类,对于一组样本则有一些由基本分类计算而来的基本指标,用以衡量模型的效果

recall

recall(召回率),表示样本中的正类被正确预测为正例的比例,也叫查全率。以新冠检测为例,为一组检测中,阳性患者被正确检出的比例。

recall = \frac{TP}{TP+FN}

precison

precison(精确率),表示预测结果为正类的样本中,真正的正样本比例。以新冠检测为例,为一组检测中,检测结果为阳性的样本中确为阳性的比例。

precison = \frac{TP}{TP+FP}

accuracy

accuracy(准确率),表示分类正确的样本占总样本个数的比例。以新冠检测为例,为一组检测中,阳性检测为阳性,阴性检测为阴性的人数与全体检查人数的比值。

accuracy = \frac{TP+TN}{TP+FP+TN+FN}

3.进阶指标

以基础指标为基,在全面的评估模型效果时,还有一些常用的进阶指标,在本节一一列出。

3.1 F1-score

F1-score,为percision和recall的调和平均值,用以解决其二者矛盾的问题

F1=\frac{2*precision*recall}{precision+recall}

3.2 pr曲线

定义

pr曲线(precision-recall curve),描述一组样本下,二分类问题的精确率和召回率随置信度的波动情况。

以猫狗分类为例,对于每一个样本都有一个置信度阈值(confidence-threshold),在该阈值的上下,TP和FP可能有不同表现,导致precision和recall的变化。

例如,以猫为正类绘制pr曲线时: 对于某个样本猫, 如果预测结果为猫,置信度为0.6,那么将置信度的阈值调整为>0.6后,TP的数量-1 如果预测结果为狗,置信度为0.6,那么将置信度的阈值调整为>0.6后,TP的数量+1

对于某个样本狗, 如果预测结果为狗,置信度为0.6,那么将置信度的阈值调整为>0.6后,FP的数量+1 如果预测结果为猫,置信度为0.6,那么将置信度的阈值调整为>0.6后,FP的数量-1,TP的数量+1

pr曲线示例

image-20220506225627684
image-20220506225627684
计算方式
  1. 首先将预测结果根据置信度进行重排
  2. 遍历预测结果,TP和FP逐一变化,进而导致precision和recall的变化
计算函数

sklearn库中的pr曲线计算函数(适用于二分类问题) htTPs://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html

目标检测的pr曲线计算

由1.3的内容可知,目标检测任务对样本分类的过程中还需要考虑IoU阈值,因此pr曲线的计算略有不同,大致计算方式为:对于预测的所有框,记为DTs(Detection Target), 每一个DT包含它的位置坐标和分类得分,我们按照上面所述的,对DTs按照分类得分由大到小进行排序,为了表示方便,仍旧记为DTs, 对于真实的Ground Truth, 我们记为GTs, 按照顺序,对于DTs中的每一个DT,都计算它和GTs的IOU值,如果最大的IOU值大于阈值,那么就认为检测成功,算作TP,并且最大IOU值的GT被认为是匹配成功,需要将其从GTs中移除;如果该最大的IOU值小于阈值,那么就意味着该DT与所有的GTs都匹配失败,是一个误检,自然就算作FP了;会出现多个检测结果DT同一个GT相匹配,那么分数最高(不是IOU值最高,而是该DT的分类得分)的被认为是TP,其余的检测结果被认为是FP,那么遍历完所有的DTs, 我们就知道哪些是TP,哪些是FP,而此时,如果GTs中仍然还有剩下的(因为匹配上的都被移走了)被认为是FN。

计算方式参考:htTPs://github.com/facebookresearch/detectron2/blob/main/detectron2/evaluation/pascal_voc_evaluation.py#L187

多分类p-r曲线计算方式

在描述多分类问题时,以 猫、狗、虎 三分类为例,对于某个类别猫,pr曲线的正负样本自然就变成了猫和非猫(狗+虎),这一显然的变化带来一个稍显复杂的问题:

多分类问题中,某个样本会输出所有类别的预测概率,但是猫和非猫的概率总和不像二分类问题一样总和为1,因此在围绕某个阈值上下波动的时候,最终的评测结果不一定会发生变化,此外,对于多分类问题,当阈值超过预测结果的最大值时,会认为该样本无效,因此产生了两种计算方式,

1.计算某一个类别(猫)的pr曲线时,只考虑模型输出中该类别的输出,那么猫和非猫的概率总和为1,计算方式与二分类问题一致。但是该计算方式与多分类模型的计算混淆矩阵时有所出入,多分类问题一般会采纳置信度最高的结果为最终结果。

2.保持置信度最高的结果为最终结果,在最终结果与标注结果一致时,与1的计算方式并无不同,最终结果与标注结果不一致时,该组p-r值对应的置信度阈值无法给出。举例分析,计算猫的pr曲线时: 对于某个样本猫,如果最高置信度结果为狗,那么置信度阈值的上升也不会将FN变为TP; 对于某个样本狗, 如果预测结果为虎(虽不为同一类别,但同样预测正确),那么置信度阈值的上升也不会将TN变为FP; 如果预测结果为猫,那么置信度阈值的上升,会使得FP变为TN。(最高阈值未过置信度阈值时,结果也为非猫),因此置信度为该预测结果的置信度。 但是将负样本正确预测为负样本的概率无法得知

综合以上情况,在计算多分类模型的pr曲线时,一般采用第1种方式进行计算,即在计算某一类别的pr曲线时,仅考虑模型对该类别的输出结果,忽略其他输出结果。

3.3 mAP

定义

mAP(mean Average Precision),AP为平均准确率,相当于pr曲线的面积,面积公式表示为,

AP = \int_0^1 p(r)dr

其中,

p(r)

表示precision随recall的变化函数。以为下图为例,pr曲线与坐标轴围成的面积为该组样本的AP值,因为precison和recall的值都在[0,1]区间,显然AP的值也在[0,1]区间。

img
img
求解方式

在实践中一般用插值法进行近似求解,此处采用Pascal VOC竞赛中的VOC2010–2012方式求解,近似求解的公式为:

AP \approx \sum{(r_{n+1} - r_n) p_{interp}(r_{n+1})} \tag{1.1}
p_{interp}(r_{n+1}) = \max p( \widetilde r) {\quad}{\quad}{\quad} (\widetilde r \geq r_{n+1}) \tag{1.2}
img
img

具体而言,根据p-r值的数量,在每一个点上求插值,

p_{interp}(r_{n+1})

表示

r_{n+1}

右侧(包括

r_{n+1}

)中的最大值。

对不同类别的AP求平均值即为mAP

计算函数

插值计算法参考代码 htTPs://github.com/facebookresearch/detectron2/blob/main/detectron2/evaluation/pascal_voc_evaluation.py#L155

3.4 混淆矩阵

定义

混淆矩阵(confusion matrix),也叫误差矩阵,用于直观的表示分类任务中各个类别的预测情况。

真实\预测

Cat

Dog

Pig

Tiger

Unknown

Cat

15

1

1

Dog

1

2

1

Pig

79

5

Tiger

4

15

3

Unknown

0

0

如上图所示为一个多分类问题的混淆矩阵,纵轴的标签表示某个样本的标注结果,横轴的标签表示某个样本的预测结果。以 [Cat,Cat]=15 为例,这一格表示,在给定的置信度阈值下,有15个标注结果为猫的框被正确分类; [Cat,Pig]=1 则表示,有一个标注结果为猫的框被错误预测为猪;而 [Cat,Unkonwn]=1 则表示,有一个标注结果为猫的样本,模型输出的所有预测结果均未超过给定的阈值,所以分类到Unkonw当中。需要注意的是:这里的Unknow并非一个真实的标签。

计算函数

sklearn库中的混淆矩阵计算函数

htTPs://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

参考文献

  1. htTPs://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173
  2. htTPs://en.wikipedia.org/wiki/Confusion_matrix
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 机器学习评测指标概述
    • 文章目录
      • 1. 基本分类
        • 1.1 样本类别
        • 1.2 置信度阈值
        • 1.3 IoU阈值
      • 2. 基本指标
        • recall
        • precison
        • accuracy
      • 3.进阶指标
        • 3.1 F1-score
        • 3.2 pr曲线
        • 多分类p-r曲线计算方式
        • 3.3 mAP
        • 3.4 混淆矩阵
        • 参考文献
    相关产品与服务
    图像识别
    腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档