背景
排序问题和分类回归问题本质差异在于优化的目标不同,除此之外,分类回归问题的模型应该都能用。
但是排序问题存在一些非连续优化目标,如NDCG,直接优化该目标并不容易。Lambda Rank是一种近似优化方法。
排序问题归根结底也是对每个样本打分,目标是使得应该排在前面的样本得分更高!
通常排序会有一个GROUP,GROUP之间的序关系没有意义,有意义的是GROUP内部的序关系。
例如搜索排序中,query就是一个GROUP,对给定的一个GROUP,将另外一种实体e进行排序。
一般将二元组(q, e)看做一个样本,如果考虑个性化,还要加上用户这个实体。总而言之,将这些实体多元组看做一个样本,
提取一些列特征xi,然后构建一个模型f对它进行打分f(x)。
Rank Net
将样本Ui排在Uj前面的概率P(Ui≻Uj)建模成得分差值的sigmoid函数!
Pij=P(Ui≻Uj)=11+e−σ(si−sj)si=f(xi)
通过对所有可比较的样本对计算此概率值,然后进行极大似然估计得到损失函数。
由于一个样本xi会同时出现在多个样本对中,损失函数对si的梯度λi会跟多个样本对有关,
λi=∂l∂si=∑k∂lk∂si
参考
- From RankNet to LambdaRank to LambdaMART: An Overview