LambdaMART笔记

LambdaMART是一种state-of-art的Learning to rank算法,由微软在2010年提出[1]。在工业界,它也被大量运用在各类ranking场景中。LambdaMART可以看做GDBT版本的LambdaRank,而后者又是基于RankNet发展而来的。RankNet最重要的贡献是提出了一种pairwise的用于排序的概率损失函数,而LambdaRank又在损失函数中巧妙的引入了NDCG等ranking metrics来优化排序效果。LambdaMART则是集大成者,它结合了上述两篇文章中提出的Lambda函数以及GDBT这个效果经过实践证明的ensemble算法,在各种排序问题中均能取得不错的效果。下面是目前的一些开源实现:

  1. Ranklib
  2. Xgboost

RankNet

RankNet是2005年微软提出的一种pairwise的Learning to rank算法,它从概率的角度来解决排序问题。RankNet提出了一种pairwise的概率损失函数,并可以应用于任意对参数可导的学习算法。在论文中,RankNet基于神经网络实现,除此之外,GDBT等模型也可以应用该损失函数。
RankNet是一个pairwise的算法,它首先将训练数据中同一Query下的doc两两组成pair,用{Ui,Uj}表示。模型的学习目标是得到一个打分函数f(x),它的输入是某个doc的特征向量x,输出是一个实数,值越高代表该doc的排序位置应该越靠前。也就是说,当f(xi)>f(xj)时,Ui的排序位置应该在Uj之前,用Ui ▷ Uj表示。基于此,我们定义Ui比Uj排序位置更靠前的概率如下,其中,s=f(x).

我们的目标概率(理想情况,预测概率应该尽可能拟合的概率)如下:

为了方便计算,我们令:

这样,根据Ui和Uj的标注得分,就可以计算P‘ij
有了目标概率和模型预测概率,使用交叉熵损失函数(cross entropy loss function)作为概率损失函数,它衡量了预测概率和目标概率在概率分布上的拟合程度:

求上式关于si的偏导,由于对称性可以得到如下结论:

计算C关于模型参数wk的偏导,并应用gradient descent求解:

总的来说,RankNet从概率角度定义了排序问题的loss function,并通过梯度下降法求解。所以RankNet依赖的模型必须是平滑的,保证梯度是可以计算的。在paper中,作者选择一个两层的神经网络作为排序模型。除此之外,选择GBDT也可以取得不错的效果。

交叉熵
设随机变量X服从的概率分布为p(x),往往p(x)是未知的,我们通过统计方法得到X的近似分布q(x),则随机变量X的交叉熵为:

它衡量了q(x)和p(x)的拟合程度

加速学习算法

在上述的学习过程中,每一对样本{Ui,Uj}都会更新一次参数w,如果采用BP神经网络模型,每一次更新都需要先前向预测,再误差后向反馈,训练过程非常慢。因此,有了下面的加速算法;
对于给定的样本对Ui,Uj,我们有如下推导:
![][07]
这里我们定义:
![][08]
梯度下降量的求解如下:
![][09]
其中,为了计算简便,我们令{i,j}满足Ui>Uj,所以有
![][10]
上两式合并有:
![][12]
其中:
![][11]
这样,我们将每更新一次w,计算一个样本对{Ui,Uj}
改为了计算Ui所能组成的所有样本对。加速算法可以看成是一种mini-batch的梯度下降算法。

LambdaRank

在RankNet中,我们使用了交叉熵概率损失函数,并作为最优化的目标。但对于IR问题,通常选择NDCG、ERR作为评价指标,这两者间存在一定的mismatch。另一方面,NDCG、ERR是非平滑、不连续的,无法求梯度,不能直接运用梯度下降法求解,将其直接作为优化目标是比较困难的。因此,LambdaRank选择了直接定义cost function的梯度来解决上述问题。
LambdaRank是一个经验算法,它直接定义的了损失函数的梯度λ,也就是Lambda梯度。Lambda梯度由两部分相乘得到:(1)RankNet中交叉熵概率损失函数的梯度;(2)交换Ui,Uj位置后IR评价指标Z的差值。具体如下:
![][15]
Z可以是NDCG、ERR、MRR、MAP等IR评价指标
损失函数的梯度代表了文档下一次迭代优化的方向和强度,由于引入了IR评价指标,Lambda梯度更关注位置靠前的优质文档的排序位置的提升。有效的避免了下调位置靠前优质文档的位置这种情况的发生。
LambdaRank相比RankNet的优势在于考虑了评价指标,直接对问题求解,所以效果更好。

LambdaMART

LambdaRank中重新定义了损失函数的梯度,而这个Lambda梯度可以应用于任何使用梯度下降法求解的模型。自然,我们想到了将Lambda梯度和MART结合,这就是LambdaMART。

MART

学习过程

Ranklib

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容

  • 最近工作中需要调研一下搜索排序相关的方法,这里写一篇水文,总结一下几天下来的调研成果。包括 Learning to...
    y_felix阅读 12,590评论 3 16
  • 1. RankNet RankNet是2005年微软提出的一种pairwise的Learning to Rank算...
    山的那边是什么_阅读 9,175评论 0 3
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,472评论 0 6
  • PointWise 这种方法没有考虑到排序的一些特征,比如文档之间的排序结果针对的是给定查询下的文档集合,而Poi...
    yi_cloud阅读 4,412评论 0 19
  • LTR 算法通常有三种手段,分别是:Pointwise、Pairwise 和 Listwise。Pointwise...
    全刚阅读 2,894评论 1 2