什么是MAP?

作者: Cynomys土拨鼠 | 来源:发表于2019-10-31 20:38 被阅读0次

公众号:@OpenSourceAI

地址: http://mp.weixin.qq.com/s/73pEF0thhLIDM4TcEXdztw

作者: Zygmunt Z. | 2012-08-09 | Kaggle, basics

翻译: Nansen | 2019-10-30 | Cynomys,ML

What you wanted to know about Mean Average Precision ?

众所周知,如果此间有一群用户以及一些项目(比如电影、歌曲或者某些别的什么活儿之类的),每个用户都将会对对某些题目感兴趣

因此响应客户需求,我们需要对每个用户推荐一些项目(不妨把客户请求推荐的项目数量设为x)

之后用户将会对结果通过mean average precisionor (或者简称MAP), metric对结果进行评估

确切地说,MAP @ x 就是在让我们为某个用户推荐“一定数量(以下用 x 代替)的项目”

照应题目,接下来准确地来讲述什么是MAP

什么是MAP?

首先,我们先对其中的 M 进行剖析,此M既为mean,概括为所有用户的AP(average precisions)的均值,

将此mean结合Average Precision由此而来Mean Average Precision。

举个例子,假设我们有1000个用户,我们将每个用户的AP求和,再将这个“和”除以1000个客户量。这就是MAP的由来。

其次,我们讨论什么是AP(Average Precision),

实际来讲我们没必要完全了解,但是我们需要了解关于AP的以下几点就够了:

我们最多能为每个用户推荐 x 个项目

我们为客户提供的推荐应该尽量达到 x 个

事项顺序非常重要,首要提供相关性最高的推荐,之后才是我们觉得相关性不那么高的推荐

因此依照上述条件顺序可以大体上选出x个最好的推荐项目

接下来是临一种理解AP(Average Precision)的方式。

维基百科上说AP(Average Precision)是用来对文件检索进行评分的,

就好比,我们在谷歌搜索框输入某查找项,它会反馈我们十个相关项,

对于用户而言,这十个相关项都围绕搜索框内的查找项是最好的

然而不尽人意的时候总是存在的,比如,其中有五个相关项与查找项相差甚远,那么最好先显示另外五个更精确的相关项。

如果不按照这样排列,前五个先展示相关性更低的选项,那么相关性高的就得从第六个开始,那这样我们都会觉得不太行。

AP指数就是反应这一现象的。

这个名字对我们有误导性;我们更推崇“依次事项的 相关值”一类。

此公式为: sum i=1:x of (precision at i * change in recall at i)

precision at i 是在第一次i个推荐中相关性高的推荐所占的百分比。

如果在i处的项目是精确的(对每个精确的项目而言都是如此),那么Change in recall at i 是 1/x ,否则是0。

假设相关项的数目大于或等于x:r>=x。

如果不正确,则每个精确的i处的recall更改为1/r,而不是1/x。

对于感兴趣的人,Ben Hamner为kaggle实现了一系列度量,其中包括各种语言的MAP和AP。

您可能需要查看一些测试用例(在Matlab中)来检查您对如何计算AP的理解。

例如 test_case(1:5, [6 4 7 1 2], 2, 0.25);

这意味着实际项目是1:5,即[1 2 3 4 5]。我们推荐[6 4 7 1 2],我们通过交集得出4,1和2为正确项,但是其中依然有一些不正确的联想项。

它就是AP@2

所以,事实上只有两个最初的预测是重要的:6和4。

第一个是错误的,所以precision@1为0。第二个是对的,所以precision@2是0.5。则change in recall分别为0和0.5(即1/x),

因此AP@2 = 0 * 0 + 0.5 * 0.5 = 0.25

相关文章

  • 什么是MAP?

    公众号:@OpenSourceAI 地址: http://mp.weixin.qq.com/s/73pEF0thh...

  • golang 基础(16)map

    Map 什么是 map 如何创建 map map 的操作 创建 map 第二种创建 map 方式 这里创建 m2 ...

  • HashMap源码阅读

    1. 什么是HashMap? 1.1 map的定义 首先你要知道什么是map,map就是用于存储键值对(

  • maps

    本节学习目标 什么是map? 如何创建map? 给map添加元素 获取map中的元素 删除map中的元素 获取ma...

  • golang:map

    什么是map? map是一个可以存储key/value对的一种数据结构,map像slice一样是引用类型,map内...

  • go 数据结构 -- map&set

    映射 map 什么是 map map 是由一组键值对组成的抽象数据结构,并且键只会出现一次。 map 通常是用哈希...

  • 08-go map

    1、什么是map map是go中的关系映射容器,其内部是基于散列表(hash)实现的。map是一种无序的数据结构,...

  • golang map遍历为什么是无序的?

    golang map遍历为什么是无序的? 遍历map map底层使用哈希表实现,在运行过程中会进行扩容,扩容后顺序...

  • ThreadLocal

    ThreadLocal是什么? Threadlocal是线程变量 每个Thread线程内部都有一个Map。Map里...

  • 13. Maps

    13. Maps 什么是 map ? map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相...

网友评论

    本文标题:什么是MAP?

    本文链接:https://www.haomeiwen.com/subject/xqqxbctx.html