信息检索中的结果评价

一、无序结果评价

1.正确率(Precision)

clip_image002

可以看到,准确率的范围是在[0,1],准确率反应了系统返回的文档中,真正相关的文档占的比例。

2.召回率(Recall)

clip_image002[6]

召回率的返回也是[0,1],召回率反应了系统对于那些真正相关的文档,有多少被返回了。

召回率和准确率如果都很高,说明检索系统的结果很不错哦,但是二者很难兼得,试想,如果我讲所有的候选文档全部返回,那必然就返回了所有的相关文档,召回率就是1,但是由于大量的非相关文档也返回了,那准确率就降低了;同理,如果我们只返回了数量很少的确定相关度得分特别高的值,那几乎可以保证返回的都是相关文档,那准确率提升,然后,由于返回的文档少,很多真正相关的文档也没有被返回,往往召回率也就降低了。

3.F值

F值是准确率和召回率的调和平均值,计算公式如下:

clip_image002[8]

其中,P表示准确率,R表示召回率,clip_image002[10]是调和权重,clip_image002[13]表示准确率和召回率权重相同,clip_image002[15]表示强调准确率,clip_image002[17]表示强调召回率。

二、有序结果的评价

对于搜索引擎,只返回相关结果往往是不够的,更多的时候排序才是关键所在,top k个结果是最关键的显示,因此如何将相关的文档排在前面,也是十分重要的,越是相关的文档,越应该排在最前面。

1.MAP(mean average precision,平均准确率均值)

假设我们有一个query的集合Q,针对Q中的每一个query,都有一个对应的相关文档集合M。我们用检索系统对Q中的每一个query做了一次检索,得到对应的返回文档集合R。则,MAP值可做如下计算:

clip_image002[19]

其中,clip_image002[21]是这么计算的:

clip_image002[23]

需要注意的是,k对应的文档都是相关文档,看到计算公式就知道,这里用到了两次平均,内层是对相关文档的平均,外层是对query的平均。从公式可以看出,对某一个query而言,如果返回的相关文档少或者返回的相关文档位置靠后,那么内层的求和值就小,那么就会导致该query的评估不高。直接看公式比较晦涩,我们来看一个例子:

某个系统针对某一个query返回了10个结果,该query对应的原有的所有相关文档有5篇,返回的结果中只有4篇。起对应的返回结果是:

R N R N N N N N R R(R表示相关,N表示不相关)

返回的相关文档在返回结果中的位置分别是:1、3、9、10,由于只有一个query,那么这里的clip_image002[25]=1,则计算MAP为:

clip_image002[27]

从这个计算式可以看到,如果返回的相关文档少,那么括号中的求和就少,那么计算的总体结果也小,例如上例中的返回结果,如果只返回了3个相关结果(第10个是不相关的),那么4/10这项将不存在。如果返回的相关文档排序在所有的相关文档中靠后,那么求和中的分母就会偏大,那么得到的评价值也会偏低,例如假设将上述序列的前两个交换位置,那么求和的第一项将变成1/2。想要得到的评估值高,就应该尽可能多的返回相关文档并且相关文档的位置要尽可能靠前。

2.NDCG值

上面的MAP值已经考虑了位置,但是上面的评估值考虑了是否相关,并没有考虑到相关度的高低。在很多检索系统的标注体系中,都是按照相关度高低来排的,例如某系统对一个query返回的文档标注级别为0、1、2、3、4,分别代表4个级别的相关度(也称得分),4表示最相关,而0表示最不相关,对于这种多级的相关度,MAP就无法评估了,这里可以采用NDCG值来评估。

先介绍CG值(calculate gain):

clip_image002[29]

p表示计算的是返回的前p个文档,clip_image002[31]表示第i篇文档的相关性(得分),可以看到这里值考虑了返回文档的相关性高低,并没有考虑位置。

再介绍DCG(discounted calculate gain):

这里考虑了位置关系,如果一个得分高的文档位置靠后了,则应该受到惩罚,公式:

clip_image002[35]

这里第一篇文档没有算进去是因为后面求和中分母有log运算。当然,公式不唯一,还可以用下面的公式:

clip_image002[39]

这个公式解决了上面的平滑问题,还有,该公司也能适用于MAP评估所使用的二级评估。

最后是NDCG(normalized discounted calculate gain),计算公式如下:

clip_image002[41]

其中,DCG表示的是实际返回的序列的DCG值,而IDCG表示的是理想情况下的序列的DCG值。

例如,检索系统返回了6篇文档,从第一篇到第六篇的相关度分别是

3、2、3、0、1、2

那么理想的排序应该是

3、3、2、2、1、0

分别计算这两个序列的DCG值,用前者的值除以后者的值,就得到了该序列的ndcg值。

注:我们时常提到的NDCG_n值,表示的是考虑返回序列的前n个结果的NDCG值,例如,上例中计算的就是NDCG_6的值,这里的n就等同于上面公式中的p。

参考:

1.《信息检索导论》

2.博客:nDCG measure 相关概念

本文搬自本人原博客:http://blog.csdn.net/steven30832/article/details/8612248

posted @ 2013-11-29 12:16  Dengchao  阅读(1683)  评论(0编辑  收藏  举报