推荐系统中的 MAP 评估指标

1. 参考链接

https://www.zhihu.com/question/22464082
https://zhuanlan.zhihu.com/p/38875570
https://blog.csdn.net/u014203453/article/details/77598997
https://blog.csdn.net/simple_the_best/article/details/52296608

2. 先来说下 AP (Average Precision)

AP 即为平均准确率,针对的是一个用户的推荐(排序)结果

对于AP可以用这种方式理解: 假使当我们使用google搜索某个关键词,返回了10个结果。当然最好的情况是这10个结果都是我们想要的相关信息。但是假如只有部分是相关的,比如5个,那么这5个结果如果被显示的比较靠前也是一个相对不错的结果。但是如果这个5个相关信息从第6个返回结果才开始出现,那么这种情况便是比较差的。这便是AP所反映的指标,与recall的概念有些类似,不过是“顺序敏感的recall”。

比如对于用户 u, 我们给他推荐一些物品,那么 u 的平均准确率定义为:(ground truth 表示的意思是 【标准答案】)
在这里插入图片描述

用一个例子来解释AP的计算过程:
在这里插入图片描述
因此该 user 的AP为(1 + 0.66 + 0.5) / 3 = 0.72

def AP(ranked_list, ground_truth):
    """Compute the average precision (AP) of a list of ranked items
    ground_truth 表示是否正确的标识
    hits 表示 score (预测结果分值)倒排,从第0个到当前个的累计预测正确样本数
    sum_precs 表示每个 ground_truth = 1 的位置的 precision 的累加
    """
    hits = 0
    sum_precs = 0
    for n in range(len(ranked_list)):
        if ranked_list[n] in ground_truth:
            hits += 1
            sum_precs += hits / (n + 1.0)
    if hits > 0:
        return sum_precs / len(ground_truth)
    else:
        return 0
3. 再来理解 MAP

那么对于MAP(Mean Average Precision),就很容易知道即为所有用户 u 的AP再取均值(mean)而已。那么计算公式如下:
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值