机器学习之排序学习

Learn to Rank

排序学习主要用于搜索引擎,推荐系统等领域。算法

对于传统的排序算法,通常只能根据少许特征,而后经过人为设定的规则,来进行文档的全量排序。网络

然而对于排序涉及大量的特征,并且这些特征难以人为的编辑规则来进行文档和文档之间的比较,这就出现了排序学习。机器学习

排序学习经过以特征和文档为输入,经过机器学习或者神经网络的方法,最终输出对于某个查询,每一个文档的相关度分数,进而实现能够进行对文档的排序。函数

范式

  • 查询集合Q = {q1, q2 .... qn}
  • 文档集合D
  • 与第 i 个查询 qi 相关的文档Di = {d1 .... dm}
  • 获得结果:相关性分数 y = {y1 ... ym}

l2r-model

类别

PointWise

l2r-pointwise
L2R-pointwise-rank

优势

  • 能够直接利用现有的回归和分类的理论和算法

缺点

  • 对于同一label级别的文档,没法进行排序,致使某些不重要的文档排在前面
  • 训练的时候仅考虑了当前文档的特征,忽略了本文档与其余文档的差异训练

PairWise

l2r-pairwise-model
输出的0/1表明doc1是否大于doc2学习

优势

能够直接应用之后的分类算法优化

缺点

  • 仅考虑了文档对的相对次序,很难推出列表的全序
  • 若是前面的文档对判断错误,会直接致使后面的文档对判断错误

RankNet

L2R-pairwise

ListWise

i2r-listwise

NDCG理解

  • rel:查询q与文档的相关度
  • CG:了耳机增益,在top-n下,rel的累加
  • DCG:折损累计增益,在top-n下,rel乘以一个随位置的衰减值,表示越靠前的,权重越大,越靠后的,影响越小
  • IDCG:理想的DCG值,通常为训练预期结果的DCG值
  • NDCG:预测的DCG/IDCG
模型输出的DCG值
i reli log2(i+1) reli /log2(i+1)
1 3 1 3
2 2 1.58 1.26
3 3 2 1.5
4 0 2.32 0
5 1 2.58 0.38
6 2 2.8 0.71
IDCG:(经过排名rel值获得)
i reli log2(i+1) reli /log2(i+1)
1 3 1 3
2 3 1.58 1.89
3 3 2 1.5
4 2 2.32 0.86
5 2 2.58 0.77
6 1 2.8 0.35
非连续性

能够看出,IDCG是固定的,对DCG的优化过程,DCG的值呈现跳跃性改变,所以DCG是非连续函数,这致使以NDCG为表明的损失函数,很难使用现代的优化算法来优化。搜索引擎

lambda梯度

因为NDCG的非连续性,这就引入了lambda为梯度的损失函数3d

lambda损失

  • 经过定义loss的梯度,不须要经过求导,而是直接求得lambda的梯度,而后经过反向传播到上层的model,优化模型的参数,这样就避免了最后的loss是非连续函数不可导的缺点
  • 最后梯度=lambda(i)
  • lambda>0,则趋于上升
  • lambda<0,则趋于降低
lambda计算
  • 计算DCG
  • 计算IDCG
  • 计算deltaNDCG = |NDCG - NDCG(swap(i, j))|
  • lambda(i) = deltaNDCG(i>j) - deltaNDCG(i<j)
相关文章
相关标签/搜索