Learning to Rank 简介

标签: learning to rank | 发表时间:2013-06-01 16:09 | 作者:Kemaswill
出处:http://www.cnblogs.com/

  去年实习时,因为项目需要,接触了一下Learning to Rank(以下简称L2R),感觉很有意思,也有很大的应用价值。L2R将机器学习的技术很好的应用到了排序中,并提出了一些新的理论和算法,不仅有效地解决了排序的问题,其中一些算法(比如LambdaRank)的思想非常新颖,可以在其他领域中进行借鉴。鉴于排序在许多领域中的核心地位,L2R可以被广泛的应用在信息(文档)检索,协同过滤等领域。

  本文将对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,如果一个文档d i被点击过,另外一个文档d j没有被点击过,并且d j在结果列表中排在d i之前,则d i>d j就是一条训练记录。亦即训练数据为:{d i>d j|d i属于C,d j属于L-C,p(d j)<p(d i)},其中p(d)表示文档d在查询结果列表中的位置,越小表示越靠前。

5. L2R模型训练

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

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

6. L2R算法分类和简介

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

1). PointWise L2R

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

  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的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档之间的相对相关度:d i>d j,或者d i<d j。

  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小结

本文链接

相关 [learning to rank] 推荐:

Learning to Rank 简介

- - 博客园_首页
  去年实习时,因为项目需要,接触了一下Learning to Rank(以下简称L2R),感觉很有意思,也有很大的应用价值. L2R将机器学习的技术很好的应用到了排序中,并提出了一些新的理论和算法,不仅有效地解决了排序的问题,其中一些算法(比如LambdaRank)的思想非常新颖,可以在其他领域中进行借鉴.

Deep Learning 基础知识

- - 互联网旁观者
Deep Learning是机器学习研究中的新领域,其目的是让机器学习更加接近人工智能. 下面这篇文档则是关于Deep learning的最新介绍文档:. A particular property of such flow graphs is depth: the length of the longest path from an input to an output..

关于深度学习&mdash;&mdash;Deep Learning

- - 互联网旁观者
转载自: http://blog.csdn.net/abcjennifer/article/details/7826917. Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,最近研究了机器学习中一些深度学习的相关知识,本文给出一些很有用的资料和心得.

別再追逐 Google PageRank!從 Author Rank 找出自己的特色與價值

- - 免費資源網路社群
Google 在 2011 年加入「 Google 原創性標記」(Google Authorship),簡單來說就是把你在特定網域所發佈的內容連結到 Google+ 個人資料,讓你所撰寫的原創內容可以被署名並顯示於 Google 搜尋結果中,這麼做有什麼好處呢. 根據 Google 的說法,這將有助於區別並驗證搜尋結果內容,也能在 Google+ 上吸引更多追蹤者,或是協助讀者在網路上辨識你所寫過的其他內容.

转载的一些machine learning的网站总结

- knighter - 增强视觉 | 计算机视觉 增强现实
转载自demonstrate 的 blog. 这里搜集了一些常见的和 machine learning 相关的网站,按照 topic 来分. http://www.gaussianprocess.org 包括相关的书籍(有 Carl Edward Rasmussen 的书),相关的程序以及分类的 paper 列表.

机器学习全球公开课-Machine Learning

- Sosi - 丕子
很久之前关于机器学习Machine Learning的公开课咱们就都开始看了,也都知道了,本科的时候就看过,是从itunes上下载的视频,当然是斯坦福的Professor Andrew Ng 讲的,不过看不懂,也听不大懂,哎,惭愧. 现在还好多了,拿来看看理解下,不过我还是基本没看过这个视频. 现在也有带有字幕的了,像是网易公开课的,中英文字幕很给力啊,都三集了,不过这里的视频当然不知道是否是合法的,但是不管怎么样,肯定给学习的人有了很大的启蒙和帮助.

新学期第2周:Pragmatic Thinking and Learning 笔记

- 透明 - 崔添翼 § 翼若垂天之云
以下是我在阅读 Pragmatic Thinking and Learning: Refactoring Your Wetware (中文版为程序员的思维修炼)时做的英文笔记,未经整理. Everything is interconnected in nonlinear systems (small things can have unexpectedly large effects), and you’re part of it even you don’t know.

【deep learning学习笔记】最近读的几个ppt(二)

- - CSDN博客推荐文章
Andrew Ng今年三月份在清华做的一篇报告,ppt,109页. 从图像识别,讲特征表示,如:月hi辆摩托车的图像,在电脑中表示为像素矩阵,不过在人脑中,由轮子、把手等各个组件组成. 进一步讲特征表示,如:NLP中,一句话,可以句法分析为一个树状表示,树的每一层,都是一种特征表示. 此外,词性标注、wordnet语义等都是特征.

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

- -

努力学习却不能提高的症结所在[Efforts To Improve Learning Are Not Effective]

- - 左岸读书_blog
回顾起中学生活,应该是一个事倍功半的年代,源于有目标而不得法的状态. 当时候有大量的有梦想的年轻同学们,孜孜不倦的在书本的海洋中努力学习,心怀上一个好大学的梦想. 这种梦想支持了很多同学能够日复一日的从枯燥的学习中获得少量的进步. 但是,由于方法论的不得当,造成了对心理的巨大损伤. 这一切的原因最重要的是缺乏一个有方法、懂战术、大处看战略,小处抓细节的老师的指导.