Learning to Rank(LTR)

来源:互联网 发布:迪杰斯特拉算法 简单 编辑:程序博客网 时间:2024/06/05 17:20

Learning to Rank(LTR)

声明:

本文主要参考Learning to Rank 简介、Learning to Rank小结文章。 
另参考李航老师A short introduction to learning to rank一文。 
对以上文章有较多引用,在此对原作者表示感谢!

刚刚接触排序学习,很多问题尚不清楚,在努力学习中,如有错误欢迎指出。本文也会不断改进、完善。 
更欢迎就排序学习相关问题进行讨论。

摘要

排序学习是在处理排序问题时采用机器学习方法来训练模型的方法。排序学习可以应用在信息检索、自然语言处理、数据挖掘等方面。本文对排序学习做了一个简单的介绍,对基本问题和已经存在的方法进行简单说明,并描述了一些基于SVM技术的排序学习方法。

关键词: 排序学习,信息检索,自然语言处理,SVM

背景

排序学习可以在信息检索(IR)、自然语言处理(NLP)和数据挖掘(DM)等领域被广泛使用。典型应用有文献检索、专家检索系统、定义查询系统、协同过滤、问答系统、关键词提取、文档摘要还有机器翻译等。

在传统搜索引擎的排序策略中,一般会包含若干子策略,子策略通过若干种方式组合成更大的策略一起发挥作用。策略的组合方式以及参数一般采取人工或者半人工的方式确定,不使用机器学习策略或仅对少量参数进行学习。随着策略的逐步细化,传统的方式变得越来越困难。

近期文献检索方面,特别是在互联网搜索方面的一个新趋势,是使用机器学习方法去自动的建立评价模型 f(q,d)。这是因为一系列事实而产生的动机。在互联网搜索方面,有许多标识可以代表相关性,例如,网页的链接文本和PageRank得分。在排序模型中将这些信息结合,并使用机器学习技术自动建立排序模型是一个自然而然的选择。在搜索引擎中,大量的搜索日志数据被保留,例如数据的点击。这使得通过搜索日志数据来进行训练并自动建立排序模型成为可能。事实上,排序学习已经成为了当今互联网搜索领域一个关键技术。

排序学习系统框架

排序学习是一个监督学习过程,排序学习包括训练和测试阶段(Fig. 1)。

信息检索的排序学习

Fig. 1 信息检索的排序学习

对于标注训练集,选定LTR方法,确定损失函数,以最小化损失函数为目标进行优化即可得到排序模型的相关参数,这就是学习过程。预测过程将待预测结果输入学习得到的排序模型中,即可得到结果的相关得分,利用该得分进行排序即可得到待预测结果的最终顺序。

排序学习特征选择[2]

与文本分类不同,LTR考虑的是给定查询的文档集合的排序。所以,LTR用到的特征不仅仅包含文档d本身的一些特征(比如是否是Spam)等,也包括文档d和给定查询q之间的相关度,以及文档在整个网络上的重要性(比如PageRank值等),亦即我们可以使用相关性排序模型和重要性排序模型的输出来作为L2R的特征。 
1. 传统排序模型的输出,既包括相关性排序模型的输出f(q,d),也包括重要性排序模型的输出。 
2. 文档本身的一些特征,比如是否是Spam等。

训练数据的获取[3]

有两种方式来获取训练数据:1.人工标注;2.搜索日志。

人工标注

从搜索日志中随机选取一部分Query,让受过专业训练的数据评估员对”Query-Url对”给出相关性判断。常见的是5档的评分:差、一般、好、优秀、完美。以此作为训练数据。 人工标注是标注者的主观判断,会受标注者背景知识等因素的影响。

搜索日志

使用点击日志的偏多。比如,结果ABC分别位于123位,B比A位置低,但却得到了更多的点击,那么B的相关性可能好于A。点击数据隐式反映了同Query下搜索结果之间相关性的相对好坏。在搜索结果中,高位置的结果被点击的概率会大于低位置的结果,这叫做”点击偏见”(Click Bias)。但采取以上的方式,就绕过了这个问题。因为我们只记录发生了”点击倒置”的高低位结果,使用这样的”偏好对”作为训练数据。关于点击数据的使用,后续再单独开帖记录,这里不展开。 在实际应用中,除了点击数据,往往还会使用更多的数据。比如通过session日志,挖掘诸如页面停留时间等维度。 在实际场景中,搜索日志往往含有很多噪音。且只有Top Query(被搜索次数较多的Query)才能产生足够数量能说明问题的搜索日志。

公共数据集

现存一批公开的数据集可以使用

LETOR, http://research.microsoft.com/en-us/um/beijing/projects/letor/ 
Microsoft Learning to Rank Dataset, http://research.microsoft.com/en-us/projects/mslr/ 
Yahoo Learning to Rank Challenge, http://webscope.sandbox.yahoo.com/

训练方法[2][3]

