读paper笔记[Learning to rank]
读paper笔记[Learning to rank]
by Jiawang
选读paper:
[1] Ranking by calibrated AdaBoost, R. Busa-Fekete, B. Kégl, T. Éltető & G. Szarvas; 14:37–48, 2011.
[2] Web-Search Ranking with Initialized Gradient Boosted Regression Trees, A. Mohan, Z. Chen & K. Weinberger; 14:77–89, 2011.
两篇paper都来自Yahoo! Learning to Rank Challenge 2010的优胜者队。
介绍
[1] 主要用pointwise的方法作为学习器,在最后做model combination的时候用listwise的方法。主要的几个创新点:1)做了querywise的feature normalization; 2)用了Adaboost的多分类(没有用回归); 3)对于分类结果做了回归校准; 4)在最后做model combination的时候用了指数权重的方法(listwise)。在训练model时,用了不同的label grouping的方法,同时用了decision tree和decision products[4]作为base learner, 增加了model的多样性。在这篇文章中,listwise的model combination是亮点。
[2] 主要将Random Forests(RF)和Gradient Boosted Regression Trees(GBRT)做了一个sequence的combine.他们用RF得到了非常不错的效果,甚至比GBRT还要好。他们最后所用的方法是先用RF学习一个ranking function, 用这个ranking function的输出去初始化GBRT,做一个sequence 的combine, combine的结果要比他们单独的结果都要好。他们最后分析也认为,分类能比回归得到更好的效果,这个结论和[7]相同,很值得尝试。从他们的结果看,RF和GBRT的combine还是很有意义的,RF的一些优点在最后的model中都有体现,比如对parameter choice不敏感,不容易过拟合等。RF和GBRT的combine也解决了一个GBRT的缺点,因为GBRT是一个gradient boosting的方法,这一类方法存在一个trade-off, 就是step size和迭代轮数之间。如果要达到真正的global minimum, step size就必须很小,迭代轮数就必须增大,通过与RF的combine,对这个问题有所缓解,RF给了GBRT一个接近终点的start point, 这样即使step size比较小,也能比较快的结束迭代。
几个point
[Preprocessing] Raw Feature Normalization
如果用基于tree的分类器,global的normalization是没有意义的,这一类的分类器对于任何单调的变化都不敏感。对于learning to rank,大多数feature都是一些计数型的值[3],比如tf, df之类,绝对值之间的比较意义不大,一些很popular的词可能值会非常大。所以经常用一些querywise的方法做raw feature normalization.
[Preprocessing] Label Grouping
对于query-document的label, 表明了document和query的相关性,不可避免的带有标注人员的主观性。但是document和query是否相关,还是相对容易判断的。为了减少label noise,可以将相邻的label合并,合并方法可以有多种,如果用boosting的方法,用不同的label grouping的方法,可以增加model的多样性,减少label noise的影响。
Pointwise VS. Pairwise VS. Listwise
一般认为,pairwise和listwise的方法效果要好于pointwise[5][6], 但是复杂度也更高,训练model对于时间和memory的开销也更大。从今年Yahoo LRT Challenge来看,前12名公布的方法中,pointwise占80%. [1] 也尝试用了一些pairwise的方法,但在他们的实验中效果并不好,但最后model-combination的方法是一个轻量级的listwise的方法,效果提升很明显。虽然这样,[1]也提到,如果有足够的计算资源,对所用的pairwise或者listwise方法足够精通的话,pairwise和listwise的方法仍然是最好的选择,但是pointwise的方法也有很多优点,比如简单,计算低廉,鲁棒性很好。
Classification VS. Regression
大多数pointwise的方法都是用回归算法预测label. [1]用Adaboost构造了一个多分类器,最后通过回归校准得到了一个实数,但是回归校准对最后的效果提升帮助并不大。[2]所用的所有算法都是回归算法,但是线下也做了分类算法的评估,在他们的评估中,RF, GBRT, RF和GBRT combine的model如果用分类,效果在Yahoo和Microsoft的大多数数据集上都要好于用回归算法,评估方法为ERR和nDCG. [7]也得到了类似的结论,分类的效果要好于回归。
Feature Selection
GBRT是一个非常适合做ranking的算法[8][9],实际上2010 Yahoo Learning to Rank Challenge中成绩比较好的team基本上都或多或少用到了GBRT的各种变换[10]。包括Adaboost也都宣称可以handle noisy featues, 但根据以往的经验,feature selection也许还是需要尝试做一下。[11]也做了一些尝试。在LTR问题中,不管是提升效果或者效率,还是分析feature, 分析case,feature selection都有必要尝试做一下,在做feature selection的过程中,fature ranking, feature contribution都能得到,对于feature的分析也有助于提升结果和解决bad case的能力,提升learning算法的可控性。
总结
[1]和[2]都用的pointwise的方法,而且效果并不比pairwise和listwise的方法差,pointwise的方法有很多优点,前面都已经提过。对于LTR,pointwise的方法大多数都用regression,但[1]用的classification,[2]线下的评估也证明classification能得到更好的结果。[1]最大的亮点是最后model combination的时候用了listwise的方法,在后面的评估中也能看到效果很明显。[2]主要是结合了RF和GBRT的优点,用RF的结果初始化GBRT,使GBRT能有一个较好的start point,解决了GBRT很尴尬的一个trade off( step size和迭代轮数).最后的结果也比两个model单独的效果都要好。从两篇文章中,得到的主要信息有:1) raw feature的normalization,对于单个model的效果提升有比较重要的影响,对于如何normalization,要视具体算法,如果是tree-based算法,querywise的normalization效果在[1]中体现的还不错;2) 对于pointwise, pairwise还是listwise,不必拘泥于到底用哪种方法,要综合考虑效率,内存,效果,pointwise也可以达到很好的效果;3) 用分类来解决LTR也是一个很值得尝试的方向(可以根据分类的结果做回归校准);4)RF和GBRT的combine是一个很好的启发,结合了两个算法的优点; 5)在用boosting的算法时,即便base learner是pointwise的,在最后的model combination还是可以尝试一些listwise的方法,效果在[1]中提升很明显。
References
[1] Ranking by calibrated AdaBoost, R. Busa-Fekete, B. Kégl, T. Éltető & G. Szarvas; 14:37–48, 2011.
[2] Web-Search Ranking with Initialized Gradient Boosted Regression Trees, A. Mohan, Z. Chen & K. Weinberger; 14:77–89, 2011.
[3] http://research.microsoft.com/en-us/projects/mslr/feature.aspx
[4] Kegl and R. Busa-Fekete. Boosting products of base classifiers. In International Conference on Machine Learning, volumn 26, pages 497-504, Montreal, Canada, 2009
[5] Cao et al., Learning to rank: from pairwise approach to listwise approach. In Proceedings of the 24rd International Conference on Machine Learning, pages 129-136, 2007
[6] Valizadegan et al., Learning to rank by optimizing NDCG measure. In Advances in Neural Information Processing Systems 22, pages 1883-1891, 2009
[7] Li et al., Learning to rank using classification and gradient boosting. In Proceedings of the International Conference on Advances in Neural Information Processing Systems(NIPS), 2007
[8] Zheng et al., A general boosting method and its application to learning ranking functions for web search. Advances in Neural Information Processing Systems, 19, 2007
[9] Burges. From RankNet to LambdaRank to LambdaMART: An Overview. Microsoft Research Technical Report MSR-TR-2010-82, 2010
[10] http://learningtorankchallenge.yahoo.com/workshop.php
[11] http://jmlr.csail.mit.edu/papers/volume3/guyon03a/guyon03a.pdf
读paper笔记[Learning to rank]的更多相关文章
- [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
- Learning To Rank之LambdaMART前世今生
1. 前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...
- 【RS】List-wise learning to rank with matrix factorization for collaborative filtering - 结合列表启发排序和矩阵分解的协同过滤
[论文标题]List-wise learning to rank with matrix factorization for collaborative filtering (RecSys '10 ...
- Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
- Learning to rank 介绍
PS:文章主要转载自CSDN大神hguisu的文章"机器学习排序": http://blog.csdn.net/hguisu/article/details/79 ...
- [Machine Learning] Learning to rank算法简介
声明:以下内容根据潘的博客和crackcell's dustbin进行整理,尊重原著,向两位作者致谢! 1 现有的排序模型 排序(Ranking)一直是信息检索的核心研究问题,有大量的成熟的方法,主要 ...
- learning to rank
Learning to Rank入门小结 + 漫谈 Learning to Rank入门小结 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 特征抽取 3.1 人工 ...
- Learning to Rank 简介
转自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html,感谢分享! 本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩 ...
- 【模式识别】Learning To Rank之RankBoost
RankBoost的思想比較简单,是二元Learning to rank的常规思路:通过构造目标分类器,使得pair之间的对象存在相对大小关系.通俗点说,把对象组成一对对的pair,比方一组排序r1& ...
随机推荐
- NAT打洞
NAT(Network Address Translation)是一种广域网的接入技术,将私有地址转换为合法的公共IP地址,可以完美的解决IP地址不足问题,而且还能有效避免来自外部网络的攻击,隐藏并保 ...
- Vue 中的 computed 和 methods
Vue 中的 computed 和 methods 使用 computed 性能会更好. 如果你不希望缓存,可以使用 methods 属性.
- 基于微服务的父maven依赖
<dependencies> <!-- spring-boot核心 --> <dependency> <groupId>org.springframew ...
- CentOS7.2 Jenkins部署
1.安装配置java环境 直接下载二进制安装包: # tar xvf jdk-8u111-linux-x64.tar.gz -C /usr/local/src/ # ln -sv /usr/local ...
- .NET Framework、C#、CLR和Visual Studo之间的版本关系
.NET Framework.C#.CLR和Visual Studo之间的版本关系 参考 .NET Framework.C#.CLR和Visual Studo之间的版本关系
- 接口方式[推荐]/动态SQL语句
MVC目录结构: Src -- com.shxt.servlet[控制层] --com.shxt.service[业务逻辑层] --com.shxt.model[实体Bean,用来承载数据] --co ...
- Linux驱动 - 多线程之 完成量
Linux 系统提供了一种比信号量更好的同步机制,即完成量(completion ,它用于一个执行单元等待另一个执行单元执行完某事. Linux 系统中与 completion 相关的操作主要有以下 ...
- mybatis 动态sql语句(1)
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...
- “百度杯”CTF比赛 2017 二月场(Misc Web)
爆破-1: 打开链接,是502 我直接在后面加个变量传参数:?a=1 出了一段代码 var_dump()函数中,用了$$a,可能用了超全局变量GLOBALS 给hello参数传个GLOBALS 得到f ...
- Oracle Management Packs
http://kerryosborne.oracle-guy.com/2008/10/oracle-management-packs/ There has been quite a bit of co ...