Learning to Rank 简介

转自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html,感谢分享!

本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩、李航等人的几篇相关文献[1,2,3],我们将围绕以下几点来介绍L2R:现有的排序模型,为什么需要使用机器学习的方法来进行排序,L2R特征的选取,L2R训练数据的获取,L2R训练和测试,L2R算法分类和简介,L2R效果评价等。

1.现有的排序模型

排序(Ranking)一直是信息检索的核心研究问题,有大量的成熟的方法,主要可以分为以下两类:相关度排序模型和重要性排序模型。

1.1 相关度排序模型(Relevance Ranking Model)

相关度排序模型根据查询和文档之间的相似度来对文档进行排序。常用的模型包括:布尔模型(Boolean Model),向量空间模型(Vector Space Model),隐语义分析(Latent Semantic Analysis),BM25,LMIR模型等等。

1.2 重要性排序模型(Importance Ranking Model)

重要性排序模型不考虑查询,而仅仅根据网页(亦即文档)之间的图结构来判断文档的权威程度,典型的权威网站包括Google,Yahoo!等。常用的模型包括PageRank,HITS,HillTop,TrustRank等等。

2. 为什么需要使用机器学习的方法来进行排序

对于传统的排序模型,单个模型往往只能考虑某一个方面(相关度或者重要性),所以只是用单个模型达不到要求。搜索引擎通常会组合多种排序模型来进行排序,但是,如何组合多个排序模型来形成一个新的排序模型,以及如何调节这些参数,都是一个很大的问题。

使用机器学习的方法,我们可以把各个现有排序模型的输出作为特征,然后训练一个新的模型,并自动学得这个新的模型的参数,从而很方便的可以组合多个现有的排序模型来生成新的排序模型。

3. L2R的特征选取

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

1). 传统排序模型的输出,既包括相关性排序模型的输出f(q,d),也包括重要性排序模型的输出。

2). 文档本身的一些特征,比如是否是Spam等。

4. L2R训练数据的获取

L2R的训练数据可以有三种形式:对于每个查询,各个文档的绝对相关值(非常相关,比较相关,不相关,等等);对于每个查询,两两文档之间的相对相关值(文档1比文档2相关,文档4比文档3相关,等等);对于每个查询,所有文档的按相关度排序的列表(文档1>文档2>文档3)。这三种形式的训练数据之间可以相互转换,详见[1]。

训练数据的获取有两种主要方法:人工标注[3]和从日志文件中挖掘[4]。

人工标注:首先从搜索引擎的搜索记录中随机抽取一些查询,将这些查询提交给多个不同的搜索引擎,然后选取各个搜索引擎返回结果的前K个,最后由专业人员来对这些文档按照和查询的相关度进行标注。

从日志中挖掘:搜索引擎都有大量的日志记录用户的行为,我们可以从中提取出L2R的训练数据。Joachims提出了一种很有意思的方法[4]:给定一个查询,搜索引擎返回的结果列表为L,用户点击的文档的集合为C,如果一个文档di被点击过,另外一个文档dj没有被点击过,并且dj在结果列表中排在di之前,则di>dj就是一条训练记录。亦即训练数据为:{di>dj|di属于C,dj属于L-C,p(dj)<p(di)},其中p(d)表示文档d在查询结果列表中的位置,越小表示越靠前。

5. L2R模型训练

L2R是一个有监督学习过程。

对与每个给定的查询-文档对(query document pair),抽取相应的特征(既包括查询和文档之间的各种相关度,也包括文档本身的特征以及重要性等),另外通过或者人工标注或者从日志中挖掘的方法来得到给定查询下文档集合的真实序列。然后我们使用L2R的各种算法来学到一个排序模型,使其输出的文档序列和真实序列尽可能相似。

6. L2R算法分类和简介

L2R算法主要包括三种类别:PointWise,PairWise,ListWise。

1). PointWise L2R

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

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没有考虑这方面的影响。

2). Pairwise L2R

Pairwise方法考虑给定查询下,两个文档之间的相对相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档之间的相对相关度:di>dj,或者di<dj。

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之呈现出负相关性):

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

3). Listwise L2R

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

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表现出最好的性能。

7. L2R效果评价

L2R是用机器学习的方法来进行排序,所以评价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

参考文献:

[1]. Learning to Rank for Information Retrieval. Tie-yan Liu.

[2]. Learning to Rank for Information Retrieval and Natural Language Processing. Hang Li.

[3]. A Short Introduction to Learning to Rank. Hang Li.

[4]. Optimizing Search Engines using Clickthrough Data. Thorsten Joachims. SIGKDD,2002.

