2.2 什么是精确率(Precision)与召回率(Recall)?二者如何权衡?
场景描述
Hulu提供视频的模糊搜索功能,搜索排序模型返回的Top 5的精确率非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集,这可能是哪个环节出了问题呢?
精确率(Precision)与召回率(Recall)定义
要回答这个问题,首先要明确两个概念,精确率和召回率。
- 精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
- 召回率是指分类正确的正样本个数占真正的正样本个数的比例。
问题
在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N 返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置上的准确率Precision@N 和前N个位置上的召回率Recall@N。
具体:
Precision 值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall 值降低。
回到问题中来,模型返回的Precision@5的结果非常好,也就是说排序模型Top 5的返回值的质量是很高的。但在实际应用过程中,用户为了找一些冷门的视频,往往会寻找排在较靠后位置的结果,甚至翻页去查找目标视频。但根据题目描述,用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。显然,问题出在召回率上。如果相关结果有100个,即使Precision@5达到了100%,Recall@5也仅仅是5%。
解决
在模型评估时,我们是否应该同时关注Precision值和Recall值?进一步而言,是否应该选取不同的Top N的结果进行观察呢?是否应该选取更高阶的评估指标来更全面地反映模型在Precision值和Recall值两方面的表现?
答案都是肯定的,为了综合评估一个排序模型的好坏,不仅要看模型在不同Top N 下的Precision@N和Recall@N,而且最好绘制出模型的P-R(Precision-Recall)曲线。这里简单介绍一下P-R曲线的绘制方法。
P-R曲线的绘制方法
- P-R 曲线的横轴是召回率,纵轴是精确率。
- 对于一个排序模型来说,其P-R 曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。
- 整条P-R 曲线是通过将阈值从高到低移动而生成的。
- 图2.1是P-R 曲线样例图,其中实线代表模型A的P-R 曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。

由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。
PS:P-R曲线和坐标轴围成的面积就是AP。所有类别的AP求平均值就是mAP。
结果说明
这充分说明,只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。
除此之外,F1score 和ROC 曲线也能综合地反映一个排序模型的性能。F1score 是精准率和召回率的调和平均值,它定义为
F
1
=
2
×
p
r
e
c
i
s
i
o
n
×
r
e
c
a
l
l
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
F1 = \frac{{2 \times precision \times recall}}{{precision + recall}}
F1=precision+recall2×precision×recall
ROC曲线会在后面的小节中单独讨论,这里不再赘述。
ROC曲线详见:2.4 ROC曲线是什么?
参考文献:
《百面机器学习》 诸葛越主编
出版社:人民邮电出版社(北京)
ISBN:978-7-115-48736-0
2022年8月第1版(2022年1月北京第19次印刷)