准确率和召回率(precision&recall)

本文介绍了评估机器学习算法性能的几个关键指标:准确率、召回率、F-measure及F1-score,并探讨了它们之间的关系,同时讲解了平均准确率(AP)的概念及其不同计算方式。
AI助手已提取文章相关产品:

在机器学习、推荐系统、信息检索、自然语言处理、多媒体视觉等领域,经常会用到准确率(precision)、召回率(recall)、F-measure、F1-score 来评价算法的准确性。

一、准确率和召回率(P&R)

以文本检索为例,先看下图



其中,黑框表示检索域,我们从中检索与目标文本相关性大的项。图中黄色部分(A+B)表示检索域中与目标文本先关性高的项,图中

A+C部分表示你的算法检索出的项。A、B、C的含义图中英文标出。

准确率:


召回率:


一般来说,准确率表示你的算法检索出来的有多少是正确的,召回率表示所有准确的条目中有多少被检索出来。

准确率和召回率的关系

通常,我们希望准确率和召回率均越高越好,但事实上这两者在某些情况下是矛盾的。比如我们只搜出了一个结果,此结果是正确的,求得precisin等于1。但是由于只搜出一个结果,recall值反而很低,接近于0。所以需要综合考量,下面介绍F-measure。

二、F-measure

F-measure又称F-score,其公式为:


其中F2值,更加注重召回率;F0.5值更加重视准确率。

当beta=1时,就是F1-score:


F-measure综合了precision和recall,其值越高,通常表示算法性能越好。

三、Average_precision(AP)

平均正确率(AP):对不同召回率点上的正确率进行平均。
(1)未插值的AP:某个查询Q共有6个相关结果,某系统排序返回的文档中,其中相关文档有5篇,其位置分别是第1,第2,第5,第10,第20位,则AP=(1/1+2/2+3/5+4/10+5/20+0)/6
(2)插值的AP:在召回率分别为0,0.1,0.2,...,1.0的十一个点上的正确率求平均,等价于11点平均。
(3)只对返回的相关文档进行计算的AP,AP=(1/1+2/2+3/5+4/10+5/20)/5,倾向于那些快速返回结果的系统,没有考虑召回率。

您可能感兴趣的与本文相关内容

在二分类问题中,通常会使用混淆矩阵来辅助计算这些评估指标,混淆矩阵包含四个关键值:真正例(True Positive,TP)、假正例(False Positive,FP)、真反例(True Negative,TN)假反例(False Negative,FN)。 ### Accuracy(准确率准确率是指预测正确的样本占总样本的比例,计算公式如下: \[ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \] 它衡量的是模型在所有样本上的整体预测正确性。 ### Precision(精确率) 精确率是指预测为正例的样本中,实际为正例的比例,计算公式如下: \[ Precision = \frac{TP}{TP + FP} \] 精确率反映了模型预测正例的查准能力。 ### Recall(召回率召回率是指实际为正例的样本中,被模型正确预测为正例的比例,计算公式如下: \[ Recall = \frac{TP}{TP + FN} \] 召回率体现了模型对正例的查全能力。 ### F1分数 F1分数是精确率召回率的调平均数,用于综合衡量精确率召回率,计算公式如下: \[ F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} \] F1分数越接近1,说明模型的性能越好。 在多分类问题中,可以将其拆分成多个二分类问题,分别计算各个类别的精确率召回率,最终求均值作为所有样本的评估指标。 ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score import numpy as np # 示例真实标签预测标签 y_true = np.array([0, 1, 2, 0, 1, 2]) y_pred = np.array([0, 2, 1, 0, 0, 2]) # 计算准确率 accuracy = accuracy_score(y_true, y_pred) # 计算精确率(宏平均) precision = precision_score(y_true, y_pred, average='macro') # 计算召回率(宏平均) recall = recall_score(y_true, y_pred, average='macro') # 计算F1分数(宏平均) f1 = f1_score(y_true, y_pred, average='macro') print(f"Accuracy: {accuracy}") print(f"Precision: {precision}") print(f"Recall: {recall}") print(f"F1 Score: {f1}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值