机器学习评测指标概述
文章目录
- 机器学习评测指标概述
- 1. 基本分类
- 1.1 样本类别
- 1.2 置信度阈值
- 1.3 IoU阈值
- 2. 基本指标
- recall
- precison
- accuracy
- 3.进阶指标
- 3.1 F1-score
- 3.2 pr曲线
- 定义
- 计算方式
- 计算函数
- 目标检测的pr曲线计算
- 多分类p-r曲线计算方式
- 3.3 mAP
- 定义
- 求解方式
- 计算函数
- 3.4 混淆矩阵
- 定义
- 计算函数
- 参考文献
- 1. 基本分类
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最大的标注框为对应框,在进一步比较预测类别是否正确。
2. 基本指标
基于单个样本的基本分类,对于一组样本则有一些由基本分类计算而来的基本指标,用以衡量模型的效果
recall
recall(召回率),表示样本中的正类被正确预测为正例的比例,也叫查全率。以新冠检测为例,为一组检测中,阳性患者被正确检出的比例。
precison
precison(精确率),表示预测结果为正类的样本中,真正的正样本比例。以新冠检测为例,为一组检测中,检测结果为阳性的样本中确为阳性的比例。
accuracy
accuracy(准确率),表示分类正确的样本占总样本个数的比例。以新冠检测为例,为一组检测中,阳性检测为阳性,阴性检测为阴性的人数与全体检查人数的比值。
3.进阶指标
以基础指标为基,在全面的评估模型效果时,还有一些常用的进阶指标,在本节一一列出。
3.1 F1-score
F1-score,为percision和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曲线示例
计算方式
- 首先将预测结果根据置信度进行重排
- 遍历预测结果,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曲线的面积,面积公式表示为,
其中,
表示precision随recall的变化函数。以为下图为例,pr曲线与坐标轴围成的面积为该组样本的AP值,因为precison和recall的值都在[0,1]区间,显然AP的值也在[0,1]区间。
求解方式
在实践中一般用插值法进行近似求解,此处采用Pascal VOC竞赛中的VOC2010–2012方式求解,近似求解的公式为:
具体而言,根据p-r值的数量,在每一个点上求插值,
表示
右侧(包括
)中的最大值。
对不同类别的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
参考文献
- htTPs://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173
- htTPs://en.wikipedia.org/wiki/Confusion_matrix