IR常用评价指标计算方式(AUC,MAP,NDCG,MRR,Precision、Recall、F-score)

本文详细介绍了评估机器学习模型性能的六个关键指标:AUC、MAP、NDCG、MRR、Precision和Recall及F-score。这些指标分别从不同角度衡量模型的分类和排序能力,对于理解和优化模型至关重要。

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

AUC,MAP,NDCG,MRR,Precision、Recall、F-score

1.AUC(Area Under Curve)

ROC曲线下方的面积大小,由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

 2.MAP(Mean Average Precision)

MAP:单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。

 

MAP是为解决Precision、Recall、F-score的单点值局限性的,同时考虑检索效果的排名情况。计算如下:假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1,2,4,7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7) / 4 = 0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0) / 5 = 2.45。则MAP=(0.83+0.45) / 2 = 0.64。

3.NDCG(Normalized Discounted Cumulative Gain)

è¿éåå¾çæè¿°

NDCG(Normalized Discounted Cumulative Gain):计算相对复杂。对于排在结位置n处的NDCG的计算公式如下图所示:

在MAP中,四个文档和query要么相关,要么不相关,也就是相关度非0即1。NDCG中改进了下,相关度分成从0到r的r+1的等级(r可设定)。当取r=5时,等级设定如下图所示:

(应该还有r=1那一级,原文档有误,不过这里不影响理解)

例如现在有一个query={abc},返回下图左列的Ranked List(URL),当假设用户的选择与排序结果无关(即每一级都等概率被选中),则生成的累计增益值如下图最右列所示:

考虑到一般情况下用户会优先点选排在前面的搜索结果,所以应该引入一个折算因子(discounting factor): log(2)/log(1+rank)。这时将获得DCG值(Discounted Cumulative Gain)如下如所示:

最后,为了使不同等级上的搜索结果的得分值容易比较,需要将DCG值归一化的到NDCG值。操作如下图所示,首先计算理想返回结果List的DCG值:

然后用DCG/MaxDCG就得到NDCG值,如下图所示:

4.MRR(Mean Reciprocal Rank)

其中|Q|是查询个数,ranki是第i个查询,第一个相关的结果所在的排列位置。

即把标准答案在被评价系统给出结果中的排序取倒数作为它的准确度,再对所有的问题取平均。

5.Precision、Recall、F-score

信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)和准确率(Precision Rate——注意统计学习方法中precision称为精确率,而准确率accuracy是分类正确的样本除以总样本的个数),召回率也叫查全率,准确率也叫查准率。

公式如下:

召回率(Recall) = 系统检索到的相关文件 / 系统所有相关的文件总数。亦即,预测为真实正例 / 所有真实正例样本的个数。

准确率(Precision) = 系统检索到的相关文件 / 系统所有检索到的文件总数。亦即,预测为真实正例 / 所有被预测为正例样本的个数。

注意:准确率和召回率是相互影响的,理想情况下肯定是做到两者都高,但是一般情况下,准确率高、召回率就低;召回率低、准确率高。当然如果两者都低,那是什么地方出问题了。一般情况,用不同的阈值,统计出一组不同阈值下的精确率和召回率,如下图:

如果是做搜索,那就是保证召回率的情况下提升准确率;如果做疾病检测、反垃圾,则是保证准确率的条件下,提升召回率。所以,在两者都要求高的情况下,可以用F1(或者称为F-score)来衡量。计算公式如下:F1 = (2 × P × R) / (P + R)。

转载自:

https://blog.youkuaiyun.com/weixin_38405636/article/details/80675312

https://blog.youkuaiyun.com/lightty/article/details/47079017

https://blog.youkuaiyun.com/universe_ant/article/details/70090026

https://blog.youkuaiyun.com/Allenalex/article/details/78161915

https://www.cnblogs.com/eyeszjwang/articles/2368087.html

<think>好的,我现在需要回答用户关于机器学习指标的问题,包括precisionrecall、f1-score、support、accuracy、AP、AUC这些指标的含义。首先,我得逐一理清每个指标的定义和计算公式,确保准确无误。 用户之前的问题提到了这些指标,所以我需要按照逻辑顺序逐个解释,可能从基础指标开始,如precisionrecall,然后到综合指标f1-score,再到support、accuracy,最后是AP和AUC。需要确保每个术语都有明确的定义,并举例说明,这样用户更容易理解。 接下来,我需要检查是否需要参考提供的引用内容。引用里提到了accuracy、precisionrecall、F1-score、ROC-AUC、PRC-AUC等,这些和用户的问题相符。不过要注意引用中的信息是否正确,比如AP通常指Average Precision,而AUC是ROC曲线下的面积,这些需要准确描述。 然后,我要考虑如何组织回答结构。可能先分点解释每个指标,使用公式时注意用LaTeX格式,比如$Precision = \frac{TP}{TP+FP}$。同时,用户提到要生成相关问题,这可能需要放在最后部分,提出几个相关的问题,比如这些指标的应用场景或如何计算等。 还需要注意用户提到的系统级指令,比如行内数学表达式用$...$,独立公式用$$...$$。比如在解释AUC时,可能需要独立成段的公式。同时,确保使用中文回答,避免任何markdown格式,除了代码块需要用三个反引号包裹。 另外,用户示例中在回答后添加了相关问题,我需要模仿这个结构,在最后生成相关问题,比如关于如何选择这些指标,或者它们的优缺点等。同时,引用标识要自然地添加在引用的段落末尾,比如引用[1]中的内容。 现在,我需要确保每个指标的解释正确无误。例如,support指的是每个类别的样本数量,而accuracy是总正确预测的比例。AP和AUC可能涉及更复杂的概念,如PR曲线和ROC曲线下的面积,需要简明扼要地说明。 可能遇到的疑问点:比如AP是否就是PR曲线的AUC?实际上,AP是Precision-Recall曲线下的面积,而AUC通常指ROC曲线的面积,需要区分清楚。此外,F1-scoreprecisionrecall的调和平均,这点需要正确表达。 最后,检查LaTeX语法是否正确,例如公式中的括号是否闭合,变量是否正确使用斜体等。确保回答结构清晰,分点明确,每个指标之间有适当的过渡,帮助用户逐步理解。</think>### 机器学习评价指标详解 #### 1. 基础指标(二分类场景) - **TP(True Positive)**:正确预测的正类样本 - **FP(False Positive)**:错误预测为正类的负类样本 - **TN(True Negative)**:正确预测的负类样本 - **FN(False Negative)**:错误预测为负类的正类样本 #### 2. 核心指标定义 1. **Precision(精确率)** 预测为正类的样本中实际为正类的比例: $$ Precision = \frac{TP}{TP + FP} $$ 适用于关注**误报成本**的场景(如垃圾邮件检测)[^1]。 2. **Recall(召回率)** 实际为正类的样本中被正确预测的比例: $$ Recall = \frac{TP}{TP + FN} $$ 适用于关注**漏检成本**的场景(如疾病诊断)[^1]。 3. **F1-score(F1值)** PrecisionRecall的调和平均数,平衡两者关系: $$ F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} $$ 特别适用于**类别不平衡**数据评估。 4. **Support(支持数)** 每个类别在测试集中的**实际样本数量**,反映数据分布特征。 5. **Accuracy(准确率)** 整体预测正确的比例: $$ Accuracy = \frac{TP + TN}{TP + FP + TN + FN} $$ 在类别平衡时有效,但在不平衡数据中可能失真[^1]。 #### 3. 高级指标 1. **AP(Average Precision,平均精确率)** 通过改变分类阈值,计算Precision-Recall曲线下面积: $$ AP = \sum_{k} (Recall_k - Recall_{k-1}) \times Precision_k $$ 反映模型在不同召回率下的平均表现,常用于目标检测任务。 2. **AUC(Area Under ROC Curve)** ROC曲线下面积,反映模型对正负样本的区分能力: - ROC曲线以**FPR(False Positive Rate)**为横轴:$FPR = \frac{FP}{FP + TN}$ - **TPR(True Positive Rate,即Recall)**为纵轴 - 取值范围$[0,1]$,值越大表示分类性能越好。 ```python # 指标计算示例(Python sklearn实现) from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score, average_precision_score, roc_auc_score y_true = [1,0,1,1,0] y_pred = [1,0,0,1,1] print(f"Precision: {precision_score(y_true, y_pred)}") # 0.6667 print(f"Recall: {recall_score(y_true, y_pred)}") # 0.6667 print(f"F1-score: {f1_score(y_true, y_pred)}") # 0.6667 print(f"Accuracy: {accuracy_score(y_true, y_pred)}") # 0.6 print(f"AP: {average_precision_score(y_true, y_pred)}") # 0.6389 print(f"AUC: {roc_auc_score(y_true, y_pred)}") # 0.6667 ``` #### 4. 关键差异说明 | 指标 | 关注重点 | 适用场景 | 数据敏感性 | |------------|---------------------------|------------------------|----------------| | Precision | 预测正类的准确性 | 高误报成本场景 | 受负类分布影响 | | Recall | 正类样本的覆盖率 | 高漏检成本场景 | 独立于负类分布 | | AUC | 整体排序能力 | 类别不平衡场景 | 综合考量 | | Accuracy | 整体预测正确率 | 类别平衡场景 | 易受分布影响 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值