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

排序学习系统框架

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

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

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

排序学习特征选择[2] ^{[2]}

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

训练数据的获取[3] ^{[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] ^{[2][3]}

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

单文档方法(Pointwise)

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

函数框架

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

L(F(x),y)=\sum_{i=1}^{n}l(f(x_{i})-y_{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没有考虑这方面的影响。

文档对方法(Pairwise)

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

函数框架

L(F(x),y)=∑i=1n−1∑j=i+1nl(sign(yi−yj),f(xi)−f(xj))

L(F(x),y)=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}l(sign(y_{i}-y_{j}),f(x_{i})-f(x_{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针对以上缺点进行改进得到的算法)。

文档列表方法(Listwise)

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

函数框架

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

L(F(x),y)=exp(-NDCG)
小结

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

Learning to Rank(LTR)相关推荐

  1. Learning to Rank(LTR)(转)

    Learning to RankLTR 声明 摘要 背景 排序学习系统框架 排序学习特征选择2 训练数据的获取3 人工标注 搜索日志 公共数据集 训练方法23 单文档方法Pointwise 文档对方法 ...

  2. LTR (Learning to Rank): 排序算法 poitwise, pairwise, listwise常见方案总结

    目录 1 Learing to Rank介绍 2 The Pointwise Approach 3 The Pairwise Approach 3.1 RankNet 4 The Listwise A ...

  3. 搜索系统中的Learning To Rank模型:GBRank

    搜索系统中的Learning To Rank模型:GBRank FesianXu 20220326 at Baidu Search Team 前言 Learning To Rank(LTR)模型是对搜 ...

  4. LTR学习排序 Learning to Rank 小结

    出处:http://blog.csdn.NET/nanjunxiao/article/details/8976195 学习排序(Learning to Rank) LTR(Learning toran ...

  5. Learning to rank在淘宝的应用

     Learning to rank在淘宝的应用 作者:仁重 浏览量: 8066 评论数: 0 作者:仁重 (一淘及搜索事业部-搜索技术-算法技术-主搜索与商城) 前言 排序中我们需要解决的是什么样 ...

  6. Learning to Rank中Pointwise关于PRank算法源码实现

    [学习排序] Learning to Rank中Pointwise关于PRank算法源码实现 标签: 学习排序PRankPointwiseLearning to Rank代码实现 2015-01-28 ...

  7. Learning to Rank 中Listwise关于ListNet算法讲解及实现

     [学习排序] Learning to Rank 中Listwise关于ListNet算法讲解及实现             版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习, ...

  8. Learning to Rank 中Listwise关于ListNet算法讲授及实现

     Learning to Rank 中Listwise关于ListNet算法讲授及实现 前一篇文章"Learning to Rank中Pointwise关于PRank算法源码实现&quo ...

  9. Learning to Rank:X-wise

    LTR(Learning to Rank)学习排序已经被广泛应用到文本挖掘.搜索推荐系统的很多领域,比如IR中排序返回的相似文档,推荐系统中的候选产品召回.用户排序等,机器翻译中排序候选翻译结果等等. ...

最新文章

  1. PMP考试的形式和试题分布
  2. 当代最值得收藏的画家作品_欣赏当代知名画家谭日群——国画人物画书法作品欣赏...
  3. 《动物森友会》的社交分级,在虚拟世界设计舒适的社交氛围
  4. MongoDB的集群模式--Replica Set
  5. 200915阶段一C++模板
  6. 怎么注销midas服务器程序,MIDAS的服务器镜像技术
  7. Asp.net Core基于MVC框架实现PostgreSQL操作
  8. PHP实现一个轻量级容器
  9. 翰文付费打印后还有水印吗_免费开通小程序商城?!有支付功能吗?
  10. 放弃高考“打游戏”,别人25岁年入百万、我退役后回家修车
  11. ylmf os 将雨林木风的系统diy定制成自个儿个人的专用系统
  12. CenOS6 nginx+pxe+tftpd+samba/nfs+dhcpd 无盘安装windows  linux
  13. 北京工业大学微型计算机接口技术考试,汇编语言微机原理及接口技术期末试卷含答案...
  14. jquery ui accordion的详细参数
  15. 分解质因数 java_java代码分解质因数
  16. golang报错fatal error: all goroutines are asleep - deadlock
  17. 解决ps不能直接把文件拖进去的问题
  18. mingw版本下qt与HTML,QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程...
  19. 《机器学习实战》代码记录--决策树
  20. 萌新的linux之旅 find

热门文章

  1. 解决MAC 安装绿联网卡驱动无效问题
  2. Android应用开发--MP3音乐播放器界面设计(1)
  3. 计算机考试打字题题库6,2018四至六年级电脑测试题
  4. 使用highcharts做地图统计
  5. 名帖344 怀素 草书《佛说四十二章经》
  6. go学习笔记接口部分
  7. 小黑跟老黑们夜骑车拍完了毕业照面试了两场的leetcode之旅:793. 阶乘函数后 K 个零
  8. PMP : PMP备考心得 (1)
  9. 我的世界服务器显示弹幕,[娱乐]RaiixDM —— 在mc中接收b站直播弹幕[1.12.x-1.15.x]...
  10. select句柄数限制 及总结