转:http://www.zhenv5.com/?p=1079

MAP可以由它的三个部分来理解:P,AP,MAP

先说P(Precision)精度,正确率。在信息检索领域用的比较多,和正确率一块出现的是找回率Recall。对于一个查询,返回了一系列的文档,正确率指的是返回的结果中相关的文档占的比例,定义为:precision=返回结果中相关文档的数目/返回结果的数目;
而召回率则是返回结果中相关文档占所有相关文档的比例,定义为:Recall=返回结果中相关文档的数目/所有相关文档的数目。

正确率只是考虑了返回结果中相关文档的个数,没有考虑文档之间的序。对一个搜索引擎或推荐系统而言返回的结果必然是有序的,而且越相关的文档排的越靠前越好,于是有了AP的概念。对一个有序的列表,计算AP的时候要先求出每个位置上的precision,然后对所有的位置的precision再做个average。如果该位置的文档是不相关的则该位置 precision=0.


举个例子(修改了引用[1]的例子):

Prediction   Correctness   Points
1 wrong 0
2 right 1 / 2
3 right 2 / 3
4 wrong 0
5 right 3 / 5
6 wrong 0
7 wrong 0
8 wrong 0
9 right 4 / 9
10 wrong 0
 
可以从中看出AP的计算方法,若该位置返回的结果相关,计算该位置的正确率,若不相关,正确率置为0。若返回的这四个的相关文档排在1,2,3,4号位,则对于的正确率都为1,AP也就等于1,可见计算方法是对排序位置敏感的,相关文档排序的位置越靠前,检出的相关文档越多,AP值越大。
对MAP,则是对所有查询的AP值求个平均。

得到的计算公式[2]:
AP=1r∑i=1rithepositionofi−threlevantdocument
MAP=1N∑i=1NAPi
r为相关文档的个数,N为查询词的个数。

具体求解:

假设有两个查询,查询1有4个相关文档,查询2有5个相关文档。某系统对查询1检索出4个相关文档,其rank分别为1,2,4,7;对于查询2检索出3个相关文档,其rank分别为1,3,5。

对于查询1,AP平均正确率为:(1/1+2/2+3/4+4/7)/4=0.83

对于查询2,AP平均正确率为:(1/1+2/3+3/5)/5=0.45

则平均正确率均值为:(0.83+0.45)/2=0.64

代码:

Github地址:https://github.com/JK-SUN/MLandDM-EvaluationMeasures 欢迎拍砖


参考:

[1]Alternate explanation of Mean Average Precision

[2]信息检索系统导论

[3]Mean Average Precision

最新文章

  1. Canvas电子签名和游戏化
  2. Apache Commons CLI命令行启动
  3. JS实现屏蔽键盘操作
  4. WordCount Analysis
  5. Nginx学习记录
  6. hdoj 2059 :龟兔赛跑 (DP)[转]
  7. 每天一个小算法(Shell sort5)
  8. 65. Valid Number
  9. System.gc
  10. 挺苹果的声音,iPhone 5s的两处进步
  11. jdk并发包 CopyOnWriteArrayList源代码分析
  12. JavaScript 中 if 条件判断
  13. 第1章1zabbix快速入门
  14. 使用Windows Server 2012+ 搭建VPN 简单 高效 稳定
  15. Maven - 本地仓库(.m2) vs. 远程仓库(联网)
  16. 字符串string的相关应用
  17. echarts 响应式布局
  18. Go语言之高级篇Beego框架之爬虫项目实战
  19. (转)Python3之os模块
  20. Codeforces Round #404 (Div. 2) A - Anton and Polyhedrons 水题

热门文章

  1. 4825: [Hnoi2017]单旋
  2. 图论-最短路径--3、SPFA算法O(kE)
  3. idea项目 run、debug变灰色的问题
  4. (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来
  5. Unity编辑器扩展 Chapter3--Create Custom Inspector
  6. 测试类异常Manual close is not allowed over a Spring managed SqlSession
  7. Spark之spark shell
  8. c# 修改pdf
  9. psp项目计划
  10. 团队开发--NABCD