Learning to Rank系列之Pointwise方法

上一篇综述文章 里我们简单介绍了L2R三种方法的一个概要,接下来将对这三种方法做详细介绍。本篇文章介绍第一种L2R方法–pointwise方法

1、原理

pointwise方法非常简单,考虑的是文档 (doc) 和查询 (query) 的绝对相关度,基于此,我们可以将排序问题转化为分类或者回归问题。我们以分类问题为例,一般来说,会根据相关度设置五个类别 {perfect ,excellent,good,fair,bad},对应数字 { 5,4,3,2,1 },然后根据查询和返回文档可以标注样本,得到这样的形式 (query, doc, label)。

因此我们准备的样本格式如下,其中 q i q_i qi 代表第 i i i 个query, x j ( i ) x^{(i)}_{j} xj(i) 表示和第 i i i 个query相关的文档集里的第 j j j 个文档, C k C_{k} Ck 代表所属类别。
这里写图片描述

2、常见算法

Pointwise方法主要包括以下算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

我们详细介绍一下Pranking算法,原文地址:https://pdfs.semanticscholar.org/906f/50f545890ca81231be7cec7c59555c679dba.pdf

2.1 Prank 算法

对于给定的样本集合 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x t , y t ) } \{(x^{1}, y^{1}),(x^{2}, y^{2}),...,(x^{t}, y^{t})\} {(x1,y1),(x2,y2),...,(xt,yt)},文档特征向量 x i ∈ R n x^{i} \in \mathbb{R^{n}} xiRn,对应的排序序号 y ∈ Y y\in \mathcal{Y} yY,不失一般性,假设 Y = { 1 , 2 , 3 , . . . , k } \mathcal{Y}=\{1,2,3,...,k\} Y={1,2,3,...,k},并使用 " > \gt >"作为顺序关系,如果 y s > y t y^{s}\gt y^{t} ys>yt,那么我们说 x s x^{s} xs 优于 x t x^{t} xt,反之同理,但是当 y s = y t y^{s} = y^{t} ys=yt 时, x s x^{s} xs x t x^{t} xt 不可比较。

假设有一个排序规则 H : R n ⟶ y \mathcal{H}: \mathbb{R^n}\longrightarrow y H:Rny,对于系数 w w w 和 k个阈值集合 b 1 ≤ b 2 ≤ . . . ≤ b k = ∞ b_1\leq b_2\leq ... \leq b_k=\infty b1b2...bk=,为方便起见,令 b = ( b 1 , b 2 , . . . , b k − 1 ) b=(b_1,b_2,...,b_{k-1}) b=(b1,b2,...,bk1),然后就是要找到满足 w ⋅ x &lt; b r w\cdot x \lt b_r wx<br 的最小的 b r b_r br,这个规则将空间分为若干平行的等值区域:所有满足 b r − 1 &lt; w ⋅ x &lt; b r b_{r-1}\lt w\cdot x \lt b_{r} br1<wx<br 的样本均属于同样的序号 r r r。因此,对于一个给定 w w w b b b 的排序规则,我们可以预测一个新样本 x x x 的序号是:
H ( x ) = min ⁡ r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r &lt; 0 } H(x)=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\} H(x)=r{1,2,...,k}min{r:wxbr<0}

具体算法如下:

