Learning to Rank学习笔记2:The Pairwise Approach

这一节主要介绍下Pairwise相关的算法,Pointwise其实跟平时的机器学习算法很相似了,没有什么独到之处,就不再介绍。

前面说过,pairwise主要的优化目标主要是排序对。那么我们去训练对应模型的时候,去定义排序对的损失函数就很重要了。我们常常希望损失函数是可微的,这样就更容易从梯度的角度去优化模型,而之前介绍的排序指标如MAP、NDCG均为不可微的。首先介绍ranknet模型,该模型为排序对定义了一个可微的损失函数,从而可以建立神经网络模型去学习优化。假设有两个文档,u与v,如果u比v好,我们定义

最后用交叉熵函数定义损失函数为,

然后就可以用梯度下降的方法去优化了f(x)里面的参数了。可以看出这个损失函数的定义形式跟逻辑回归很像,可以看作是把原问题抽象为了一个二分类问题。

Ranknet的不足之处在于,其损失函数没有考虑到不同排序位置的影响度不同。我们通常更关注前几条文档的排序情况,而非后面的。因此,LambdaRank在Ranknet的梯度上,乘上了排序对位置替换后NDCG的变化值,加上了排序位置变化的因素影响。

LambdaMART则是在GBDT的基础上,每棵树去拟合LambdaRank的梯度。在xgb中,设置 'objective': 'rank:pairwise'即可直接调用该方法。

你可能感兴趣的:(Learning to Rank学习笔记2:The Pairwise Approach)