mAP(mean Average Precision)详细说明

本文探讨了信息检索系统评估中的两个核心指标——精度与召回率,并通过飞机与鹅的图像检索示例,直观解释了真阳性、假阳性等概念。

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

未完待续。。。

原文:https://sanchom.wordpress.com/tag/average-precision/

 

译文

我正在思考的事情。最近:写作,法律,航空,机器学习。

平均精度

这是一只鸟……它是一架飞机…它取决于你的分类器的阈(yu)值。

信息检索系统(例如搜索引擎)的评价通常集中在两个方面:

1.检索结果有什么关系?(精密)

2.系统是否检索了许多真正相关的文档?(召回)

对于那些不熟悉的人,我将解释什么是精确度和召回,对于那些熟悉的人,我将解释在比较精确度召回曲线时文献中的一些混淆。

鹅和飞机

假设你有一个由飞机和鹅组成的图片集。

您希望您的系统检索所有飞机图像和鹅的图像。

给定系统从该集合中检索的一组图像,我们可以定义四个精度计数:

True positives:你的系统正确检索的飞机图像

True negatives:鹅的形象,你的系统没有正确检索

False positives:鹅的图像,你的系统错误地检索,相信他们是飞机。

False negatives:你的系统不正确的飞机图像没有被检索,相信它们是鹅。

在这个示例检索中,有三个真阳性和一个假阳性。

 

使用我刚才定义的术语,在这个示例检索中,有三个真阳性和一个假阳性。有多少假阴性?有多少真负数?

有两个假阴影(系统未能检索到的飞机)和4个真阴影(系统未检索到的鹅)。

精度与召回

现在,你将能够更准确地理解什么是精确和回忆。

精度是检索结果中的真正正的百分比。即:

 

参考阅读

https://blog.youkuaiyun.com/gagalaha/article/details/51327083

https://blog.youkuaiyun.com/sunhuaqiang1/article/details/56847436

https://blog.youkuaiyun.com/zjc/article/details/46763989

### Mean Average Precision (mAP) 的定义 Mean Average Precision (mAP) 是一种广泛用于评估信息检索系统和目标检测模型性能的度量标准。该指标综合考虑了查准率(Precision) 和查全率(Recall),能够更全面地反映系统的整体表现。 在信息检索领域,mAP 表示的是所有查询平均精度的均值[^3]。对于每一个单独的查询请求而言,先计算其对应的 AP 值(Average Precision),再取这些 AP 值的算术平均即得到最终的 mAP 结果。 而在对象检测任务中,mAP 则衡量不同类别上预测框与真实标注框之间的匹配程度。具体来说,针对每一类物体分别统计 TP(True Positive), FP(False Positive) 及 FN(False Negative)[^1]。 ### 计算方法 #### 对于信息检索: 1. 针对单个查询 q,按照文档的相关性得分排序; 2. 根据实际相关情况标记每个返回项是否为正样本; 3. 使用下列公式逐个位置 i 更新当前累计 P@i(Precision at position i),其中 rel(i)=1 若第 i 位是相关项目,否则为0;nrel(q)表示查询q下的总相关数: \[ \text{P}(i|q) = \frac{\sum_{j=1}^{i}\mathrm{rel(j)}}{i},\quad \forall i : \mathrm{rel}(i)=1 \] 4. 将上述过程中获得的所有非零 P@i 平均化作为此查询 Q 下的 AP 值; 5. 最终通过求解所有测试集中各查询下 AP 的简单平均值得到整个数据集上的 mAP。 #### 对象检测中的实现方式略有差异: - 主要区别在于如何判断两个边界框之间是否存在重叠以及设定 IoU(Intersection over Union)阈值来决定真阳性和假阳性。 - 当前普遍采用 COCO 数据集所使用的评价方案,在多个不同的 IoU 阈值水平上来累积 PR 曲线并据此得出每种类别的 AP 后再次做平均形成全局 mAP 指标。 ```python def calculate_map(precisions, recalls): """ Calculate mean average precision given lists of precisions and recalls. Args: precisions (list): List containing precision values. recalls (list): List containing recall values. Returns: float: Calculated MAP value. """ aps = [] unique_recalls = sorted(set(recalls)) for r in unique_recalls: p_interpolated = max([p for p, rec in zip(precisions, recalls) if rec >= r], default=0) aps.append(p_interpolated) return sum(aps)/len(unique_recalls) if len(unique_recalls)>0 else 0 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值