天天看点

深度学习评价指标Precision和Recall

原文:https://zhuanlan.zhihu.com/p/91206205

另一解释:https://www.cnblogs.com/pprp/p/11241954.html

常用的性能评价指标有Precision,Recall和F1 score。

当面对不同的任务时,该如何提高recall和precision?

思考:对于Precision值,其代表的是你所预测出来准确结果占所有预测结果的准确性,对于Recall值,其代表的是你所预测出来准确结果占总体正样本的准确性。这样说有点难理解,举个例子吧。现在你手上有10个鸡蛋,里面有6个是好的,另外4个是坏的,你训练出一个模型,检测出8个鸡蛋是好的,但实际上只有5个是好的,另外3个是坏的。那么模型的Precision值为5/8=0.625,即表示你所预测出来的8个鸡蛋中只有5个是好的,其值只在你预测结果中计算得到,Recall值为5/6=0.833,即表示总共有6个正样本,你预测出来5个,表示的是你预测出来的正样本占总正样本的比例。(正样本理解为你要检测的目标)

即可以这样简单记为:

recall也叫召回率,记做R,表示你预测的结果中有多少正样本被正确检测出来,当R=100%的时候,表示没有漏检;

precision也叫精确率,记做P,表示你预测的结果中有多少样本是正确的,当P=100%的时候,表示没有误检。

清楚这个,我们就能根据不同的任务来对应提高Precision或者Recall值,一般来说,提高一个,另一个的值则会降低。所以AP曲线是由Recall和Precision两个维度下曲线下面包围的面积,一般Recall比较低的时候,Precision比较高,Recall比较高的时候,Precision会比较低。

对于MAP,上面所诉表示对于每一类计算的AP值,如果你有检测多个类别,比如猫,狗等,那么再取个mean,就得到MAP。那么对于MMAP,这里需要再解释一下什么是预测的正样本,当我们回归的框与真实的Groundtruth的框之间的IOU大于0.5时,我们就认为这个预测的框是准确的(首先要保证分类得分大于设定的阈值)这个一般是大家都默认遵守的。那么在coco数据后,会针对不同的IOU阈值(如0.5,0.6,…,0.9等)得到不同的MAP,综合考虑计算即得到MMAP值。

从算法层面:a. 对于想提高Precision,使得二分类器预测的正例尽可能是真实正例,那么应该提高二分类器预测正例的阈值,使得预测出来的结果尽可能是正确的;对于想提高Recall,使得二分类器尽可能将真实的正例挑选出来,那么应该降低二分类器预测正例阈值,使得预测出来的结果尽可能包含更多的正样本,即可以简单调整socre的阈值。

从数据层面:a. 对于想提高Precision,无非是你的模型对于某些样本检测错误,理解为对某些样本的拟合能力不足,那么在训练过程中做好(在线/离线)数据增强,让模型有足够的泛化能力,即可提高Precision;对于想提高Recall,无非是有些样本没有正确检测出来,即难样本过多,可以进行在线难例挖掘和挑出难例样本继续训练以提高模型能力。 (注意这里的检测错误和没有检测出来是两个概念)

ML

继续阅读