召回率与准确率(Precision and Recall)

本文详细解释了互联网搜索系统中的两个关键概念——召回率和准确率。通过对比相关与不相关的文档,阐述了如何在大规模数据集中平衡这两者的重要性。深入探讨了‘召回率’和‘准确率’之间的相互制约关系,并提供了直观的理解方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外行人做互联网,很多概念不懂。就拿最基础的“召回率”和“准确率”这种概念,看看网上资料知道大概,自己用的时候,脑子里绕着弯儿能想明白,可碰到别人活用的时候,脑子里还是没法一下子反应过来,还是要绕弯想一下。特地找了些资料,将这两个概念整理一下,希望能更熟练。

召回率和准确率是搜索引擎(或其它检索系统)的设计中很重要的两个概念和指标。
召回率:Recall,又称“查全率”;
准确率:Precision,又称“精度”、“正确率”。

在一个大规模数据集合中检索文档时,可把集合中的所有文档分成四类:

         相关 不相关

检索到  
  A    B
未检索到   C    D

A:检索到的,相关的 (搜到的也想要的)
B:检索到的,但是不相关的 (搜到的但没用的)
C:未检索到的,但却是相关的 (没搜到,然而实际上想要的)
D:未检索到的,也不相关的 (没搜到也没用的)

通常我们希望:数据库中相关的文档,被检索到的越多越好,这是追求“查全率”,即A/(A+C),越大越好。
同时我们还希望:检索到的文档中,相关的越多越好,不相关的越少越好,这是追求“准确率”,即A/(A+B),越大越好。

归纳如下:
召回率:检索到的相关文档 比 库中所有的相关文档
准确率:检索到的相关文档 比 所有被检索到的文档

“召回率”与“准确率”虽然没有必然的关系(从上面公式中可以看到),然而在大规模数据集合中,这两个指标却是相互制约的。
由于“检索策略”并不完美,希望更多相关的文档被检索到时,放宽“检索策略”时,往往也会伴随出现一些不相关的结果,从而使准确率受到影响。
而希望去除检索结果中的不相关文档时,务必要将“检索策略”定的更加严格,这样也会使有一些相关的文档不再能被检索到,从而使召回率受到影响。

凡是设计到大规模数据集合的检索和选取,都涉及到“召回率”和“准确率”这两个指标。而由于两个指标相互制约,我们通常也会根据需要为“检索策略”选择一个合适的度,不能太严格也不能太松,寻求在召回率和准确率中间的一个平衡点。这个平衡点由具体需求决定。

其实,准确率(precision,精度)比较好理解。往往难以迅速反应的是“召回率”。我想这与字面意思也有关系,从“召回”的字面意思不能直接看到其意义。
我觉得“召回率”这个词翻译的不够好。“召回”在中文的意思是:把xx调回来。比如sony电池有问题,厂家召回。
既然说翻译的不好,我们回头看“召回率”对应的英文“recall”,recall除了有上面说到的“order sth toreturn”的意思之外,还有“remember”的意思。

Recall:the ability to remember sth. that you have learned or sth.that has happened in the past.

这里,recall应该是这个意思,这样就更容易理解“召回率”的意思了。
当我们问检索系统某一件事的所有细节时(输入检索query),Recall就是指:检索系统能“回忆”起那些事的多少细节,通俗来讲就是“回忆的能力”。能回忆起来的细节数除以 系统知道这件事的所有细节,就是“记忆率”,也就是recall——召回率。

这样想,要容易的多了。

在计算机视觉检测图像的时候,概念很相似。

### 召回率 (Recall) 和 精确率 (Precision) #### Recall 召回率 的定义 召回率是指在所有实际为正类的样本中,被模型正确预测为正类的比例。其公式可以表示为: \[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} \] 其中: - TP 表示真正例(True Positive),即实际为正类且被预测为正类的数量; - FN 表示假负例(False Negative),即实际为正类但被预测为负类的数量。 召回率反映了模型对于正类样本的覆盖能力,越高说明漏检越少[^3]。 --- #### Precision 精确率 的定义 精确率是指在所有被模型预测为正类的样本中,实际为正类的比例。其公式可以表示为: \[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} \] 其中: - FP 表示假正例(False Positive),即实际为负类但被预测为正类的数量。 精确率衡量的是模型预测正类的准确性,越高说明误报越少。 --- #### RecallPrecision 的区别 两者的计算方式不同,因此关注的重点也有所不同: - **Recall** 关注的是模型能够找到多少真正的正类样本,强调的是查全的能力。 - **Precision** 则更注重于模型预测为正类的结果中有多少是真实的正类,强调的是查准的能力。 两者之间存在权衡关系,在某些情况下提高其中一个可能会降低另一个[^1]。 --- #### RecallPrecision 的联系 为了综合考虑这两个指标,通常会引入 F1 值来平衡二者的关系。F1 值的公式如下: \[ \text{F1-Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} \] 这表明当精确率和召回率达到某种均衡状态时,F1 值才会较高。 --- #### PR 曲线的作用 PR 曲线通过绘制不同的决策阈值下 PrecisionRecall 的变化情况,直观展示了模型在这两个维度上的表现。特别是在处理类别不平衡的数据集时,PR 曲线下方的面积(Area Under the Curve, AUC)被称为 AP 值(Average Precision),它能更好地反映模型的整体性能[^2]。 以下是绘制 PR 曲线的一个简单 Python 实现例子: ```python from sklearn.metrics import precision_recall_curve import matplotlib.pyplot as plt # y_true 是真实标签,y_scores 是模型输出的概率分数 precision, recall, thresholds = precision_recall_curve(y_true, y_scores) plt.figure() plt.plot(recall, precision, marker='.') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.show() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值