查准率(precision,也叫精确率)和查全率(recall,也叫召回率)

本文解释了精确率、召回率和F值在信息技术中的含义,通过捕捞池塘生物的例子说明它们的计算方法和在不同场景下的权衡。强调了在实际应用中,精确率和召回率的矛盾以及在实验研究中的Precision-Recall曲线的重要性。

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

精确率召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精确率是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率

查准率和查全率是一对相互制约的度量指标。

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是精确的,Recall就是所有精确的条目有多少被检索出来了。

精确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:

1. 精确率 = 提取出的正确信息条数 / 提取出的信息条数

即,精确率 = 

2. 召回率 = 提取出的正确信息条数 / 样本中正确的信息条数

即,召回率 = 

两者取值在0和1之间,数值越接近1,查准率或查全率就越高。

3. F值 = 精确率 * 召回率 * 2 / (精确率 + 召回率) (F 值即为精确率和召回率的调和平均值)

不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

精确率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

精确率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%

由此可见,精确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是精确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-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),即实际为负类但被预测为正类的数量。 精确衡量的是模型预测正类的准确性,越高说明误报越少。 --- #### Recall Precision 的区别 两者的计算方式不同,因此关注的重点也有所不同: - **Recall** 关注的是模型能够找到多少真正的正类样本,强调的是查全的能力。 - **Precision** 则更注重于模型预测为正类的结果中有多少是真实的正类,强调的是查准的能力。 两者之间存在权衡关系,在某些情况下提高其中一个可能会降低另一个[^1]。 --- #### Recall Precision 的联系 为了综合考虑这两个指标,通常会引入 F1 值来平衡二者的关系。F1 值的公式如下: \[ \text{F1-Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} \] 这表明当精确召回率达到某种均衡状态时,F1 值才会较高。 --- #### PR 曲线的作用 PR 曲线通过绘制不同的决策阈值下 Precision Recall 的变化情况,直观展示了模型在这两个维度上的表现。特别是在处理类别不平衡的数据集时,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、付费专栏及课程。

余额充值