当我们训练完一个模型算法后,该如何评估模型算法的好坏呢?不同的算法任务适用哪些评估体系呢?哪种评估方式才能真实反馈实际的效果呢?试想一下,如果我们训练了一个二分类的模型,测试数据集有100张图像,正例10张,负例90张,那么只要每张图像模型都直接判断为负例准确率都有90%了,我们不能直接说该模型性能Accuracy准确率达到了90%,实际上对于正例来说其精确率和召回率都为0。根据多年的算法开发经验,今天我们就来探讨一下模型算法评估中的“心中尺”和“心里称”!
常见的评估指标先让我们看一下以下这两个评估指标,在大名鼎鼎的ImageNet ILSVRC比赛中经常被提及的重要指标。
Top-1错误率:预测输出的概率最高的类别,是否和人工标注的类别一致,如果不一致,此时的概率,比如预测100张图像的类别,每张图像的最高概率错误的有2张,那么top-1为2%;
Top-5错误率:预测输出的概率最高的前5个类别当中,有没有和人工标注的类别不一致,当5个都不一致时错误次数占总次数的概率,比如预测100张图像的类别,每张图像前5个最高概率类别中没有一个正确时的张数有3张,那么top-5错误率为3%;
为了引出以下的评估指标,先让我们来看一个二分类的混淆矩阵,对于多分类来说,只要把其他类别当做负例则一样适用。
二分类混淆矩阵表中的四个参数说明如下:
True Positive(TP) :预测为正例,实际为正例,即算法预测正确(True)
False Positive(FP) :预测为正例,实际为负例,即算法预测错误(False)
True Negative(TN) :预测为负例,实际为负例,即算法预测正确(True)
False Negative(FN) :预测为负例,实际为正例,即算法预测错误(False)
由该混淆矩阵可以引出如下Accuracy、Precision、Recall、F1-Score等等评估指标:
Accuracy:准确率,指的是正确预测的样本数占总预测样本数的比值,它不考虑预测的样本是正例还是负例,反映的是模型算法整体性能,其公式如下:
.
Precision:精确率,指的是正确预测的正样本数占所有预测为正样本的数量的比值,也就是说所有预测为正样本的样本中有多少是真正的正样本,它只关注正样本,这是区别于Accuracy的地方,其公式如下:
.
Recall:召回率,指的是正确预测的正样本数占真实正样本总数的比值,也就是指能从这些预测样本中能够正确找出多少个正样本,其公式如下:
.
F1-Score:F1分数,是统计学中用来衡量二分类模型精确度的一种指标,它被定义为精确率和召回率的调和平均数,它的最大值是1,最小值是0,其公式如下:
.

TPR(True Positive rate):真阳率,指的是在所有实际为阳性的样本中,被正确地判断为阳性的比率,同召回率,其公式如下:
.
FPR(False Positive rate):假阳率,指的是在所有实际为阴性的样本中,被错误地判断为阳性的比率,其公式如下:
.
ROC(Receiver Operating Characteristic):受试者工作特征曲线,其以FPR假阳率为X轴坐标,以TPR真阳率为Y轴坐标,曲线越靠近左上角则说明模型算法性能越好,左上角(0,1)为最理想的情况说明模型性能非常完美,而其对角线对应于“随机猜测”模型的性能。在图像分类图像识别等任务里,模型算法的输出通常为一个预测概率,而我们通常也会设定一个阈值,超过这个阈值则我们就判断为其中的一类,反之预测为另一类。于是,不同的阈值就对应了不同的真阳率和假阳率,从而形成了真阳率和假阳率序列,它们就可以在直角坐标系上通过描点成为光滑曲线,这个曲线就是 ROC 曲线,其形状类似如下:
ROC受试者工作特征曲线AUC(Area Under Curve):ROC曲线下的面积,因为ROC“随机猜测”模型通常对应于其对角线,因而通常AUC的值范围为0.5~1,其值越大说明模型算法的性能越好,AUC为0.5时模型算法为“随机猜测”,其值为1时说明模型算法达到理想状态。通常我们可以使用sklearn.metrics.auc(fpr, tpr)来求得AUC值。
PRC(Precision-Recall Curve):精准率-召回率曲线也叫PR曲线,其以Recall为X轴坐标,以Precision为Y轴坐标,通过对模型算法设定不同的阈值会得到不同的precision和recall值,将这些序列绘制到直角坐标系上就得到了PR曲线,PR曲线下的面积为1时则说明模型算法性能最为理想。
以上评估指标大部分用于图像分类图像识别图像分割等等任务中,下面让我们来看一下在目标检测里经常用来评估模型算法性能的指标。
IOU(Intersection over Union):交并比,指的是ground truth bbox与predict bbox的交集面积占两者并集面积的一个比率,IoU值越大说明预测检测框的模型算法性能越好,通常在目标检测任务里将IoU>=0.7的区域设定为正例(目标),而将IoU<=0.3的区域设定为负例(背景),其余的会丢弃掉,形象化来说可以用如下图来解释IoU:
IoU形象化公式如果我们用A表示ground truth bbox的面积,B表示predict bbox的面积,而I表示两者的交集面积,那么IoU的计算公式如下:
.
AP(Average Percision):AP为平均精度,指的是所有图片内的具体某一类的PR曲线下的面积,其计算方式有两种,第一种算法:首先设定一组recall阈值[0, 0.1, 0.2, …, 1],然后对每个recall阈值从小到大取值,同时计算当取大于该recall阈值时top-n所对应的最大precision。这样,我们就计算出了11个precision,AP即为这11个precision的平均值,这种方法英文叫做11-point interpolated average precision;第二种算法:该方法类似,新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,该recall阈值时top-n所对应的最大precision,然后对这M个precision值取平均即得到最后的AP值。
mAP(Mean Average Percision):mAP为均值平均精度,指的是所有图片内的所有类别的AP的平均值,目前,在目标检测类里用的最多的是mAP,一般所宣称的性能是在IoU为0.5时mAP的值。常见的目标检测评估指标输出样式如下:
目标检测任务中评估指标输出样式而对于回归预测类常见的评估指标如下:
MAE(Mean Absolute Error):平均绝对误差,其能更好地反映预测值与真实值误差的实际情况,其计算公式如下:
.
RMSE(Root Mean Square Error):均方根误差,用于衡量观测值与真实值之间的偏差,其对一组预测中的特大或特小误差反映比较敏感,常用来作为机器学习模型预测结果衡量的标准,其计算公式如下:
.
以上为常见的模型算法评估指标,当然,针对特定领域还有很多评估指标,比如在机器翻译领域用于评估模型算法的指标有BLEU和METEOR,在这里就不罗列了。我们只要掌握了这些常见的评估指标,并且正确使用它们,我们就能够合理正确的评估训练出来的模型算法,从而让我们的工作结果正确应用在业务任务中来!

发表评论

您的电子邮箱地址不会被公开。