2.2 什么是精确率(Precision)与召回率(Recall)?二者如何权衡?

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曲线。原点附近代表当阈值最大时模型的精确率和召回率。
图2.1

由图可见,当召回率接近于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次印刷)

### 精确召回率的概念及计算方法 #### 定义 精确Precision)是指在所有被模型预测为正类的样本中,实际为正类的比例。它衡量的是模型预测正类的准确性[^2]。 召回率Recall)则是指在所有实际为正类的样本中,被模型正确预测为正类的比例。它反映的是模型能够找到多少真正的正类样本的能力[^3]。 #### 计算公式 假设在一个二分类问题中有以下四种情况: - True Positive (TP): 实际为正类且被预测为正类。 - False Positive (FP): 实际为负类却被预测为正类。 - False Negative (FN): 实际为正类却被预测为负类。 - True Negative (TN): 实际为负类且被预测为负类。 那么,精确召回率可以分别通过以下公式计算: $$ \text{Precision} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Positives}} $$ $$ \text{Recall} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}} $$ 这些公式的含义可以通过具体例子来理解:如果一个模型预测了很多正类但实际上很多都是错误的,则其精确会较低;而如果有很多实际为正类的样本未被检测到,则其召回率也会较低[^4]。 ```python from sklearn.metrics import precision_score, recall_score # 假设 y_true 是真实标签列表,y_pred 是模型预测的结果列表 y_true = [0, 1, 1, 0, 1] y_pred = [0, 1, 0, 0, 1] precision = precision_score(y_true, y_pred) recall = recall_score(y_true, y_pred) print(f'Precision: {precision}') print(f'Recall: {recall}') ``` 此代码片段展示了如何利用 `sklearn` 库中的函数快速计算精确召回率。 #### 平衡两者关系 由于精确召回率通常存在权衡关系,在某些情况下提高其中一个可能会降低另一个。因此,实践中常常需要根据具体应用需求调整两者的平衡[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值