上一篇综述文章 里我们简单介绍了L2R三种方法的一个概要,接下来将对这三种方法做详细介绍。本篇文章介绍第一种L2R方法–pointwise方法
1、原理
pointwise方法非常简单,考虑的是文档 (doc) 和查询 (query) 的绝对相关度,基于此,我们可以将排序问题转化为分类或者回归问题。我们以分类问题为例,一般来说,会根据相关度设置五个类别 {perfect ,excellent,good,fair,bad},对应数字 { 5,4,3,2,1 },然后根据查询和返回文档可以标注样本,得到这样的形式 (query, doc, label)。
因此我们准备的样本格式如下,其中
q
i
q_i
q i 代表第
i
i
i 个query,
x
j
(
i
)
x^{(i)}_{j}
x j ( i ) 表示和第
i
i
i 个query相关的文档集里的第
j
j
j 个文档,
C
k
C_{k}
C k 代表所属类别。
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})\}
{ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x t , y t ) } ,文档特征向量
x
i
∈
R
n
x^{i} \in \mathbb{R^{n}}
x i ∈ R n ,对应的排序序号
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}
y s > y t ,那么我们说
x
s
x^{s}
x s 优于
x
t
x^{t}
x t ,反之同理,但是当
y
s
=
y
t
y^{s} = y^{t}
y s = y t 时,
x
s
x^{s}
x s 和
x
t
x^{t}
x t 不可比较。
假设有一个排序规则
H
:
R
n
⟶
y
\mathcal{H}: \mathbb{R^n}\longrightarrow y
H : R n ⟶ y ,对于系数
w
w
w 和 k个阈值集合
b
1
≤
b
2
≤
.
.
.
≤
b
k
=
∞
b_1\leq b_2\leq ... \leq b_k=\infty
b 1 ≤ b 2 ≤ . . . ≤ b k = ∞ ,为方便起见,令
b
=
(
b
1
,
b
2
,
.
.
.
,
b
k
−
1
)
b=(b_1,b_2,...,b_{k-1})
b = ( b 1 , b 2 , . . . , b k − 1 ) ,然后就是要找到满足
w
⋅
x
<
b
r
w\cdot x \lt b_r
w ⋅ x < b r 的最小的
b
r
b_r
b r ,这个规则将空间分为若干平行的等值区域:所有满足
b
r
−
1
<
w
⋅
x
<
b
r
b_{r-1}\lt w\cdot x \lt b_{r}
b r − 1 < w ⋅ x < b r 的样本均属于同样的序号
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 − b r < 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
w 1 = 0 , b 1 1 , . . . , b k − 1 1 = 0 , b k 1 = + ∞ 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}
x t ∈ R n
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 = min r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r < 0 }
Get a new label
y
t
y^{t}
y t
If
y
^
t
≠
y
t
\hat{y}^{t} \neq y^{t}
y ^ t ̸ = y t , update
w
t
w^{t}
w t (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}
w t + 1 = w t , ∀ r : b r t + 1 = b r t ) **1. ** For
r
=
1
,
2
,
.
.
.
,
k
−
1
r=1,2,...,k-1
r = 1 , 2 , . . . , k − 1 ,if
y
t
<
r
y^{t}<r
y t < r Then
y
r
t
=
−
1
y_{r}^{t}=-1
y r t = − 1 else
y
r
t
=
1
y_{r}^{t}=1
y r t = 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
( w t ⋅ x t − b r t ) − y r t ≤ 0 Then
τ
r
t
=
y
r
t
\tau_{r}^{t}= y_{r}^{t}
τ r t = y r t else
τ
r
t
=
1
\tau_{r}^{t}=1
τ r t = 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
w t + 1 ⟵ w t + ( ∑ r τ r t ) x t 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}
b r t + 1 ⟵ b r t − τ r t
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 ) = min r ∈ { 1 , 2 , . . . , k } { r : w ⋅ x − b r < 0 }
我们希望预测的排序尽可能接近真实的排序值,因此学习算法的目标就是最小化真实排序值和预测排序值的差。经过
T
T
T 轮迭代之后,预测值和真实值的累计误差为
∑
t
=
1
T
∣
y
^
t
−
y
t
∣
\sum_{t=1}^{T}\lvert \hat y^{t}- y^{t} \rvert
∑ t = 1 T ∣ y ^ t − y t ∣ 。
这个算法的更新规则灵感来源于对分类的感知算法,因此我们称为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
b 5 = ∞
假设样本1的
y
y
y = 4,那么按照之前的定义
w
T
⋅
x
w^{T}\cdot x
w T ⋅ x 应该落在
b
3
b_3
b 3 和
b
4
b_4
b 4 之间的这个区间内,但实际预测的值是落在了第一个区间,
y
^
\hat{y}
y ^ =1,如下图所示
因此就产生了一个误差,为了修正这个误差,我们把
b
1
,
b
2
,
b
3
b_1,b_2,b_3
b 1 , b 2 , b 3 分别向左移一个单位,即令
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
b 1 = b 1 − 1 , b 2 = b 2 − 1 , b 3 = b 3 − 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
b 1 ≤ b 2 ≤ . . . ≤ b k = ∞ ,每一次迭代,其中某些
b
i
b_i
b i 值会发生改变,那这个过程是否会发生
b
i
≥
b
j
b_i\geq b_j
b i ≥ b j ,其中
i
<
j
i<j
i < j 。也就是说是否会改变原先的阈值顺序?答案是肯定不会(前方高能~~~)
3.1 保序引理
在证明保序引理之前,先回顾一下prank算法里提到的
τ
r
t
\tau_{r}^{t}
τ r t ,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
( w t ⋅ x t − b r t ) − y r t ≤ 0 Then
τ
r
t
=
y
r
t
\tau_{r}^{t}= y_{r}^{t}
τ r t = y r t else
τ
r
t
=
1
\tau_{r}^{t}=1
τ r t = 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
τ r t = y r t ⌊ ( w t ⋅ x t − b r t ) − y r t ≤ 0 ⌋ 。因为
b
r
t
∈
Z
,
b
r
1
=
0
b_{r}^{t}\in \mathbb{Z},b_{r}^{1}=0
b r t ∈ Z , b r 1 = 0 ,所以
b
r
t
+
1
−
b
r
t
∈
{
−
1
,
0
,
+
1
}
b_{r}^{t+1}-b_{r}^{t}\in\{-1,0,+1\}
b r t + 1 − b r t ∈ { − 1 , 0 , + 1 }
3.1.1 (保序引理 ) 令
w
t
,
b
t
w^{t},b^{t}
w t , b t 是当前一轮迭代的参数,其中
b
1
t
≤
b
2
t
≤
.
.
.
≤
b
k
−
1
t
b_{1}^{t}\leq b_{2}^{t}\leq ... \leq b_{k-1}^{t}
b 1 t ≤ b 2 t ≤ . . . ≤ b k − 1 t ,
(
x
t
,
y
t
)
(x^{t},y^{t})
( x t , y t ) 是第
t
t
t 轮迭代时训练的样本,经过新一轮迭代后,prank算法的参数更新为
w
t
+
1
,
b
t
+
1
w^{t+1},b^{t+1}
w t + 1 , b t + 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}
b 1 t + 1 ≤ b 2 t + 1 ≤ . . . ≤ b k − 1 t + 1 。
证明:要证明prank算法对阈值保序,为方便起见我们沿用prank算法里对
y
r
t
y_{r}^{t}
y r t 的定义,当
r
<
y
t
r\lt y^{t}
r < y t 时,
y
r
t
=
+
1
y_{r}^{t}=+1
y r t = + 1 ,当
r
≥
y
t
r\geq y^{t}
r ≥ y t 时,
y
r
t
=
−
1
y_{r}^{t}=-1
y r t = − 1 ,我们想要证明,对于任意的
r
r
r 都有
b
r
+
1
t
+
1
≥
b
r
t
+
1
b_{r+1}^{t+1}\geq b_{r}^{t+1}
b r + 1 t + 1 ≥ b r t + 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 (*)
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 ⌋ ( ∗ ) 对于上面的式子,如果我们可以证明对于任意
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}
b r + 1 t + 1 , b r + 1 t 要么同时增加或减少1,要么一个保持不变,另一个增加或减少1,而显然当在第
t
t
t 轮迭代的时候,如果
b
r
+
1
t
−
b
r
t
>
0
b_{r+1}^{t}-b_{r}^{t}\gt 0
b r + 1 t − b r t > 0 ,又因为
b
r
+
1
t
,
b
r
t
∈
Z
b_{r+1}^{t},b_{r}^{t}\in \mathbb{Z}
b r + 1 t , b r t ∈ Z ,所以
b
r
+
1
t
−
b
r
t
≥
1
b_{r+1}^{t}-b_{r}^{t}\ge 1
b r + 1 t − b r t ≥ 1 ,因此在下一轮迭代中,一定可以保证
b
r
+
1
t
+
1
−
b
r
t
+
1
≥
0
b_{r+1}^{t+1}-b_{r}^{t+1}\ge 0
b r + 1 t + 1 − b r t + 1 ≥ 0 ,如果
b
r
+
1
t
−
b
r
t
=
0
b_{r+1}^{t}-b_{r}^{t}=0
b r + 1 t − b r t = 0 ,则下一轮迭代中依然有,
b
r
+
1
t
+
1
−
b
r
t
+
1
=
0
b_{r+1}^{t+1}-b_{r}^{t+1}=0
b r + 1 t + 1 − b r t + 1 = 0 ,仍然满足
b
r
+
1
t
+
1
−
b
r
t
+
1
≥
0
b_{r+1}^{t+1}-b_{r}^{t+1}\ge0
b r + 1 t + 1 − b r t + 1 ≥ 0 。 根据算法可知,当
y
t
>
r
y^{t}\gt r
y t > r 时,
y
r
t
=
1
y_{r}^{t}=1
y r t = 1 ,否则
y
r
t
=
−
1
y_{r}^{t}=-1
y r t = − 1 ,因此
y
r
+
1
t
≤
y
r
t
y_{r+1}^{t}\leq y_{r}^{t}
y r + 1 t ≤ y r t ,我们分两种情况讨论: (1).
y
r
+
1
t
≠
y
r
t
y_{r+1}^{t}\neq y_{r}^{t}
y r + 1 t ̸ = y r t 也就是说
y
r
+
1
t
=
−
1
,
y
r
t
=
1
y_{r+1}^{t}=-1,y_{r}^{t}=1
y r + 1 t = − 1 , y r t = 1 ,此时
(
∗
)
(*)
( ∗ ) 式右边最大为0,因此
(
∗
)
(*)
( ∗ ) 式左边大于等于0大于等于
(
∗
)
(*)
( ∗ ) 右边 (2).
y
r
+
1
t
=
y
r
t
y_{r+1}^{t}= y_{r}^{t}
y r + 1 t = y r t 此时
(
∗
)
(*)
( ∗ ) 式左边为0,右边可以知道不会超过1,当
b
r
+
1
t
=
b
r
t
b_{r+1}^{t}=b_{r}^{t}
b r + 1 t = b r t 时,
(
∗
)
(*)
( ∗ ) 式右边两项完全一样,故为0,因此
(
∗
)
(*)
( ∗ ) 式成立;当
b
r
+
1
t
≠
b
r
t
b_{r+1}^{t}\neq b_{r}^{t}
b r + 1 t ̸ = b r t 时,由假设可知,
b
r
+
1
t
−
b
r
t
≥
1
b_{r+1}^{t}-b_{r}^{t}\geq 1
b r + 1 t − b r t ≥ 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})
( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x T , y T ) 是PRank算法的输入序列,其中
x
t
∈
R
n
,
y
∈
{
1
,
2
,
.
.
,
k
}
x^{t} \in\mathbb{R^{n}},y\in\{1,2,..,k\}
x t ∈ R n , y ∈ { 1 , 2 , . . , k } ,记
R
2
=
max
t
∣
∣
x
t
∣
∣
2
R^{2}=\max_{t}||x^{t}||^{2}
R 2 = max t ∣ ∣ x t ∣ ∣ 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 ∗ ) , b 1 ∗ ≤ b 2 ∗ ≤ . . . ≤ b k − 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\}
γ = min r , t { ( w ∗ ⋅ x t − b r ∗ ) y r t > 0 } 条件下,将整个序列正确分类,那么这个算法的排序误差
∑
t
=
1
T
∣
y
^
t
−
y
t
∣
\sum_{t=1}^{T}|\hat y^{t}-y^{t}|
∑ t = 1 T ∣ y ^ t − y t ∣ 不会超过
(
k
−
1
)
(
R
2
+
1
)
/
γ
2
(k-1)(R^2+1)/{\gamma^{2}}
( k − 1 ) ( R 2 + 1 ) / γ 2 .
证明思路是利用数学归纳法和柯西-施瓦尔兹方法进行放缩来推导,具体过程不再赘述,可以直接参考论文证明过程,也可以后续留言交流。