PointWise
这种方法没有考虑到排序的一些特征,比如文档之间的排序结果针对的是给定查询下的文档集合,而Pointwise方法仅仅考虑单个文档的绝对相关度;另外,在排序中,排在最前的几个文档对排序效果的影响非常重要,Pointwise没有考虑这方面的影响。
PairWise
Ranking SVM
Ranking SVM将排序问题转化为分类问题,对于一个有序特征序列x1>x2>x3,任意样本可以构造六个序对,其中(x1,x2)、(x2,x3)、(x1,x3) 是正样本,(x2,x1)、(x3,x1)、(x3,x2)是负样本,然后用
SVM训练一个二分类器对这些新样本进行分类。原理非常简单,不再赘述。
RankBoost
点对间正负样本的构造方法和RankingSVM相同,只不过分类方法用了Boost框架
RankNet
http://www.cnblogs.com/genyuan/p/9788294.html https://blog.csdn.net/u014374284/article/details/49385065
主要参考这两篇文章整理
对于一个Query的两个相关文档Ui和Uj假设Ui>Uj,通过RankNet网络前向计算分别得到分数Si和Sj,那么RankNet认为Ui>Uj的概率为:①
进一步得到文档对(Ui,Uj)的交叉熵损失函数:②
定义Ui比Uj更靠前的概率为:,将这个概率带入到②中,得到③
该损失函数是具有对称性的,即交换i和j的的位置损失函数不变。
当Sij=1时,如果Si>Sj,有:
反之则有:,也就是说当前结果和实际结果相反时,Si和Sj差值越小,损失函数就越小
梯度下降的迭代公式为:
求导:④ 可知,C对Si的偏导数和C对sj的偏导之和为0
令则有:⑤
可以看做是Ui和Uj之间的作用力,如果Ui相关性大于Uj,那么Uj会给Ui一个大小为的向上的推动力,同理Ui会给Uj一个向下的推动力。
假设集合I中只包含label不同的URL的集合,且每个pair仅包含一次,即Uij和Uji等价,假设I中只包含(Ui,Uj)切Ui相关性大于Uj,也就是I中所有序对都满足Sij>1,则有:
因为损失函数Cij是对称函数,根据的公式可以看出它也是对称函数,即,结合④和⑤来看,即可可以理解上式
ListWise
LambdaRank
显然,只关注pair间的正确性是不够的,RankNet无法以NDCG等只关注topk排序结果的指标为优化目标。
对于上图中两种排序结果来讲,Error Pair(错误序对数量)1比2多,所以2比1效果好
但是从NDCG的角度来衡量,NDCG1>NDCG2,1比2效果好
因此,在RankNet中得到的中增加一个,表示Ui和Uj交换位置后,评估指标的变化,它可以是。
NDCG倾向于将排名高并且相关性高的文档更快地向上推动,而排名地而且相关性较低的文档较慢地向上推动。
附:NDCG计算方法
LambdaMART
MART
MART(Multiple Additive Regression Tree)又称为GBDT(Gradient Boosting Decision Tree)。MART第t轮的学习目标是t-1轮的残差,由Additive可知,前t轮所有预测结果相加即是第t轮的预测结果,并用该结果计算残差用来迭代第t+1轮。可以用如下公式表示:
MART使用加权求和的方式将拟合的树结合起来,作为最后的输出。
为什么拟合残差可以减小误差?
假设拟合误差C是关于Fn的函数,那么根据链式求导法则有:
当C的梯度小于0时,误差是减小的,所以令可以使,即Fn不断拟合误差C的负梯度方向来减小误差
例如当C是最小二乘(平方和损失)函数时:,即有
从泰勒展开的角度讲:
第m轮的迭代目标是找到一颗CART树的弱学习器,使得最小,换句话说就是让损失函数变得更小
将上面的损失函数进行泰勒展开:
保证等号左边的取值小于等号的右边,显然有
但此时弱学习器是未知的,因此自然的考虑到用已知的负梯度为目标去建立这个CART树,即
根据GBDT的损失函数:
它的负梯度方向是
第m颗回归树对应的叶子节点区域,其中J为叶子节点的个数。针对每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的的输出值如下:
需要注意的是:正常的CART树叶子节点的权重是落到该节点样本的均值,而GBDT中CART树的输出还有一个学习率,以下的缩写是说CART树的输出和学习率的乘积看成了CART回归树的最终输出,可以避免设置学习率。所以第m轮弱学习器拟合函数如下:
从而得到强学习器: