机器学习常用评价指标
在机器学习任务中,如何对模型的好坏对模型的优化/定量评价/改进具有重大的作用,通过不同的指标对模型进行评价,我们可以快速地判断模型是否过拟合,欠拟合。此外,在不同的任务中,通过利用带阈值的评价方法,我们可以快速地判断某个模型针对哪些类型的数据处理效果不好,并且做出针对性的改进。因此对评价指标的数学意义上的了解对于机器学习/深度学习至关重要。
本文将从几个指标对机器模型的评价方式进行介绍,并且会结合一些计算机视觉中的任务,描述各种指标是如何进行实际应用的,并且如何通过更改某些阈值,对计算机视觉任务的缺陷进行判定,判断任务在何处存在问题。
1.基本术语
误差:学习器预测输出与真实输出之间的差距
训练误差/经验误差:学习器在训练集上预测输出与真实输出之间的差距
泛化误差:学习器在新样本上初测输出与真实输出之间的差距
错误率:假设个样本中有个样本分类错误,则错误率为
精度:1-错误率
过拟合:训练误差小,泛化误差大
欠拟合:训练误差大,泛化误差大
2.评估方法
待更新
3.性能度量
3.1 精度与错误率
常用于分类任务中,即适用于二分类任务,也适用于多分类任务
错误率的定义:在分类任务中,分类错误的样本占总样本D数量的比例
精度的定义:在分类任务中,分类正确的样本占总样本数量的比例
3.2 准确率(Precision)与召回率(Recall)
1.理解准确率与召回率
首先以二分类任务为例,
真实情况 | 预测结果 | |
---|---|---|
正例 P | 反例 N | |
正例 P | 真正例 TP | 假反例 FN |
反例 P | 假正例 FP | 真反例 TN |
准确率(Precision)的定义为:预测出来为正例的样本中,真实情况下也是样本的比例,表征预测的准不准
召回率(Recall)的定义为:在所有真实正例的样本中,被正确预测出来的正例样本的比例,表征预测的全不全
下面用一个实际的例子去理解以下准确率于召回率之间的关系
假设在医院中,一个人为患者标记为正例,为正常人标记为反例
则上面的表格为:
真实情况 | 预测结果 | |
---|---|---|
正例 P | 反例 N | |
正例 P | 诊断正确的患者 TP | 未被诊断出来的患者 FN |
反例 P | 被诊断为患者的正常人 FP | 正常人,也没被诊断 TN |
此时
准确率表征 被诊断为患者的人中,真正患病的人的比例
召回率表征 在所有患病的人中,被诊断出来的比例
2.准确率与召回率之间的关系
首先从感性的逻辑角度对两者关系进行理解:
当诊断的准确率达到100%时,被诊断出来的患者一定是100%的确信率,说明有一些疑似的患者没有被包括进来,相应的召回率一定是最低的。同理,当召回率达到100%,准确率也一定是最低的。
从数学角度来讲:
当Precision=1时,,此时最大,因此召回率最低。
结论:两者之间为反比关系
3.PR曲线
实际情况下,当然是准确率与召回率越高越好,但是两者往往不能兼得,通过上面的讨论可以看出,随着准确率的升高,召回率对随之下降,两者都高,不可兼得。实际上,通过设定分类阈值的方法,可以改变相应样本的数量进而逐点画出准确率随召回率的变化曲线
具体算法如下:
- 将学习器的预测结果按照 置信度 进行从大到小的排序
- 按此顺序逐个把样本作为正例进行预测,计算出当前的Precision和Recall
- 以查准率 Precision 为轴,召回率 Recall 为轴,对P-R曲线进行绘制
4.如何基于准确率与召回率对模型进行评价
基于P-R曲线,PR曲线的下面的包络面积越大,模型的效果越好 ——缺点:计算量大
基于P-R曲线,寻找其平衡点(Break-Even Point, BEP),也就是x=y时相应的坐标点的取值
F1 Score:
带偏斜的F1 Score
当,上式与F1 Score无异
当时,准确率在评判中占比更大。特殊地,当时,上式可以化简为,即此时准确率最重要。
当时,召回率在评判中占比更大。特殊地,当时,上式可以化简为,即此时召回率最重要。
5.多分类任务中的准确率与召回率
在多分类任务中,由于存在多个类别不能简单地通过二分类的方式进行P/R值的计算,因此主要有两种方式计算P/R值
第一种方法:
遍历每个类别,将其分类视为二分类问题,因此可以求得每种类别的(P,R)元组
此时,多分类任务中的准确率与召回率计算公式为:
相应F1 score即可计算得出
第二种方法:将各混淆矩阵数量进行平均
获取 ,进而可以求得
相应F1 Score也可以计算得出
6.目标检测/分割任务中的准确率与召回率的计算方法
与分类任务不同,在目标检测任务中,往往会给出多个预测目标所在位置的bounding box
下面描述一下问题场景:
对于目标检测数据集,其中数据集可以表示为:,在整个数据集中,共有种目标类别
对于图片,其有个Ground Truth标注框,各个对应的类别为
经过CNN预测,得到个bounding box,每个Bounding box对应的类别为
那么如何计算在整个数据集上的准确率与召回率呢?
算法如下:
首先对预测得到的所有bounding box,计算其与ground truth的交并比(IOU)
-
设定交并比阈值 thresh,下面分情况讨论:
i. 若,
ii. 若
若预测的bounding box类别与真实类别相同,则,并记录其confidence
若预测的bounding box类别与真实类别不同,则
因此,总共可以得到 个分数,将分数按照confidence自大到小排序,可以获得最终的TP,FP,TN,FN数量(整体的数量),也可以按类别分类,获取每个类别的TP,FP,TN,FN的数量,具体情况具体分析。
计算
这样,我们就可以获取到给定IoU情况下的准确率与召回率,进而可以得到不同阈值情况下的PR曲线。语义分割模型的方法类似,在此不再赘述。
3.3 计算机视觉任务中的mAP/AP
上节中介绍了准确率与召回率,以及两者之间的关系 ,那么如何利用这个东西去评价模型表现的好坏呢?这里就要基于IoU的阈值,并且引入额外的评价指标对目标检测的准确性进行评价了。
在目标检测任务中,通常使用mAP评价模型的检测性能
AP:给定IoU阈值下,获取到相应P-R曲线下的包络面积
mAP:所有类间mAP的均值
下面给出了CoCo官网上的评价标准 http://cocodataset.org/#detection-eval
通过不同取值下的mAP值,我们可以快速地判断模型在哪个方面存在缺陷,并加之改进
具体的计算方法与代码请参考:https://github.com/rafaelpadilla/Object-Detection-Metrics