Initialize: Set w 1 = 0 , b 1 1 , . . . , b k − 1 1 = 0 , b k 1 = + ∞ w^{1}=0,b_{1}^{1},...,b_{k-1}^{1}=0,b_{k}^{1}=+\infty w1=0,b11,...,bk11=0,bk1=+
Loop: For t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T

  • Get a new rank-value x t ∈ R n x^{t}\in \mathbb{R^n} xtRn
  • Predict y ^ t = min ⁡ r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r &lt; 0 } \hat{y}^{t}=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\} y^t=minr{1,2,...,k}{r:wxbr<0}
  • Get a new label y t y^{t} yt
  • If y ^ t ≠ y t \hat{y}^{t} \neq y^{t} y^t̸=yt, update w t w^{t} wt (otherwise set w t + 1 = w t , ∀ r : b r t + 1 = b r t w^{t+1}=w^{t}, \forall r:b_{r}^{t+1}=b_{r}^{t} wt+1=wt,r:brt+1=brt)
    **1. ** For r = 1 , 2 , . . . , k − 1 r=1,2,...,k-1 r=1,2,...,k1,if y t &lt; r y^{t}&lt;r yt<r Then y r t = − 1 y_{r}^{t}=-1 yrt=1 else y r t = 1 y_{r}^{t}=1 yrt=1
    **2. ** For r = 1 , 2 , . . . , k − 1 r=1,2,...,k-1 r=1,2,...,k1,if ( w t ⋅ x t − b r t ) − y r t ≤ 0 (w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0 (wtxtbrt)yrt0 Then τ r t = y r t \tau_{r}^{t}= y_{r}^{t} τrt=yrt else τ r t = 1 \tau_{r}^{t}=1 τrt=1
    **3. ** Update w t + 1 ⟵ w t + ( ∑ r τ r t ) x t w^{t+1}\longleftarrow w^{t}+(\sum_{r}\tau_{r}^{t})x^t wt+1wt+(rτrt)xt
    For r = 1 , 2 , . . . , k − 1 r=1,2,...,k-1 r=1,2,...,k1, b r t + 1 ⟵ b r t − τ r t b_{r}^{t+1}\longleftarrow b_{r}^{t}-\tau_{r}^{t} brt+1brtτrt

Output: H ( x ) = min ⁡ r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r &lt; 0 } H(x)=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\} H(x)=minr{1,2,...,k}{r:wxbr<0}

我们希望预测的排序尽可能接近真实的排序值,因此学习算法的目标就是最小化真实排序值和预测排序值的差。经过 T T T 轮迭代之后,预测值和真实值的累计误差为 ∑ t = 1 T ∣ y ^ t − y t ∣ \sum_{t=1}^{T}\lvert \hat y^{t}- y^{t} \rvert t=1Ty^tyt

这个算法的更新规则灵感来源于对分类的感知算法,因此我们称为Prank (Perceptron Ranking),举个例子来说明这个算法的过程。假设rank集合 Y \mathcal{Y} Y= { 1 , 2 , 3 , 4 , 5 } \{1,2,3,4,5\} {1,2,3,4,5},可以理解为把区间分为了五段,如下所示,其中 b 5 = ∞ b_5= \infty b5=
rank划分示意图

假设样本1的 y y y = 4,那么按照之前的定义 w T ⋅ x w^{T}\cdot x wTx 应该落在 b 3 b_3 b3 b 4 b_4 b4 之间的这个区间内,但实际预测的值是落在了第一个区间, y ^ \hat{y} y^=1,如下图所示
在这里插入图片描述

因此就产生了一个误差,为了修正这个误差,我们把 b 1 , b 2 , b 3 b_1,b_2,b_3 b1,b2,b3 分别向左移一个单位,即令 b 1 = b 1 − 1 , b 2 = b 2 − 1 , b 3 = b 3 − 1 b_1=b_1-1,b_2=b_2-1,b_3=b_3-1 b1=b11,b2=b21,b3=b31,如下图所示
在这里插入图片描述

同时更新 w = w + ( 1 + 1 + 1 ) x w=w+(1+1+1)x w=w+(1+1+1)x,于是 w ⋅ x w\cdot x wx相比于原来就变大了 3 ∣ ∣ x ∣ ∣ 2 3|\lvert x\rvert|^{2} 3x2,可以看到新的预测结果是3,和真实结果已经非常接近了,随着迭代次数增加,对于新样本的预测会越来越准确。
在这里插入图片描述

3、理论分析

以上基本就是prank算法的过程了,细心的同学可能会发现一个问题,就是一开始的时候我们假设 b 1 ≤ b 2 ≤ . . . ≤ b k = ∞ b_1\leq b_2\leq ... \leq b_k=\infty b1b2...bk=,每一次迭代,其中某些 b i b_i bi值会发生改变,那这个过程是否会发生 b i ≥ b j b_i\geq b_j bibj,其中 i &lt; j i&lt;j i<j。也就是说是否会改变原先的阈值顺序?答案是肯定不会(前方高能~~~)

3.1 保序引理

在证明保序引理之前,先回顾一下prank算法里提到的 τ r t \tau_{r}^{t} τrt,if ( w t ⋅ x t − b r t ) − y r t ≤ 0 (w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0 (wtxtbrt)yrt0 Then τ r t = y r t \tau_{r}^{t}= y_{r}^{t} τrt=yrt else τ r t = 1 \tau_{r}^{t}=1 τrt=1。我们先定义一个运算 ⌊ π ⌋ \lfloor \pi\rfloor π,当表达式 π \pi π 成立的时候, ⌊ π ⌋ \lfloor \pi\rfloor π = 1,否则为0,于是 τ r t = y r t ⌊ ( w t ⋅ x t − b r t ) − y r t ≤ 0 ⌋ \tau_{r}^{t}=y_{r}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0\rfloor τrt=yrt(wtxtbrt)yrt0。因为 b r t ∈ Z , b r 1 = 0 b_{r}^{t}\in \mathbb{Z},b_{r}^{1}=0 brtZ,br1=0,所以 b r t + 1 − b r t ∈ { − 1 , 0 , + 1 } b_{r}^{t+1}-b_{r}^{t}\in\{-1,0,+1\} brt+1brt{1,0,+1}

3.1.1 (保序引理 ) 令 w t , b t w^{t},b^{t} wt,bt 是当前一轮迭代的参数,其中 b 1 t ≤ b 2 t ≤ . . . ≤ b k − 1 t b_{1}^{t}\leq b_{2}^{t}\leq ... \leq b_{k-1}^{t} b1tb2t...bk1t ( x t , y t ) (x^{t},y^{t}) (xt,yt) 是第 t t t 轮迭代时训练的样本,经过新一轮迭代后,prank算法的参数更新为 w t + 1 , b t + 1 w^{t+1},b^{t+1} wt+1,bt+1,且满足 b 1 t + 1 ≤ b 2 t + 1 ≤ . . . ≤ b k − 1 t + 1 b_{1}^{t+1}\leq b_{2}^{t+1}\leq ... \leq b_{k-1}^{t+1} b1t+1b2t+1...bk1t+1

证明:要证明prank算法对阈值保序,为方便起见我们沿用prank算法里对 y r t y_{r}^{t} yrt 的定义,当 r &lt; y t r\lt y^{t} r<yt 时, y r t = + 1 y_{r}^{t}=+1 yrt=+1,当 r ≥ y t r\geq y^{t} ryt 时, y r t = − 1 y_{r}^{t}=-1 yrt=1,我们想要证明,对于任意的 r r r 都有 b r + 1 t + 1 ≥ b r t + 1 b_{r+1}^{t+1}\geq b_{r}^{t+1} br+1t+1brt+1,借助如下式子:

b r + 1 t − b r t ≥ y r + 1 t ⌊ ( w t ⋅ x t − b r + 1 t ) − y r + 1 t ≤ 0 ⌋ − y r t ⌊ ( w t ⋅ x t − b r t ) − y r t ≤ 0 ⌋ ( ∗ ) b_{r+1}^{t}-b_{r}^{t}\geq y_{r+1}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r+1}^{t}) - y_{r+1}^{t}\le 0\rfloor-y_{r}^{t} \lfloor(w^{t}\cdot x^{t}-b_{r}^{t}) - y_{r}^{t}\le 0\rfloor (*) br+1tbrtyr+1t(wtxtbr+1t)yr+1t0yrt(wtxtbrt)yrt0()
对于上面的式子,如果我们可以证明对于任意 r r r,在 t t t 轮中上式右边恒小于等于0,而左边恒大于等于0,那么可以推断在 t + 1 t+1 t+1 轮中, b r + 1 t + 1 , b r + 1 t b_{r+1}^{t+1},b_{r+1}^{t} br+1t+1,br+1t 要么同时增加或减少1,要么一个保持不变,另一个增加或减少1,而显然当在第 t t t 轮迭代的时候,如果 b r + 1 t − b r t &gt; 0 b_{r+1}^{t}-b_{r}^{t}\gt 0 br+1tbrt>0,又因为 b r + 1 t , b r t ∈ Z b_{r+1}^{t},b_{r}^{t}\in \mathbb{Z} br+1t,brtZ,所以 b r + 1 t − b r t ≥ 1 b_{r+1}^{t}-b_{r}^{t}\ge 1 br+1tbrt1,因此在下一轮迭代中,一定可以保证 b r + 1 t + 1 − b r t + 1 ≥ 0 b_{r+1}^{t+1}-b_{r}^{t+1}\ge 0 br+1t+1brt+10,如果 b r + 1 t − b r t = 0 b_{r+1}^{t}-b_{r}^{t}=0 br+1tbrt=0,则下一轮迭代中依然有, b r + 1 t + 1 − b r t + 1 = 0 b_{r+1}^{t+1}-b_{r}^{t+1}=0 br+1t+1brt+1=0,仍然满足 b r + 1 t + 1 − b r t + 1 ≥ 0 b_{r+1}^{t+1}-b_{r}^{t+1}\ge0 br+1t+1brt+10
根据算法可知,当 y t &gt; r y^{t}\gt r yt>r 时, y r t = 1 y_{r}^{t}=1 yrt=1,否则 y r t = − 1 y_{r}^{t}=-1 yrt=1,因此 y r + 1 t ≤ y r t y_{r+1}^{t}\leq y_{r}^{t} yr+1tyrt,我们分两种情况讨论:
(1). y r + 1 t ≠ y r t y_{r+1}^{t}\neq y_{r}^{t} yr+1t̸=yrt
也就是说 y r + 1 t = − 1 , y r t = 1 y_{r+1}^{t}=-1,y_{r}^{t}=1 yr+1t=1,yrt=1,此时 ( ∗ ) (*) () 式右边最大为0,因此 ( ∗ ) (*) () 式左边大于等于0大于等于 ( ∗ ) (*) () 右边
(2). y r + 1 t = y r t y_{r+1}^{t}= y_{r}^{t} yr+1t=yrt
此时 ( ∗ ) (*) () 式左边为0,右边可以知道不会超过1,当 b r + 1 t = b r t b_{r+1}^{t}=b_{r}^{t} br+1t=brt 时, ( ∗ ) (*) () 式右边两项完全一样,故为0,因此 ( ∗ ) (*) () 式成立;当 b r + 1 t ≠ b r t b_{r+1}^{t}\neq b_{r}^{t} br+1t̸=brt 时,由假设可知, b r + 1 t − b r t ≥ 1 b_{r+1}^{t}-b_{r}^{t}\geq 1 br+1tbrt1,因此不论 ( ∗ ) (*) () 式右边是否为1, ( ∗ ) (*) () 式依旧成立,故引理得证。