[5]. Learning to Rank小结

时间: 2024-08-08 03:28:04

Learning to Rank 简介的相关文章

【学习排序】 Learning to Rank 中Listwise关于ListNet算法讲解及实现

前一篇文章"Learning to Rank中Pointwise关于PRank算法源码实现"讲述了基于点的学习排序PRank算法的实现.该篇文章主要讲述Listwise Approach和基于神经网络的ListNet算法及Java实现.包括: 1.基于列的学习排序(Listwise)介绍 2.ListNet算法介绍 3.ListNet算法Java实现 LTR中单文档方法是将训练集里每一个文档当做一个训练实例,文档对方法是将同一个查询的搜索结果里任意两个文档对作为一个训练实例,文档列方法

learning to rank

Learning to Rank入门小结 + 漫谈 Learning to Rank入门小结 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 特征抽取 3.1 人工标注 3.2 搜索日志 3.3 公共数据集 5 模型训练 5.1 训练方法 5.1.1 Pointwise 5.1.2 Pairwise 5.1.3 Listwise 6 效果评估7 参考 6.1 NDCG(Normalized Discounted Cumulative Gain) 6.1.1 定

Learning to rank 介绍

PS:文章主要转载自CSDN大神hguisu的文章"机器学习排序":          http://blog.csdn.net/hguisu/article/details/7989489      最近需要完成课程作业——分布式排序学习系统.它是在M/R.Storm或Spark架构上搭建分布式系统,并使用学习排序Pointwise.Pairwise和Listwise三大类算法实现对微软数据集(Microsoft Learning to Rank Datasets)进行学习排序,这篇

【学习排序】Learning to Rank中Pointwise关于PRank算法源码实现

最近终于忙完了Learning to Rank的作业,同时也学到了很多东西.我准备写几篇相关的文章简单讲述自己对它的理解和认识.第一篇准备讲述的就是Learning to Rank中Pointwise的认识及PRank算法的实现.主要从以下四个方面进行讲述: 1.学习排序(Learning to Rank)概念 2.基于点的排序算法(Pointwise)介绍 3.基于顺序回归(Ordinal Regression-based)的PRank排序算法 4.PRank算法Java\C++实现及总结 一

Learning to rank (software, datasets)

Datasets for ranking (LETOR datasets) MSLR-WEB10k and MSLR-WEB30k You’ll need much patience to download it, since Microsoft’s server seeds with the speed of 1 Mbit or even slower. The only difference between these two datasets is the number of querie

Learning To Rank之LambdaMART的前世今生

1.       前言 我们知道排序在很多应用场景中属于一个非常核心的模块,最直接的应用就是搜索引擎.当用户提交一个query,搜索引擎会召回很多文档,然后根据文档与query以及用户的相关程度对文档进行排序,这些文档如何排序直接决定了搜索引擎的用户体验.其他重要的应用场景还有在线广告.协同过滤.多媒体检索等的排序. LambdaMART是Learning To Rank的其中一个算法,适用于许多排序场景.它是微软Chris Burges大神的成果,最近几年非常火,屡次现身于各种机器学习大赛中,

[笔记]Learning to Rank算法介绍:RankSVM 和 IR SVM

之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to Rank的几类常用的方法:pointwise,pairwise,listwise.这篇博客就很多公司在实际中通常使用的pairwise的方法进行介绍,首先我们介绍相对简单的 RankSVM 和 IR SVM. 1. RankSVM RankSVM的基本思想是,将排序问题转化为pairwise的分类问题

(转)Learning to Rank for IR的评价指标—MAP,NDCG,MRR

转自:http://www.cnblogs.com/eyeszjwang/articles/2368087.html MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值.主集合的平均准确率(MAP)是每个主题的平均准确率的平均值.MAP 是反映系统在全部相关文档上性能的单值指标.系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高.如果系统没有返回相关文档,则准确率默认为0. 例如:假设有两个主题,主题1有4个相关网页,

【模式识别】Learning To Rank之RankBoost

RankBoost的思想比较简单,是二元Learning to rank的常规思路:通过构造目标分类器,使得pair之间的对象存在相对大小关系.通俗点说,把对象组成一对对的pair,比如一组排序r1>r2>r3>r4,那可以构成pair:(r1,r2)(r1,r3),(r1,r4),(r2,r3)(r3,r4),这样的pair是正值,也就是label是1:而余下的pair如(r2,r1)的值应该是-1或0.这样一个排序问题就被巧妙的转换为了分类问题.近来CV界很多又用这种learning