读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& ...
随机推荐
- bzoj 2013: A huge tower 数学
题目: 有\(N(2\leq N\leq 620000)\)块砖,要搭一个\(N\)层的塔,要求:如果砖\(A\)在砖\(B\)上面,那么\(A\)不能比\(B\)的长度\(+D\)要长.问有几种方法 ...
- Linux下系统监控工具nmon使用
Mongodb安装在Centos7或以上的版本,对于系统的监控方法如下: 1.从\\10.10.10.1\ShareDoc\User\Zchen\linux系统监控下下载2个工具 nmon16e_mp ...
- YII1.1分页
一.控制器 $criteria = new CDbCriteria(); //这里可以加一些条件 $criteria->addCondition('parent_id='.$this->c ...
- Kubernetes创建挂载共享存储的容器
原文链接:https://www.58jb.com/html/135.html 在上一次的Mysql容器中,已经使用过了配置宿主机目录挂载的方式,这样虽然方便但是不够安全:一般都是把数据存储在远程服务 ...
- docker镜像的导入和导出
启动命令 docker run -d -p 3000:80 twang2218/gitlab-ce-zh:9.0.3 docker run -d -p 8080:80 gitlab/gitlab-ce ...
- C++动多态和静多态
动多态的设计思想:对于相关的对象类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功能声明为多个公共的虚函数接口.各个子类重写这些虚函数,以完成具体的功能.客户端的代码(操作函数)通过指向 ...
- mysql 备份语句
模板: mysqldump -h IP -u user -p 选项 dbname>d:\db.sql 选项:-f表示有错误时继续 -d 表示--no-create-db, -n表示--no-da ...
- Process使用
最近在一个项目中,需要在C#中调用cmd窗口来执行一个命令,使用到了Process这个类,使用过程中遇到不少问题,好在终于解决了.赶紧记录下来. Process process = new Proce ...
- (转)C#特性详解
本文转载自:http://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类 ...
- 框架Mockito
一.什么是mock测试,什么是mock对象? 先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例. 一种替代方案就是使用mocks 从图 ...