上一篇综述文章 里我们简单介绍了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}} xi∈Rn,对应的排序序号 y ∈ Y y\in \mathcal{Y} y∈Y,不失一般性,假设 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:Rn⟶y,对于系数
w
w
w 和 k个阈值集合
b
1
≤
b
2
≤
.
.
.
≤
b
k
=
∞
b_1\leq b_2\leq ... \leq b_k=\infty
b1≤b2≤...≤bk=∞,为方便起见,令
b
=
(
b
1
,
b
2
,
.
.
.
,
b
k
−
1
)
b=(b_1,b_2,...,b_{k-1})
b=(b1,b2,...,bk−1),然后就是要找到满足
w
⋅
x
<
b
r
w\cdot x \lt b_r
w⋅x<br 的最小的
b
r
b_r
br,这个规则将空间分为若干平行的等值区域:所有满足
b
r
−
1
<
w
⋅
x
<
b
r
b_{r-1}\lt w\cdot x \lt b_{r}
br−1<w⋅x<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
<
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:w⋅x−br<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,...,bk−11=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} xt∈Rn
- Predict y ^ t = min r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r < 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:w⋅x−br<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,...,k−1,if y t < r y^{t}<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,...,k−1,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 (wt⋅xt−brt)−yrt≤0 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+1⟵wt+(∑rτrt)xt
For r = 1 , 2 , . . . , k − 1 r=1,2,...,k-1 r=1,2,...,k−1, b r t + 1 ⟵ b r t − τ r t b_{r}^{t+1}\longleftarrow b_{r}^{t}-\tau_{r}^{t} brt+1⟵brt−τrt
Output: H ( x ) = min r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r < 0 } H(x)=\min_{r\in \{1,2,...,k\}}\{r:w\cdot x -b_r\lt 0\} H(x)=minr∈{1,2,...,k}{r:w⋅x−br<0}
我们希望预测的排序尽可能接近真实的排序值,因此学习算法的目标就是最小化真实排序值和预测排序值的差。经过 T T T 轮迭代之后,预测值和真实值的累计误差为 ∑ t = 1 T ∣ y ^ t − y t ∣ \sum_{t=1}^{T}\lvert \hat y^{t}- y^{t} \rvert ∑t=1T∣y^t−yt∣。
这个算法的更新规则灵感来源于对分类的感知算法,因此我们称为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=∞
假设样本1的
y
y
y = 4,那么按照之前的定义
w
T
⋅
x
w^{T}\cdot x
wT⋅x 应该落在
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=b1−1,b2=b2−1,b3=b3−1,如下图所示
同时更新
w
=
w
+
(
1
+
1
+
1
)
x
w=w+(1+1+1)x
w=w+(1+1+1)x,于是
w
⋅
x
w\cdot x
w⋅x相比于原来就变大了
3
∣
∣
x
∣
∣
2
3|\lvert x\rvert|^{2}
3∣∣x∣∣2,可以看到新的预测结果是3,和真实结果已经非常接近了,随着迭代次数增加,对于新样本的预测会越来越准确。
3、理论分析
以上基本就是prank算法的过程了,细心的同学可能会发现一个问题,就是一开始的时候我们假设 b 1 ≤ b 2 ≤ . . . ≤ b k = ∞ b_1\leq b_2\leq ... \leq b_k=\infty b1≤b2≤...≤bk=∞,每一次迭代,其中某些 b i b_i bi值会发生改变,那这个过程是否会发生 b i ≥ b j b_i\geq b_j bi≥bj,其中 i < j i<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 (wt⋅xt−brt)−yrt≤0 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⌊(wt⋅xt−brt)−yrt≤0⌋。因为 b r t ∈ Z , b r 1 = 0 b_{r}^{t}\in \mathbb{Z},b_{r}^{1}=0 brt∈Z,br1=0,所以 b r t + 1 − b r t ∈ { − 1 , 0 , + 1 } b_{r}^{t+1}-b_{r}^{t}\in\{-1,0,+1\} brt+1−brt∈{−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} b1t≤b2t≤...≤bk−1t, ( 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+1≤b2t+1≤...≤bk−1t+1。
证明:要证明prank算法对阈值保序,为方便起见我们沿用prank算法里对 y r t y_{r}^{t} yrt 的定义,当 r < 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} r≥yt 时, 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+1≥brt+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+1t−brt≥yr+1t⌊(wt⋅xt−br+1t)−yr+1t≤0⌋−yrt⌊(wt⋅xt−brt)−yrt≤0⌋(∗)
对于上面的式子,如果我们可以证明对于任意
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
>
0
b_{r+1}^{t}-b_{r}^{t}\gt 0
br+1t−brt>0,又因为
b
r
+
1
t
,
b
r
t
∈
Z
b_{r+1}^{t},b_{r}^{t}\in \mathbb{Z}
br+1t,brt∈Z,所以
b
r
+
1
t
−
b
r
t
≥
1
b_{r+1}^{t}-b_{r}^{t}\ge 1
br+1t−brt≥1,因此在下一轮迭代中,一定可以保证
b
r
+
1
t
+
1
−
b
r
t
+
1
≥
0
b_{r+1}^{t+1}-b_{r}^{t+1}\ge 0
br+1t+1−brt+1≥0,如果
b
r
+
1
t
−
b
r
t
=
0
b_{r+1}^{t}-b_{r}^{t}=0
br+1t−brt=0,则下一轮迭代中依然有,
b
r
+
1
t
+
1
−
b
r
t
+
1
=
0
b_{r+1}^{t+1}-b_{r}^{t+1}=0
br+1t+1−brt+1=0,仍然满足
b
r
+
1
t
+
1
−
b
r
t
+
1
≥
0
b_{r+1}^{t+1}-b_{r}^{t+1}\ge0
br+1t+1−brt+1≥0。
根据算法可知,当
y
t
>
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+1t≤yrt,我们分两种情况讨论:
(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+1t−brt≥1,因此不论
(
∗
)
(*)
(∗) 式右边是否为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\} xt∈Rn,y∈{1,2,..,k},记 R 2 = max t ∣ ∣ x t ∣ ∣ 2 R^{2}=\max_{t}||x^{t}||^{2} R2=maxt∣∣xt∣∣2,假设有一组标准化后的参数(一个排序规则) 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∗),b1∗≤b2∗≤...≤bk−1∗ 在边界 γ = min r , t { ( w ∗ ⋅ x t − b r ∗ ) y r t > 0 } \gamma=\min_{r,t}\{(w^{*}\cdot x^{t}-b_{r}^{*})y_{r}^{t}\gt 0\} γ=minr,t{(w∗⋅xt−br∗)yrt>0} 条件下,将整个序列正确分类,那么这个算法的排序误差 ∑ t = 1 T ∣ y ^ t − y t ∣ \sum_{t=1}^{T}|\hat y^{t}-y^{t}| ∑t=1T∣y^t−yt∣ 不会超过 ( k − 1 ) ( R 2 + 1 ) / γ 2 (k-1)(R^2+1)/{\gamma^{2}} (k−1)(R2+1)/γ2.
证明思路是利用数学归纳法和柯西-施瓦尔兹方法进行放缩来推导,具体过程不再赘述,可以直接参考论文证明过程,也可以后续留言交流。