信息检索(IR)中的两个指标:NDCG和MAP
[TOC]
来源:
https://blog.csdn.net/simple_the_best/article/details/52296608
https://makarandtapaswi.wordpress.com/2012/07/02/intuition-behind-average-precision-and-map/
NDCG(normalized discounted cumulative gain)
Rvelin K, Kek, Inen J. Cumulated gain-based evaluation of IR techniques[M]. ACM, 2002.
N指的是归一化,D指的是衰减率,C指的累加,G指的是熵,其实这个公式的关键就是就是熵,再多了三个形容词:归一化的,带有衰减函数的,再带有累加的熵即是了 。
我们首先介绍CG(Cummulative Gain), 其思想比较简单, 就是将相关性的分值累加后, 作为某个排序结果的分值。
reli r e l i 为处于位置 i i 的推荐结果与query的相关性, 代表我们要考察前 p p 个结果。
CG的一个缺点是CG没有考虑结果处于不同位置对结果的影响,例如我们总是希望相关性高的结果应排在前面,相关性低的结果排在靠前的位置会严重影响用户体验, 所以需要在CG的基础上引入位置影响因素,即DCG(Discounted Cummulative Gain).
即相同的相关性,排在对整次检索结果的正向影响,相较于放在后边更大。
DCG仍然有其局限之处,即不同的排序之间,很难进行横向的评估。 不同的排序的评估分数就需要进行归一化。 也即NDCG。
其中DCG的定义如上, IDCG为特定query返回的最好结果, 即假设返回结果按照相关性排序, 最相关的结果放在最前面, 此序列的DCG为IDCG。因DCG的值介于 (0,IDCG],故NDCG的值介于(0,1] 。
MAP(mean average precision)
Hinrich Schutze. 2008. Introduction to information retrieval. In Proceedings of the international communication of association for computing machinery conference.
在了解MAP(Mean Average Precision)之前,先来看一下AP(Average Precision), 即为平均准确率。
对于AP可以用这种方式理解: 假使当我们使用google搜索某个关键词,返回了10个结果。当然最好的情况是这10个结果都是我们想要的相关信息。但是假如只有部分是相关的,比如5个,那么这5个结果如果被显示的比较靠前也是一个相对不错的结果。但是如果这个5个相关信息从第6个返回结果才开始出现,那么这种情况便是比较差的。这便是AP所反映的指标,与recall的概念有些类似,不过是“顺序敏感的recall”。
AP=1r∑i=1rithepositionofi−threlevantdocument A P = 1 r ∑ i = 1 r i t h e p o s i t i o n o f i − t h r e l e v a n t d o c u m e n t
r为相关个数(如查询正样本,这里r是总正样本数)
def AP(ranked_list, ground_truth):
"""Compute the average precision (AP) of a list of ranked items"""
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
假设我们正在搜索一朵花的图像,我们为我们的图像检索系统提供一张玫瑰(查询)的样本图片,我们确实得到了一堆排名图像(最可能是最不可能的)。通常并非所有这些都是正确的。因此,我们计算每个正确返回图像的精度,然后取平均值。如果我们返回的结果是
1, 0, 0, 1, 1, 1
1是花的图像,而0不是,那么每个正确点的精度是:到目前为止已经遇到了多少正确的图像(包括当前)除以到达的总图像数这点。
1/1, 0, 0, 2/4, 3/5, 4/6
以上示例的AP为(1+2/4+3/5+4/6)/4=0.6917.
那么对于MAP(Mean Average Precision),就很容易知道即为所有用户 u u 的AP再取均值(mean)而已。那么则有: