1. Learning to Rank算法

下图为机器学习排序的原理图,机器学习排序系统由4个步骤组成——人工标注训练数据文档特征抽取学习分类函数在实际搜索系统中采用机器学习模型

回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法

2. Learning to Rank的三种类型

Learning to Rank主要包含pointwise方法、pairwise方法和listwise方法三种类型。

  • pointwise方法:对于某一个query,它将每个doc分别判断与这个query的相关程度,由此将docs排序问题转化为了分类(比如相关、不相关)或回归问题(相关程度越大,回归函数的值越大)。
  • pairwise方法:pairwise方法并不关心某一个doc与query相关程度的具体数值,而是将排序问题转化为任意两个不同的docs di和dj谁与当前的query更相关的相对顺序的排序问题。一般分为di比dj更相关、更不相关和相关程度相等三个类别,分别记为{+1, -1, 0},由此便又转化为了分类问题。
  • listwise方法:将一个query对应的所有相关文档看做一个整体,作为单个训练样本。

3. GBRank

(1)定义

GBRank是一种pairwise的学习排序算法,它是基于回归来解决pair对的先后排序问题。在GBRank中使用的回归算法是GBT(Gradient Boosting Tree)

(2)算法原理

一般来说在搜索引擎里面,与用户搜索query相关度越高的网页越应该排在前面。现在query-doc的特征使用向量回归带有顺序的关键点检测算法 排序回归分析_机器学习_02或者回归带有顺序的关键点检测算法 排序回归分析_算法_03表示,假设现在有一个文档对回归带有顺序的关键点检测算法 排序回归分析_算法_04,当回归带有顺序的关键点检测算法 排序回归分析_算法_05排在回归带有顺序的关键点检测算法 排序回归分析_机器学习_06前面时,我们使用回归带有顺序的关键点检测算法 排序回归分析_机器学习_07来表示。

在实际用的时候可以将 回归带有顺序的关键点检测算法 排序回归分析_算法_05 当作doc_x的特征,回归带有顺序的关键点检测算法 排序回归分析_机器学习_06 当作doc_y的特征。这样的话回归带有顺序的关键点检测算法 排序回归分析_算法_10 可以理解为doc_x 的分数,回归带有顺序的关键点检测算法 排序回归分析_回归_11

我们含顺序的pair对用如下集合表示(也就是真的回归带有顺序的关键点检测算法 排序回归分析_算法_05排在真的回归带有顺序的关键点检测算法 排序回归分析_机器学习_06前面):

回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_14


现假设学习的排序函数为回归带有顺序的关键点检测算法 排序回归分析_机器学习_15,我们希望当回归带有顺序的关键点检测算法 排序回归分析_机器学习_16时,满足回归带有顺序的关键点检测算法 排序回归分析_机器学习_07的样本的数量越多越好。现将回归带有顺序的关键点检测算法 排序回归分析_机器学习_15的风险函数用如下的式子表示:

回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_19


回归带有顺序的关键点检测算法 排序回归分析_算法_20可以知道每个pair对回归带有顺序的关键点检测算法 排序回归分析_算法_04的cost为:

回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_22

可以发现当:

  • 回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_23,cost为0,也就是并不会对最终的风险函数的值产生影响
  • 回归带有顺序的关键点检测算法 排序回归分析_机器学习_24,cost为其差值的平方

上述风险函数直接优化比较困难,这里一个巧妙的解决方案是使用回归的方法,也就是让回归带有顺序的关键点检测算法 排序回归分析_算法_05去拟合回归带有顺序的关键点检测算法 排序回归分析_机器学习_06的预测值,让回归带有顺序的关键点检测算法 排序回归分析_机器学习_06去拟合回归带有顺序的关键点检测算法 排序回归分析_算法_05的目标值。

为了避免优化函数回归带有顺序的关键点检测算法 排序回归分析_机器学习_15是一个常量函数,风险函数一般会增加一个平滑项回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_30(回归带有顺序的关键点检测算法 排序回归分析_回归_31):

回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_32


因为当回归带有顺序的关键点检测算法 排序回归分析_机器学习_15为常量函数时,先前的 回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_34 就没有再优化的空间了,加入平滑项就变相地转为:如果希望回归带有顺序的关键点检测算法 排序回归分析_机器学习_07,就得有回归带有顺序的关键点检测算法 排序回归分析_算法_36,也就更为严格了,多了一个gap。对于回归带有顺序的关键点检测算法 排序回归分析_算法_20计算回归带有顺序的关键点检测算法 排序回归分析_算法_10回归带有顺序的关键点检测算法 排序回归分析_回归_11的负梯度为:

回归带有顺序的关键点检测算法 排序回归分析_机器学习_40


可以发现当pair对符合回归带有顺序的关键点检测算法 排序回归分析_算法_04顺序时,上述的梯度均为0,对于这一类case就没有必要去优化了,但是对于另一类,如果回归带有顺序的关键点检测算法 排序回归分析_机器学习_15不满足pair回归带有顺序的关键点检测算法 排序回归分析_算法_04 他们对应的梯度为:

回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_44

到了这里我们就知道所谓的训练样本就是对于 回归带有顺序的关键点检测算法 排序回归分析_机器学习_07 但是 回归带有顺序的关键点检测算法 排序回归分析_回归_46 的那些样本,并且使用的是回归的方法,GBRank为其巧妙地找到了 回归带有顺序的关键点检测算法 排序回归分析_算法_05的 目标为 回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_48 以及 回归带有顺序的关键点检测算法 排序回归分析_机器学习_06 的目标为 回归带有顺序的关键点检测算法 排序回归分析_机器学习_50, 也就是在每次迭代的时候将会构建以下的训练集:

回归带有顺序的关键点检测算法 排序回归分析_回归_51

这里可以这样理解:

回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_52 向着 回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_53 逼近,让 回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_54 向着 回归带有顺序的关键点检测算法 排序回归分析_算法_55

这是因为在有效的训练集中,即 回归带有顺序的关键点检测算法 排序回归分析_机器学习_07 但是 回归带有顺序的关键点检测算法 排序回归分析_回归_46 ,我们的目标是更新函数 回归带有顺序的关键点检测算法 排序回归分析_机器学习_15 使得经 回归带有顺序的关键点检测算法 排序回归分析_算法_10 算出来的回归带有顺序的关键点检测算法 排序回归分析_算法_05 的分数更高,经回归带有顺序的关键点检测算法 排序回归分析_回归_11 算出来的回归带有顺序的关键点检测算法 排序回归分析_机器学习_06 的分数更低。所以 回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_52 的目标就是更大一些的 回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_53回归带有顺序的关键点检测算法 排序回归分析_数据挖掘_54 的目标就是更小一些的 回归带有顺序的关键点检测算法 排序回归分析_算法_55

(3)算法步骤

回归带有顺序的关键点检测算法 排序回归分析_算法_67


回归带有顺序的关键点检测算法 排序回归分析_算法_68


回归带有顺序的关键点检测算法 排序回归分析_回归带有顺序的关键点检测算法_69


回归带有顺序的关键点检测算法 排序回归分析_回归_70


回归带有顺序的关键点检测算法 排序回归分析_回归_71