Learning to Rank,即排序学习,简称为 L2R,它是构建排序模型的机器学习方法,在信息检索、天然语言处理、数据挖掘等场景中具备重要的做用。其达到的效果是:给定一组文档,对任意查询请求给出反映文档相关性的文档排序。本文简单介绍一下 L2R 的基本算法及评价指标。
算法
随着互联网的快速发展,L2R 技术也愈来愈受到关注,这是机器学习常见的任务之一。信息检索时,给定一个查询目标,咱们须要算出最符合要求的结果并返回,这里面涉及一些特征计算、匹配等算法,对于海量的数据,若是仅靠人工来干预其中的一些参数来进行排序的话,是远远不能达到要求的,而 L2R 算法就是用来解决这种问题的,L2R 将机器学习的技术很好地应用到了排序中,并提出了一些新的理论和方法,有效解决了排序的问题,并且效率上相比人工干预也有了几个数量级的飞跃。app
L2R 算法主要包括三种类别:Pointwise、Pairwise、Listwise,下面分别进行介绍。机器学习
Pointwise 将问题转化为多分类或回归问题。若是归结为多分类问题,对于某个 Query,对文档与此 Query 的相关程度打标签,标签分为有限的类别,这样就将问题转为多分类问题;若是归结为回归问题,对于某个 Query,则对文档与此 Query 的相关程度计算相关度 Score,这样就将问题归结为回归问题。ide
应用 Pointwise 模型有 Subset Ranking、OC SVM、McRank、Prank 等。函数
特定的 Query,文档的特征向量。性能
文档与 Query 的标签类别或相关性分数。学习
回归 Loss、分类 Loss、有序回归 Loss。优化
Pointwise 算法实现简单,易于理解,但它只对给定 Query 单个文档的相关度进行建模,仅仅考虑了单个文档的绝对相关度,Pointwise 只学习到了文档和 Query 的全局相关性,对排序前后顺序有必定的影响。在某一些场景下,排在最前面的几个文档对排序结果的影响很是重要,如搜索引擎的第一页的内容很是重要,而 Pointwise 没有考虑这方面的影响,不对排序的前后顺序优劣作惩罚。搜索引擎
上文提到 Pointwise 方法只考虑了单个文档和 Query 的绝对相关度,Pairwise 考虑的则是两个文档之间的相对相关度,比较不一样文档的前后顺序。Pairwise 方法是目前比较流行的方法,它将整个排序问题转为二元分类问题,即构建的是一个二分类器,对一个文档对 <Doc1, Doc2> 作二分类,一类是 Doc1 排序前于 Doc2,另外一类则相反,经过两两比较,模型能够学习到不一样文档之间的前后顺序。spa
应用 Pairwise 的模型有 Ranking SVM、RankBoost、RankNet、GBRank、IR SVM 等。
特定 Query,文档对 <Doc1, Doc2>。
文档对偏向得分,{-1, 1}。
Pairwise 分类 Loss。
Pairwise 方法经过考虑两两文档之间的相关度来进行排序,有必定进步。但 Pairwise 使用的是两文档之间相关相关度的损失函数,而它和真正衡量排序效果的指标之间存在很大不一样,甚至多是负相关的,如可能出现 Pairwise Loss 愈来愈低,但 NDCG 分数也愈来愈低的现象。另外此方法只考虑了两个文档的前后顺序,且没有考虑文档在搜索列表中出现的位置,致使最终排序效果并不理想。
Listwise 算法相对于 Pointwise 和 Pairwise 方法来讲,它再也不将排序问题转化为一个分类问题或者回归问题,而是直接针对评价指标对文档的排序结果进行优化,如经常使用的 MAP、NDCG 等。
应用 Listwise 的模型有 ListNet、ListMLE、SVM MAP、AdaRank、SoftRank、LambdaRank、LambdaMART。其中 LambdaMART(对 RankNet 和 LambdaRank 的改进)在 Yahoo Learning to Rank Challenge 表现出最好的性能。
特定Query,文档集合
全部文档的打分或者排列顺序
评价指标如 NDCG、MAP 等。
因为此种方法是针对评价指标直接进行优化,因此它每每表现出不错的效果。
L2R 评价指标主要有 NDCG、MAP、WTA、MRR 等,下面分别简单介绍一下。
NDCG,全称为 Normalized Discounted Cumulative Gain,是一种综合考虑模型排序结果和真实序列之间的关系的一种指标,也是最经常使用的衡量排序结果的指标,其计算公式以下:
DCG 实际上是由 DCG 的值计算出来的,分子为模型计算出的 DCG 值,分母则为理想状况下的 DCG 值,而 DCG 的计算公式以下:
在 DCG 的表达式中,r(i)表示在模型给出的排序中,排名为 i 的元素的实际分数,这里经过 2^r(i)-1 运算放大了其分数的差别,log_2(i+1) 是每一个元素的折价,因为排序靠前的元素被选取的几率更大,因此这里可使得排名前面的元素影响权重更大。
MAP,全称为 Mean Average Precision,即平均准确率。对于每一个真实相关的文档,考虑其在模型排序结果中的位置 P,统计该位置以前的文档集合的分类准确率,取全部这些准确率的平均值。
对于一个 Query,本来有 4 个相关结果,查询时将 4 个结果都查询出来了,其 rank 分别为 1, 2, 4, 7,则 MAP 为 (1/1 + 2/2 + 3/4 + 4/7)/4 = 0.83。对于另外一个 Query,本来有 5 个相关结果,查询只有 3 个相关结果,其 rank 分别为 1, 3, 5,则 MAP 为 (1/1 + 2/3 + 3/5 + 0 + 0)/5 = 0.45。则 MAP = (0.83 + 0.45)/2 = 0.64。
WTA,全称 Winners Take All,对于给定的查询 Query,若是模型返回的结果列表中,第一个文档是相关的,则 WTA =1, 不然为 0。
如对于一个 Query,原本有 5 个相关结果,查询结果中若是第一个结果是相关的,那么 WTA = 1,若是第一个结果是不相关的,则 WTA = 0。
MRR,全称 Mean Reciprocal Rank,是把相关文档在结果中的排序倒数做为准确度,而后再取平均。
如对于第一个 Query,查询结果将正确结果排名 rank 为 3,则其 Reciprocal Rank 为 1/3,对于第二个 Query,查询结果将正确结果排名 rank 为 2,则其 Reciprocal Rank 为 1/2,对于第三个 Query,查询结果将正确结果排名 rank 为 1,则其 Reciprocal Rank 为 1,则 MRR = (1/3 + 1/2 + 1)/3 = 11/18 = 0.61。