机器学习排序算法:RankNet to LambdaRank to LambdaMART

使用机器学习排序算法LambdaMART有一段时间了,但一直没有真正弄清楚算法中的全部细节。html

学习过程当中细读了两篇不错的博文,推荐给你们:算法

梯度提高树(GBDT)原理小结网络

徐博From RankNet to LambdaRank to LambdaMART: An Overviewiphone

但通过一番搜寻以后发现,目前网上并无一篇透彻讲解该算法的文章,因此但愿这篇文章可以达到此目的。机器学习

本文主要参考微软研究院2010年发表的文章From RankNet to LambdaRank to LambdaMART: An Overview11,并结合本身的理解,试图将RankNet、LambdaRank和LambdaMART这三种算法的全部算法细节讲解透彻。函数

1. 概述

RankNet、LambdaRank和LambdaMART是三个关系很是紧密的机器学习排序算法。简而言之,RankNet是最基础,基于神经网络的排序算法;而LambdaRank在RankNet的基础上修改了梯度的计算方式,也即加入了lambda梯度;LambdaMART结合了lambda梯度和MART(另称为GBDT,梯度提高树)。这三种算法在工业界中应用普遍,在BAT等国内大厂和微软谷歌等世界互联网巨头内部都有大量应用,还曾经赢得“Yahoo!Learning To Rank Challenge(Track 1)"的冠军。本人认为若是评选当今工业界中三种最重要的机器学习算法,以LambdaMART为表明的集成学习算法确定占有一席之地,另外两个分别是支持向量机和深度学习。学习

2. RankNet

2.1 算法基础定义优化

RankNet解决以下搜索排序问题:给定query集合,每一个query都对应着一个文档集合,如何对每一个query返回排序后的文档集合。能够想象这样的场景:某位高考生在得知本身的成绩后,准备报考志愿。据说最近西湖大学办得不错,因此就想到网上搜搜关于西湖大学的资料。他打开一个搜索引擎,输入“西湖大学”四个字,而后点击“搜索”,页面从上到下显示了10条搜索结果,他认为排在上面的确定比下面的相关,因此就开始从上往下一个个地浏览。因此RankNet的目标就是对全部query,都能将其返回的文档按照相关性进行排序。搜索引擎

RankNet网络将输入query的特征向量xRnx∈Rn映射为一个实数f(x)Rf(x)∈R。RankNet采用pairwise的方法进行模型训练。具体地,给定特定query下的两个文档UiUi和UjUj,其特征向量分别为xixi和xjxj,通过RankNet进行前向计算获得对应的分数为si=f(xi)si=f(xi)和sj=f(xj)sj=f(xj)。用UiUjUi⊳Uj表示UiUi比UjUj排序更靠前(如对某个query来讲,UiUi被标记为“good”,UjUj被标记为“bad”)。继而能够用下面的公式来表示UiUi应该比UjUj排序更靠前的几率:atom

PijP(UiUj)11+eσ(sisj)Pij≡P(Ui⊳Uj)≡11+e−σ(si−sj)

这个几率实际上就是深度学习中常用的sigmoid函数,参数σσ决定sigmoid函数的形状。对于特定的query,定义Sij{0,±1}Sij∈{0,±1}为文档ii和文档jj被标记的标签之间的关联,即

 

 