LTR的学习方法分为单文档方法(Pointwise)、文档对方法(Pairwise)和文档列表方法(Listwise)三类。Pointwise和Pairwise把排序问题转换成 回归 、分类 或有序分类 问题。Lisewise把Query下整个搜索结果作为一个训练的实例。3种方法的区别主要体现在损失函数(Loss Function)上。

单文档方法(Pointwise)

PointWise方法只考虑给定查询下,单个文档的绝对相关度,而不考虑其他文档和给定查询的相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑单个文档di和该查询的相关程度ci,亦即输入数据应该是如下的形式:

单文档方法1

函数框架 

L(F(x),y)=i=1nl(f(xi)yi)

小结 
单文档方法2

Pointwise方法主要包括以下算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

Pointwise方法仅仅使用传统的分类,回归或者Ordinal Regression方法来对给定查询下单个文档的相关度进行建模。这种方法没有考虑到排序的一些特征,比如文档之间的排序结果针对的是给定查询下的文档集合,而Pointwise方法仅仅考虑单个文档的绝对相关度;另外,在排序中,排在最前的几个文档对排序效果的影响非常重要,Pointwise没有考虑这方面的影响。

文档对方法(Pairwise)

文档对方法(Pairwise)中排序问题被转化成结果对的 回归 、 分类 或 有序分类 的问题。Pairwise方法考虑给定查询下,两个文档之间的相对相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档之间的相对相关度:di>dj,或者di<dj

文档对方法1

函数框架 

L(F(x),y)=i=1n1j=i+1nl(sign(yiyj),f(xi)f(xj))

小结 
文档对方法2

Pairwise方法主要包括以下几种算法:Learning to Retrieve Information (SCC 1995), Learning to Order Things (NIPS 1998), Ranking SVM (ICANN 1999), RankBoost (JMLR 2003), LDM (SIGIR 2005), RankNet (ICML 2005), Frank (SIGIR 2007), MHR(SIGIR 2007), Round Robin Ranking (ECML 2003), GBRank (SIGIR 2007), QBRank (NIPS 2007), MPRank (ICML 2007), IRSVM (SIGIR 2006) 。

相比于Pointwise方法,Pairwise方法通过考虑两两文档之间的相对相关度来进行排序,有一定的进步。但是,Pairwise使用的这种基于两两文档之间相对相关度的损失函数,和真正衡量排序效果的一些指标之间,可能存在很大的不同,有时甚至是负相关,如下图所示(pairwise的损失函数和NDCG之呈现出负相关性):

文档对方法3

另外,有的Pairwise方法没有考虑到排序结果前几名对整个排序的重要性,也没有考虑不同查询对应的文档集合的大小对查询结果的影响(但是有的Pairwise方法对这些进行了改进,比如IR SVM就是对Ranking SVM针对以上缺点进行改进得到的算法)。

文档列表方法(Listwise)

与Pointwise和Pairwise方法不同,Listwise方法直接考虑给定查询下的文档集合的整体序列,直接优化模型输出的文档序列,使得其尽可能接近真实文档序列。

函数框架 

L(F(x),y)=exp(NDCG)

小结 
文档列表方法3

Listwise算法主要包括以下几种算法:LambdaRank (NIPS 2006), AdaRank (SIGIR 2007), SVM-MAP (SIGIR 2007), SoftRank (LR4IR 2007), GPRank (LR4IR 2007), CCA (SIGIR 2007), RankCosine (IP&M 2007), ListNet (ICML 2007), ListMLE (ICML 2008) 。

相比于Pointwise和Pairwise方法,Listwise方法直接优化给定查询下,整个文档集合的序列,所以比较好的解决了克服了以上算法的缺陷。Listwise方法中的LambdaMART(是对RankNet和LambdaRank的改进)在Yahoo Learning to Rank Challenge表现出最好的性能。

排序学习效果评价

排序学习是用机器学习的方法来进行排序,所以评价L2R效果的指标就是评价排序的指标,主要包括一下几种:

1) WTA(Winners take all) 对于给定的查询q,如果模型返回的结果列表中,第一个文档是相关的,则WTA(q)=1,否则为0.

2) MRR(Mean Reciprocal Rank) 对于给定查询q,如果第一个相关的文档的位置是R(q),则MRR(q)=1/R(q)。

3) MAP(Mean Average Precision) 对于每个真实相关的文档d,考虑其在模型排序结果中的位置P(d),统计该位置之前的文档集合的分类准确率,取所有这些准确率的平均值。

4) NDCG(Normalized Discounted Cumulative Gain) 是一种综合考虑模型排序结果和真实序列之间的关系的一种指标,也是最常用的衡量排序结果的指标,详见Wikipedia。

5) RC(Rank Correlation) 使用相关度来衡量排序结果和真实序列之间的相似度,常用的指标是Kendall’s Tau。

Reference

  1. Hang L I. A short introduction to learning to rank[J]. IEICE TRANSACTIONS on Information and Systems, 2011, 94(10): 1854-1862.
  2. Learning to Rank 简介
  3. Learning to Rank小结