3.2 有界误差定理
3.2 (有界误差定理) 令 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x T , y T ) (x^{1},y^{1}),(x^{2},y^{2}),...,(x^{T},y^{T}) (x1,y1),(x2,y2),...,(xT,yT) 是PRank算法的输入序列,其中 x t ∈ R n , y ∈ { 1 , 2 , . . , k } x^{t} \in\mathbb{R^{n}},y\in\{1,2,..,k\} xtRn,y{1,2,..,k},记 R 2 = max ⁡ t ∣ ∣ x t ∣ ∣ 2 R^{2}=\max_{t}||x^{t}||^{2} R2=maxtxt2,假设有一组标准化后的参数(一个排序规则) v ∗ = ( w ∗ , b ∗ ) , b 1 ∗ ≤ b 2 ∗ ≤ . . . ≤ b k − 1 ∗ v^{*}=(w^{*},b^{*}),b_{1}^{*}\leq b_{2}^{*}\leq ... \leq b_{k-1}^{*} v=(w,b),b1b2...bk1 在边界 γ = min ⁡ r , t { ( w ∗ ⋅ x t − b r ∗ ) y r t &gt; 0 } \gamma=\min_{r,t}\{(w^{*}\cdot x^{t}-b_{r}^{*})y_{r}^{t}\gt 0\} γ=minr,t{(wxtbr)yrt>0} 条件下,将整个序列正确分类,那么这个算法的排序误差 ∑ t = 1 T ∣ y ^ t − y t ∣ \sum_{t=1}^{T}|\hat y^{t}-y^{t}| t=1Ty^tyt 不会超过 ( k − 1 ) ( R 2 + 1 ) / γ 2 (k-1)(R^2+1)/{\gamma^{2}} (k1)(R2+1)/γ2.

证明思路是利用数学归纳法和柯西-施瓦尔兹方法进行放缩来推导,具体过程不再赘述,可以直接参考论文证明过程,也可以后续留言交流。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值