Sij=⎧⎩⎨101ijijjiSij={1文档i比文档j更相关0文档i和文档j相关性一致−1文档j比文档i更相关

 

定义P¯¯¯¯ij=12(1+Sij)P¯ij=12(1+Sij)表示UiUi应该比UjUj排序更靠前的已知几率,则能够用交叉熵定义优化目标的损失函数:

C=P¯¯¯¯ijlogPij(1P¯¯¯¯ij)log(1Pij)C=−P¯ijlogPij−(1−P¯ij)log(1−Pij)

 

若是不太熟悉什么是交叉熵,能够参考宗成庆老师的《统计天然语言处理》2.2节“信息论基本概念”,里面将熵、联合熵、互信息、相对熵、交叉熵和困惑度等概念都讲得至关清楚。

结合以上多个公式,能够改写损失函数CC为:

C=12(1Sij)σ(sisj)+log(1+eσ(sisj))C=12(1−Sij)σ(si−sj)+log(1+e−σ(si−sj))

 

对于Sij=1Sij=1,

C=log(1+eσ(sisj))C=log(1+e−σ(si−sj))

 

然而对于Sij=1Sij=−1,

C=log(1+eσ(sjsi))C=log(1+e−σ(sj−si))

 

能够看出损失函数CC具备对称性,也即交换ii和jj的位置,损失函数的值不变。

分析损失函数CC的趋势发现,若是对文档UiUi和UjUj的打分能够正确地拟合标记的标签,则CC趋向于0,不然CC趋向于线性函数。具体地,假如Sij=1Sij=1,也即UiUi应该比UjUj排序高,若是si>sjsi>sj,则拟合的分数能够正确排序文档ii和文档jj,

limsisjC=limsisjlog(1+eσ(sisj))=log1=0limsi−sj→∞C=limsi−sj→∞log(1+e−σ(si−sj))=log1=0

 

若是si<sjsi<sj,则拟合的分数不能正确排序文档ii和文档jj,

limsisjC=limsisjlog(1+eσ(sisj))=log(eσ(sisj))=σ(sisj)limsi−sj→∞C=limsi−sj→∞log(1+e−σ(si−sj))=log(e−σ(si−sj))=−σ(si−sj)

 

利用神经网络对模型进行训练,目前最有效的方法就是反向传播算法。反向传播算法中最核心部分就是损失函数对模型参数的求导,而后可使用下面的公式对模型参数进行迭代更新:

 

wkwkηCwk=wkη(Csisiwk+Csjsjwk)wk←wk−η∂C∂wk=wk−η(∂C∂si∂si∂wk+∂C∂sj∂sj∂wk)

 

损失函数CC对sisi和sjsj的偏导数为:

Csi=σ(12(1Sij)11+eσ(sisj))=Csj∂C∂si=σ(12(1−Sij)−11+eσ(si−sj))=−∂C∂sj

 

sisi和sjsj对wkwk的偏导数可根据神经网络求偏导数的方式求得。求得了损失函数CC对神经网络模型参数wkwk的偏导数以后,就可使用梯度降低算法对其更新。这里的学习率ηη也是一个正数,由于ηη须要知足下面的不等式:

δC=kCwkδwk=kCwk(ηCwk)=ηk(Cwk)2<0δC=∑k∂C∂wkδwk=∑k∂C∂wk(−η∂C∂wk)=−η∑k(∂C∂wk)2<0

 

2.2 RankNet分解形式:加速RankNet训练过程

2.1节中定义的RankNet,对于每个文档对(Ui(Ui,Uj)Uj)都将计算损失函数对神经网络的参数wkwk的偏导数,而后更新模型参数wkwk。这样作的缺点在于,对模型参数更新慢,耗时长。因此本节讲解如何经过分解组合的方式加快这一训练过程。

对于给定的文档对UiUi和UjUj,损失函数CC对参数wkwk的偏导数为:

Cwk=Csisiwk+Csjsjwk=σ(12(1Sij)11+eσ(sisj))(siwksjwk)=λij(siwksjwk)∂C∂wk=∂C∂si∂si∂wk+∂C∂sj∂sj∂wk=σ(12(1−Sij)−11+eσ(si−sj))(∂si∂wk−∂sj∂wk)=λij(∂si∂wk−∂sj∂wk)

 

其中:

λij=C(sisj)si=σ(12(1Sij)11+eσ(sisj))λij=∂C(si−sj)∂si=σ(12(1−Sij)−11+eσ(si−sj))

 

定义II为索引对{i,j}{i,j}的集合,在不损失信息量的状况下,能够将集合II中的索引对都转换成知足UiUjUi⊳Uj的形式。另外集合II中的索引对还应该知足最多只出现一次的条件。在此基础上,累加权重参数wkwk的更新量:

δwk=η(i,j)I(λijsiwkλijsjwk)=ηiλisiwkδwk=−η∑(i,j)∈I(λij∂si∂wk−λij∂sj∂wk)=−η∑iλi∂si∂wk

 

其中:

λi=j:{i,j}Iλijj:{j,i}Iλijλi=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

通俗地说,λiλi就是集合II中全部{i,j}{i,j}的λijλij的和−集合II中全部{j,i}{j,i}的λijλij的和。若是仍是不太明白,那看下面这个例子就明白了。集合I={{1,2},{2,3},{1,3}}I={{1,2},{2,3},{1,3}},则

 

δwk=η{i,j}I(λijsiwkλijsjwk)=η(λ12s1wkλ12s2wk+λ13s1wkλ13s3wk+λ23s2wkλ23s3wk)=η((λ12+λ13)s1wk+(λ23λ12)s2wk+(λ23λ13)s3wk)δwk=−η∑{i,j}∈I(λij∂si∂wk−λij∂sj∂wk)=−η(λ12∂s1∂wk−λ12∂s2∂wk+λ13∂s1∂wk−λ13∂s3∂wk+λ23∂s2∂wk−λ23∂s3∂wk)=−η((λ12+λ13)∂s1∂wk+(λ23−λ12)∂s2∂wk+(−λ23−λ13)∂s3∂wk)

 

因而能够获得λ1=λ12+λ13λ1=λ12+λ13,λ2=λ23λ12λ2=λ23−λ12,λ3=λ23λ13λ3=−λ23−λ13

λiλi能够当作是做用在排序文档上的力,其正负表明了方向,长度表明了力的大小。最初的实现是对每一个文档对,都计算一遍梯度而且更新神经网络的参数值,而这里则是将同一个query下的全部文档对进行叠加,而后更新一次网络的权重参数。这种分解组合形式实际上就是一种小批量学习方法,不只能够加快迭代速度,还能够为后面使用非连续的梯度模型打下基础。

2.3 模型训练过程示例

假设某个搜索系统中,文档用2维的特征向量表示。给定一个query下的三个文档向量分别为x1=(5,4.5)Tx1=(5,4.5)T,x2=(4,3.7)Tx2=(4,3.7)T和x3=(2,1.8)Tx3=(2,1.8)T,标记状况为U1U2U3U1⊳U2⊳U3。为了简化训练过程,这里采用单层的神经网络模型,即输入层大小2,输出层大小为1,输出值为f(x)=w0+w1x(1)+w2x(2)f(x)=w0+w1x(1)+w2x(2)。

初始化w=[0,1,1]w=[0,−1,1],控制sigmoid函数形状的σ=0.1σ=0.1,神经网络学习率η=0.1η=0.1。

根据以上初始值能够计算出s1=0.5s1=−0.5,s2=0.3s2=−0.3和s3=0.2s3=−0.2,可见此时三个文档输出的分数并不知足标记U1U2U3U1⊳U2⊳U3。

计算λ1=λ12+λ13=0.1012λ1=λ12+λ13=−0.1012,λ2=λ23λ12=0.0002λ2=λ23−λ12=0.0002,λ3=λ23λ13=0.1010λ3=−λ23−λ13=−0.1010。

δw0=η(λ1s1w0+λ2s2w0+λ3s3w0)=0δw0=−η(λ1∂s1∂w0+λ2∂s2∂w0+λ3∂s3∂w0)=0

δw1=η(λ1s1w1+λ2s2w1+λ3s3w1)=3.032δw1=−η(λ1∂s1∂w1+λ2∂s2∂w1+λ3∂s3∂w1)=3.032

δw2=η(λ1s1w2+λ2s2w2+λ3s3w2)=2.7286δw2=−η(λ1∂s1∂w2+λ2∂s2∂w2+λ3∂s3∂w2)=2.7286

更新网络权重:

w0=w0+δw0=0+0=0w0=w0+δw0=0+0=0

w1=w1+δw1=1+3.032=2.032w1=w1+δw1=−1+3.032=2.032

w2=w2+δw2=1+2.7286=3.7286w2=w2+δw2=1+2.7286=3.7286

使用更新后的权重从新计算三个文档的分数,分别为s1=26.9387s1=26.9387,s2=21.92382s2=21.92382,s3=10.77548s3=10.77548。可见,通过一轮训练,单层神经网络的输出分数已经能够很好地拟合标记的标签。

3. 信息检索评分

信息检索研究者常用的排序质量评分指标有如下四种:

MRR(Mean Reciprocal Rank),平均倒数排名

MAP(Mean Average Precision),平均正确率均值

NDCG(Normalized Discounted Cumulative Gain),归一化折损累积增益

ERR(Expected Reciprocal Rank),预期倒数排名

其中,MRR和MAP只能对二级的相关性(排序等级:相关和不相关)进行评分,而NDCG和ERR则能够对多级的相关性(排序等级>2)进行评分。NDCG和ERR的另外一个优势是更关注排名靠前的文档,在计算分数时会给予排名靠前的文档更高的权重。可是这两种评分方式的缺点是函数不连续,不能进行求导,因此也就不能简单地将这两种评分方式加入到模型的损失函数中去。

3.1 MRR

对于一个查询ii来讲,rankiranki表示第一个相关结果的排序位置,因此:

MRR(Q)=1|Q|i=1|Q|1rankiMRR(Q)=1|Q|∑i=1|Q|1ranki

 

|Q||Q|表示查询的数量,MRRMRR表示搜索系统在查询集QQ下的平均倒数排名值。MRRMRR只能度量检索结果只有一个而且相关性等级只有相关和不相关两种的状况。

举个简单例子:

查询语句 查询结果 正确结果 排序位置 排序倒数
机器学习 快速排序,深度学习,并行计算 深度学习 2 1/2
苹果手机 小米手机,华为手机,iphone 7 iphone 7 3 1/3
小米移动电源 小米移动电源,华为充电器,苹果充电插头 小米移动电源 1 1/1

因此MRR(Q)=1/2+1/3+13=1118MRR(Q)=1/2+1/3+13=1118

 3.2 MAP

假定信息需求qjQqj∈Q对应的全部相关文档集合为d1,...,dmjd1,...,dmj,RjkRjk是返回结果中直到遇到dkdk后其所在位置前(含dkdk)的全部文档的集合,则定义MAP(Q)2MAP(Q)2以下:

 

MAP(Q)=1|Q|j=1|Q|1mjk=1mjPrecision(Rjk)MAP(Q)=1|Q|∑j=1|Q|1mj∑k=1mjPrecision(Rjk)

 

实际上有两种计算MAPMAP的方法或者说有两种MAP(Q)MAP(Q)的定义方法。第一种方法是在每篇相关文档所在位置上求正确率而后平均(参考上面的公式)。另外一种是在每一个召回率水平上计算此时的插值正确率,而后求11点平均正确率,最后在不一样查询之间计算平均。前者也称为非插值MAP(Q)MAP(Q)。通常提MAP(Q)MAP(Q)都指前者,全部这里也只讨论前者。

若是对定义的公式不太理解,能够结合下面的例子进行理解。

查询1:机器学习 查询2:苹果手机
排序位置 是否相关 排序位置 是否相关
1 1
2 2
3 3
4 4
5 5
6 6
7 7

针对上面检索的结果,可计算出

AP(1)=(11+11+2/30+2/40+3/51+3/60+3/70)/3=1315AP(1)=(1∗1+1∗1+2/3∗0+2/4∗0+3/5∗1+3/6∗0+3/7∗0)/3=1315

AP(2)=(00+1/21+2/31+2/40+2/50+3/61+4/71)/4=4784AP(2)=(0∗0+1/2∗1+2/3∗1+2/4∗0+2/5∗0+3/6∗1+4/7∗1)/4=4784

MAP(Q)=AP(1)+AP(2)2=13/15+47/842=599420MAP(Q)=AP(1)+AP(2)2=13/15+47/842=599420

3.3 NDCG

NDCG是基于前kk个检索结果进行计算的。设R(j,m)R(j,m)是评价人员给出的文档dd对查询jj的相关性得分,那么有:

 

NDCG(Q,k)=1|Q|j=1|Q|Zj,km=1k2R(j,m)1log(1+m)NDCG(Q,k)=1|Q|∑j=1|Q|Zj,k∑m=1k2R(j,m)−1log(1+m)

 

其中

DCGk=m=1k2R(j,m)1log(1+m)DCGk=∑m=1k2R(j,m)−1log(1+m)

 

Zj,kZj,k为第jj个查询的DCG归一化因子,用于保证对于查询jj最完美系统的DCGkDCGk得分是1。Zj,kZj,k也能够用1IDCGk1IDCGk表示。mm是返回文档的位置。若是某查询返回的文档数k<kk′<k,那么上述公式只须要计算到kk′为止。

修改上面简单的例子进行辅助理解:

查询1:机器学习 查询2:苹果手机
排序位置 相关程度 排序位置 相关程度
1 3 1 2
2 2 2 2
3 3 3 3
4 0 4 1
5 1 5 2
6 2 6 3
7 2 7 1

对于查询1:机器学习:

 

DCG7=m=172R(j,m)1log(1+m)=21.421516DCG7=∑m=172R(j,m)−1log(1+m)=21.421516

 

查询1返回结果的最佳相关程度排序为:3,3,2,2,2,1,0,因此,IDCG7=22.686817IDCG7=22.686817,NDCG7=DCG7IDCG7=0.944227NDCG7=DCG7IDCG7=0.944227

对于查询2:苹果手机:

 

DCG7=m=172R(j,m)1log(1+m)=18.482089DCG7=∑m=172R(j,m)−1log(1+m)=18.482089

 

查询2返回结果的最佳相关程度排序为:3,3,2,2,2,1,1,因此,IDCG7=23.167716IDCG7=23.167716,NDCG7=DCG7IDCG7=0.797752NDCG7=DCG7IDCG7=0.797752

最后可得:NDCG(Q,7)=(0.944227+0.797752)/2=0.870990NDCG(Q,7)=(0.944227+0.797752)/2=0.870990

3.4 ERR

ERR3ERR3旨在改善NDCG计算当前结果时未考虑排在前面结果的影响的缺点,提出了一种基于级联模型的评价指标。首先定义:

 

R(g)=2g12gmax,g{0,1,...,gmax}R(g)=2g−12gmax,g∈{0,1,...,gmax}

 

gg表明文档的得分级别,gmaxgmax表明最大的分数级别。

因而定义:

 

ERR=r=1n1ri=1r1(1Ri)RrERR=∑r=1n1r∏i=1r−1(1−Ri)Rr

 

展开公式以下:

 

ERR=R1+12(1R1)R2+13(1R1)(1R2)R3+...+1n(1R1)(1R2)...(1Rn1)RnERR=R1+12(1−R1)R2+13(1−R1)(1−R2)R3+...+1n(1−R1)(1−R2)...(1−Rn−1)Rn

 

 

举例来讲(gmax=3gmax=3):

查询:机器学习
排序位置 相关程度
1 3
2 2
3 3
4 1

R1=0.875,R2=0.375,R3=0.875,R4=0.125R1=0.875,R2=0.375,R3=0.875,R4=0.125

ERR=0.875+120.1250.375+130.1250.6250.875+140.1250.6250.1250.125=0.913391ERR=0.875+12∗0.125∗0.375+13∗0.125∗0.625∗0.875+14∗0.125∗0.625∗0.125∗0.125=0.913391

4. LambdaRank

4.1 为何须要LambdaRank

先看一张论文原文中的图,以下所示。这是一组用二元等级相关性进行排序的连接地址,其中浅灰色表明连接与query不相关,深蓝色表明连接与query相关。 对于左边来讲,总的pairwise偏差为13,而右边总的pairwise偏差为11。可是大多数状况下咱们更指望能获得左边的结果。这说明最基本的pairwise偏差计算方式并不能很好地模拟用户对搜索引擎的指望。右边黑色箭头表明RankNet计算出的梯度大小,红色箭头是指望的梯度大小。NDCG和ERR在计算偏差时,排名越靠前权重越大,能够很好地解决RankNet计算偏差时的缺点。可是NDCG和ERR均是不可导的函数,如何加入到RankNet的梯度计算中去?

图1

 

4.2  LambdaRank定义

RankNet中的λijλij能够当作是UiUi和UjUj中间的做用力,若是UiUjUi⊳Uj,则UjUj会给予UiUi向上的大小为|λij||λij|的推进力,而对应地UiUi会给予UjUj向下的大小为|λij||λij|的推进力。如何将NDCG等相似更关注排名靠前的搜索结果的评价指标加入到排序结果之间的推进力中去呢?实验代表,直接用|ΔNDCG||ΔNDCG|乘以原来的λijλij就能够获得很好的效果,也即:

 

λij=C(sisj)si=σ1+eσ(sisj)|ΔNDCG|λij=∂C(si−sj)∂si=−σ1+eσ(si−sj)|ΔNDCG|

 

其中|ΔNDCG||ΔNDCG|是交换排序结果UiUi和UjUj获得的NDCG差值。NDCG倾向于将排名高而且相关性高的文档更快地向上推进,而排名地并且相关性较低的文档较慢地向上推进。

另外还能够将|ΔNDCG||ΔNDCG|替换成其余的评价指标。

5. LambdaMART

5.1 MART

LambdaMART是MART和LambdaRank的结合,因此要学习LambdaMART首先得了解什么是MART。MART是Multiple Additive Regression Tree的简称,不少时候又称为GBDT(Gradient Boosting Decision Tree)。MART是一种集成学习算法,不一样于经典的集成学习算法Adaboost利用前一轮学习器的偏差来更新下一轮学习的样本权重,MART每次都拟合上一轮分类器产生的残差。举个例子便于理解,好比一我的的年龄是50岁,第一棵树拟合的结果是35岁,第一轮的残差为15岁;而后第二棵数拟合的结果是10岁,两棵树相加总的拟合结果是45岁,第二轮的残差为5岁;第三棵数拟合的结果为2岁,三棵树相加拟合的结果是47岁,第三轮的残差是3岁......只要如此不断地进行下去,拟合结果就能够达到50岁,拟合残差的过程就是训练数据的过程。

对于一个给定的数据集{xi,yi},i=1,2,...,m{xi,yi},i=1,2,...,m,其中特征向量xiRnxi∈Rn,标签yiRyi∈R,能够用xij,j=1,2,...,dxijxij,j=1,2,...,d来表明xi的第j个特征值。对于一个典型的回归决策树问题,须要遍历全部特征jj的所有阈值tt,找到最优的jj和tt使下面的等式最小化:

 

Sj=iL(yiμL)2+iR(yiμR)2Sj=∑i∈L(yi−μL)2+∑i∈R(yi−μR)2

 

其中xijtxij≤t的全部样本落入左子树LL中,其中xij>txij>t的全部样本落入右子树RR中,μL(μR)μL(μR)表示左子树(右子树)全部样例标签值的均值。若是这就是一棵最简单的拥有一个根节点、两个叶子节点的二叉回归树,那么只须要根据最优阈值切分为左右子树,而且分别计算左右子树的值γl,l=1,2γl,l=1,2便可。若是将划分子树的过程继续进行L1L−1次便可获得一棵包含LL个叶子节点的回归树。

上面公式使用最小二乘法计算拟合偏差,因此经过上面方法获得的模型又称为最小二乘回归树。其实无论偏差的计算方式如何,咱们均可以拟合出相应的回归树,惟一的区别是梯度的计算不一样而已。

MART使用线性组合的方式将拟合的树结合起来,做为最后的输出:

 

Fn(x)=i=1Nαifi(x)Fn(x)=∑i=1Nαifi(x)

 

fi(x)fi(x)是单棵回归树函数,αiαi是第ii棵回归树的权重。

在这里咱们须要弄清楚为何拟合残差就能不断减小拟合偏差。假设拟合偏差CC是拟合函数FnFn的函数C(Fn)C(Fn)。那么:

 

δCC(Fn)FnδFnδC≈∂C(Fn)∂FnδFn

 

若是取δFn=ηCFnδFn=−η∂C∂Fn,就能够获得δC<0δC<0。其中ηη是学习率,为正实数。因此只要函数FnFn拟合偏差函数的负梯度就能够不断下降拟合偏差的值。

设标签向量y=[y1,y2,...,ym]Ty=[y1,y2,...,ym]T,若是用最小二乘的方式表示拟合偏差,则:

C=12(Fny)2C=12(Fn−y)2

 

那么δFn=ηCFn=η(Fny)δFn=−η∂C∂Fn=−η(Fn−y)。这其实就是上面提到的残差,因此拟合残差能够不断减小拟合偏差。

5.2 逻辑回归+MART进行二分类

了解了MART以后,下面举一个MART实际应用的例子:使用MART和逻辑回归进行二分类。用于分类的样本xiRnxi∈Rn,标签yi{±1}yi∈{±1},拟合函数F(x)F(x)。为了简化表示,咱们表示条件几率以下:

 

P+P(y=1|x)P+≡P(y=1|x)

 

 

PP(y=1|x)P−≡P(y=−1|x)

 

用交叉熵表示损失函数:

L(y,F)=ylog(P+)(1y)log(P)L(y,F)=−ylog(P+)−(1−y)log(P−)

 

逻辑回归使用对数机率(属于正例几率/属于负例几率)进行建模,

 

Fn(x)=12log(P+P)Fn(x)=12log(P+P−)

 

 

P+=11+e2σFn(x)P+=11+e−2σFn(x)

 

 

P=1P+=11+e2σFn(x)P−=1−P+=11+e2σFn(x)

 

P+P+和PP−带入L(y,F)L(y,F)中,获得:

 

L(y,Fn)=log(1+e2yσFn)L(y,Fn)=log(1+e−2yσFn)

 

RjmRjm表示落入第mm棵树的第jj个叶子节点中的样例集合,能够经过下式对该叶子节点的值进行优化:

 

γjm=argminγxiRjmlog(1+e2σyi(Fm1(xi)+γ))γjm=argminγ∑xi∈Rjmlog⁡(1+e−2σyi(Fm−1(xi)+γ))

 

上式可使用Newton-Raphson方法按照下面的公式进行迭代求解:

 

γn+1=γng(γn)g′′(γn)γn+1=γn−g′(γn)g″(γn)

 

5.3 LambdaMART基本定义

LambdaMART基于MART,优化λλ梯度。根据上面的定义,对于任意UiUi和UjUj,有:

 

λij=C(sisj)si=σ|ΔZij|1+eσ(sisj)λij=∂C(si−sj)∂si=−σ|ΔZij|1+eσ(si−sj)

 

|ΔZij||ΔZij|表示交换UiUi和UjUj的位置产生的评价指标差值,ZZ能够是NDCGNDCG或者ERRERR等。对于特定UiUi,累加其余全部排序项的影响,获得:

 

λi=j:{i,j}Iλijj:{j,i}Iλijλi=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

 为了简化表示:

 

{i,j}Iλij=j:{i,j}Iλijj:{j,i}Iλij∑{i,j}⇌Iλij=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

因而咱们能够更新损失函数:

 

Csi=j:{i,j}Iσ|ΔZij|1+eσ(sisj)=j:{i,j}Iσ|ΔZij|ρij∂C∂si=∑j:{i,j}∈I−σ|ΔZij|1+eσ(si−sj)=∑j:{i,j}∈I−σ|ΔZij|ρij

 

其中,咱们定义:

 

ρij=11+eσ(sisj)=λijσ|ΔZij|ρij=11+eσ(si−sj)=−λijσ|ΔZij|

 

而后能够获得:

 

2Cs2i={i,j}Iσ2|ΔZij|ρij(1ρij)∂2C∂si2=∑{i,j}⇌Iσ2|ΔZij|ρij(1−ρij)

 

因此咱们能够用下面的公式计算第mm棵树的第kk个叶子节点上的值:

 

γkm=xiRkmCsixiRkm2Cs2i=xiRkm{i,j}I|ΔZij|ρijxiRkm{i,j}I|ΔZij|σρij(1ρij)γkm=∑xi∈Rkm∂C∂si∑xi∈Rkm∂2C∂si2=−∑xi∈Rkm∑{i,j}⇌I|ΔZij|ρij∑xi∈Rkm∑{i,j}⇌I|ΔZij|σρij(1−ρij)

 

因此总结LambdaMART算法以下:

6. 参考文献

1. Christopher J.C. Burges. From RankNet to LambdaRank to LambdaMART: An Overview. Microsoft Research Technical Report MSR-TR-010-82.

2. Chrisopher D.Manning, Prabhakar Raghavan, Hinrich Schutze著, 王斌译. Introduction to Information Retrieval, 8.4 有序检索结果的评价方法, 2017年10月北京第11次印刷.

3. Olivier Chapelle, Ya Zhang, Pierre Grinspan. Expected Recipocal Rank for Graded Relevance. CIKM 2009.

相关文章
相关标签/搜索