本文主要是介绍论文 | 信息检索结果Ranking的评价指标《RankDCG: Rank-Ordering Evaluation Measure》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
未经允许,不得转载,谢谢~~
一 文章简介
为什么要提出这个新的评价算法?
- 我们都知道ranking过程对于信息检索的结果是非常重要的,那么我们就需要有一些算法能评价ranking的结果到底如何。
- 现有用来评价ranking的常用算法有:Kendall's τ, Average Precision(AP) , Mean Average Precision(MAP),Discounted Cumulative Gain (DCG), nDCG.
- 跟简单的分类任务只需要一个accuracy不一样,尽管已经有了那么多的ranking measures,但仍然存在一些问题。
- 尤其是在解决“对那些具有相同等级分布和倾斜等级分布多个关系的离散值元素进行排序任务时”;
- 所以本文基于nDCG算法提出了RankDCG,并提出一些标准来测试这些算法,实验发现只有本文的RankDCG满足全部的要求。
二 排序问题描述
- Ordering:用网页检索的例子来看就是要在接近无穷大的数据集中找到相应的信息并对它们进行相关性排序。
- 问题可以用数学的方式定义为:
- A为一系列元素: A = [x1,x2,x3,...,xn];
- f(x)度量了元素x与query的相关性,f(x)属于0-1;
- 通常我们能在A中的n个元素找到m个相关的元素,并按相关性由高到低进行排序得到目标结果B;
- B = [x|x ∈ A,f(x) > 0], 且 B = [ f(x1) > f(x2) > f(x3) > ... > f(xm) ];
- 在本文中考虑现实世界中经常出现的排序问题,例如推荐系统和用户排序;这跟上面提到的网页检索有一些不太一样的地方,包括:
- 在这里每个元素都是相关的;
- 待排序的都是离散值;
- 会出现多个元素具有相同等级的情况;
- 排序结果可能会出现只有非常少数的top result是相关的情况;
- 针对上述问题,重新定义了目标结果B的表示为: B = [f(x1) ≥ f(x2) ≥ f(x3) ≥ ... ≥ f(xn)],并对ranking measure提出了需要能够正确反映上述4点的要求。
三 现有评价方法
信息检索领域有多个方法来评价rank ordering的好坏,但是没有一个对上面描述的这种问题是完全适用的,接下来先看看目前常用的一些评价算法。
3.1 F-measure(F-score)
- 这是一个在IR中非常常见的评价指标;
-
同时考虑了检测精度p和召回率r;
- 但是不适用于所有元素都相关的情况,也没有将不同的ranks考虑在内,所以不适合作为rank-ordering的评价标准。
3.2 Average Precision and Mean Average Precision
-
AP
- 其中:P(k) = precision@k , ∆R(k) = |recall(k−1)−recall(k)|.
-
- 其实理论上的AP应该等于绿色的precision-recall线的下方面积,而用近似计算就等于看成是一小块的长方形的面积之和,即为图中红色虚线的下方面积。
-
MAP
- 其中:Q 是query的集合,而q是单个的query,即对所有query的AP求平均。
- AP,MAP都可以评价rank-ordering问题;
- AP,MAP基于rank与rank之间没有关系的这个前提,没有考虑多个元素会是同一个rank的情况;
- AP,MAP对所有的rank values都是用相同的cost对待,没有考虑需要将更多的注意力放在少数几个high-rank的元素上。
3.3 Kendall’s τ
-
这个算法考虑了给定list和结果list之间元素对之间的匹配程度;
- c表示匹配的元素对的数量,d表示不匹配的元素对数量;
- 这个算法仍然没有考虑多个元素值相同rank,与非常少的top-k个相关元素分布情况。
-
关于这个算法这里给出一个具体的例子:
3.4 Discounted Cumulative Gain (DCG)
- 这个算法考虑了rank排序的问题,是目前文章中介绍过的唯一一个用了cost function的算法;
-
本文也是自己与这个算法做的改进;
-
rel()指的是相关度度量函数,i 表示元素所在的位置;
- 这里有一个很不错的例子哦.
- 标准的DCG根据元素所在的位置不同给出不同的cost;
- 而文章作者认为[9,1,1]对于结果[1,9,1]与[1,1,9]应该是一样的(因为只有一个9是top-1,而且都出错了)
四 本文评价算法:RankDCG
- 从一个例子开始分析:
-
下面两张图为standard DCG与别人改进的DCG在各个元素上的cost图:
- 不足之处:这两个算法都将一般以上的cost放在了最高rank的元素上,这会导致整个评价算法引导ranking的走向找到top-rank的元素而不是做好ordering工作。
- 所以文章做的第一个工作:提出了新的rel()函数,具体体现为将原来的变成:
具体步骤是:在L中有10个rank值,但是只有4个不同的rank,所以按照rank value对元素进行分组,得到4,那个第一个sublist的rankvalue就改成4,后面的sublist依次递减。
-
这样可以得都到以下的结果图,可以看到整个cost下降更均衡了。
- 现在这样其实还有一个问题,基于位置的折损函数cost会导致本来rank value一样的值最后得到的cost却是不一样的,例如最后4个1。
-
文章做的第二个工作就是将基于位置的折损改成新的折损系统,具体方法是对L‘的rank value做一个翻转,将值依次赋给各个sublist。最后得到:
-
这时候的cost图为:
-
最后也模仿DCG->nDCG的过程,做了一次归一化,即最终的RankDCG算法等于:
写在最后
写完了嘻嘻~~
简书不支持公式真的有点小小的不方便,所有的公式都来自论文presentation的截图。
最后,不是做信息检索的,这篇论文只是课程的一个报告,有理解不正确或者不到位之处欢迎大佬评论获或者私信谢谢ヾ(◍°∇°◍)ノ゙
</div>
这篇关于论文 | 信息检索结果Ranking的评价指标《RankDCG: Rank-Ordering Evaluation Measure》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!