文章目录
支持向量机内容特别多,为了方便阅读,分成三个部分,上接:
07_支持向量机1_统计学习方法
07_支持向量机2_统计学习方法。
五、SMO算法
KKT条件中的(k4)(k5)还没有使用过,这两个条件主要就是用来求解参数 α , μ \alpha , \mu α,μ的。但是对于样本数量和特征比较多的时候,这么硬干是非常耗费内存和时间的。所以在求解参数 α \alpha α时,大牛们使用了更有效的方法——SMO算法(序列最小最优算法),如果没理解错的话就是化整为零,分而治之的思想。
SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。SMO思路,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
非线性支持向量机的优化问题:
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
⋯
 
,
N
\begin{aligned} \min_{\alpha}\space\space & \dfrac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - \sum_{i=1}^N \alpha_i \\ s.t. \space\space & \sum_{i=1}^N \alpha_i y_i = 0 \\ & 0 \leq \alpha_i \leq C ,\space\space i=1,2,\cdots ,N \end{aligned}
αmin s.t. 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00≤αi≤C, i=1,2,⋯,N
1、两个变量二次规划的求解方法
(1)定义子问题
假设选择的两个变量是
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2,其他变量
α
i
(
i
=
3
,
4
,
⋯
 
,
N
)
\alpha_i(i=3,4,\cdots , N)
αi(i=3,4,⋯,N)是固定的。于是上面非线性支持向量机的优化问题的SMO子问题可以写成:
min
α
1
,
α
2
W
(
α
1
,
α
2
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
=
1
2
∑
i
=
1
N
(
∑
j
=
1
2
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
+
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
)
−
(
α
1
+
α
2
)
−
∑
i
=
3
N
α
i
=
1
2
∑
i
=
1
2
(
∑
j
=
1
2
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
+
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
)
+
1
2
∑
i
=
3
N
(
∑
j
=
1
2
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
+
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
)
−
(
α
1
+
α
2
)
−
∑
i
=
3
N
α
i
=
1
2
∑
i
=
1
2
∑
j
=
1
2
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
+
∑
i
=
1
2
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
+
1
2
∑
i
=
3
N
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
(
α
1
+
α
2
)
−
∑
i
=
3
N
α
i
=
1
2
K
11
α
1
2
+
1
2
K
22
α
2
2
+
y
1
y
2
K
12
α
1
α
2
+
y
1
α
1
∑
i
=
3
N
y
i
α
i
K
i
1
+
y
2
α
2
∑
i
=
3
N
y
i
α
i
K
i
2
−
(
α
1
+
α
2
)
−
∑
i
=
3
N
α
i
+
1
2
∑
i
=
3
N
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
\begin{aligned} \min_{\alpha_1,\alpha_2}\space\space W(\alpha_1,\alpha_2) & = \dfrac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - \sum_{i=1}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^N \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^2 \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) \\ &+ \dfrac{1}{2}\sum_{i=3}^N \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^2 \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{i=1}^2 \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \\ &+ \dfrac{1}{2}\sum_{i=3}^N \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\alpha_1 \alpha_2 + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2 \alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2} \\ &- (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i + \dfrac{1}{2}\sum_{i=3}^N \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \end{aligned}
α1,α2min W(α1,α2)=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi=21i=1∑N(j=1∑2αiαjyiyjK(xi,xj)+j=3∑NαiαjyiyjK(xi,xj))−(α1+α2)−i=3∑Nαi=21i=1∑2(j=1∑2αiαjyiyjK(xi,xj)+j=3∑NαiαjyiyjK(xi,xj))+21i=3∑N(j=1∑2αiαjyiyjK(xi,xj)+j=3∑NαiαjyiyjK(xi,xj))−(α1+α2)−i=3∑Nαi=21i=1∑2j=1∑2αiαjyiyjK(xi,xj)+i=1∑2j=3∑NαiαjyiyjK(xi,xj)+21i=3∑Nj=3∑NαiαjyiyjK(xi,xj)−(α1+α2)−i=3∑Nαi=21K11α12+21K22α22+y1y2K12α1α2+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2−(α1+α2)−i=3∑Nαi+21i=3∑Nj=3∑NαiαjyiyjK(xi,xj)
上式最后两项为常数项,对于求解最优的
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2毫无作用,舍去,则有SMO对于变量
α
,
α
2
\alpha_,\alpha_2
α,α2的子问题可以写成:
min
α
1
,
α
2
W
(
α
1
,
α
2
)
=
1
2
K
11
α
1
2
+
1
2
K
22
α
2
2
+
y
1
y
2
K
12
α
1
α
2
+
y
1
α
1
∑
i
=
3
N
y
i
α
i
K
i
1
+
y
2
α
2
∑
i
=
3
N
y
i
α
i
K
i
2
−
(
α
1
+
α
2
)
(
29
)
s
.
t
.
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
y
i
α
i
=
ζ
(
30
)
0
≤
α
1
≤
C
,
i
=
1
,
2
(
31
)
\begin{aligned} \min_{\alpha_1,\alpha_2}\space\space & W(\alpha_1,\alpha_2) = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\alpha_1 \alpha_2 + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2 \alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2} - (\alpha_1 + \alpha_2) &\space\space\space\space(29)\\ s.t.\space\space & \alpha_1 y_1 + \alpha_2 y_2 = -\sum_{i=3}^N y_i \alpha_i = \zeta &\space\space\space\space(30)\\ & 0 \leq \alpha_1 \leq C ,i =1,2 &\space\space\space\space(31) \end{aligned}
α1,α2min s.t. W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2−(α1+α2)α1y1+α2y2=−i=3∑Nyiαi=ζ0≤α1≤C,i=1,2 (29) (30) (31)
- K i j = K ( x i , x j ) , i , j = 1 , 2 , ⋯   , N K_{ij} = K(x_i,x_j),i,j =1,2,\cdots,N Kij=K(xi,xj),i,j=1,2,⋯,N
- ζ \zeta ζ是常数
(2)确定变量范围
由于只有两个变量
(
α
1
,
α
2
)
(\alpha_1,\alpha_2)
(α1,α2),约束可以用二维空间中的图形表示,如下图:
- 不等式约束(31)使得 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times [0,C] [0,C]×[0,C]内;
- 等式约束(30)使得 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在平行于盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times [0,C] [0,C]×[0,C]的对角线的直线上。
因此要求的是目标函数在一条平行于对角线的线段上的最优值。这使得两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量 α 2 \alpha_2 α2的最优化问题。
假设问题(29)-(31)的初始可行解为
α
1
o
l
d
,
α
2
o
l
d
\alpha_1^{old},\alpha_2^{old}
α1old,α2old,最优解为
α
1
n
e
w
,
α
2
n
e
w
\alpha_1^{new},\alpha_2^{new}
α1new,α2new,并且假设在沿着约束方向未经剪辑时
α
2
\alpha_2
α2的最优解为
α
2
n
e
w
,
u
n
c
\alpha_2^{new,unc}
α2new,unc,
α
2
\alpha_2
α2剪辑后的解为
α
2
n
e
w
\alpha_2^{new}
α2new。
α
2
n
e
w
\alpha_2^{new}
α2new必须满足式(31),则
α
2
n
e
w
\alpha_2^{new}
α2new的取值范围必须满足:
L
≤
α
2
n
e
w
≤
H
L \leq \alpha_2^{new} \leq H
L≤α2new≤H
因为有式(30),则有:
(32)
α
1
o
l
d
y
1
+
α
2
o
l
d
y
2
=
−
∑
i
=
3
N
y
i
α
i
=
α
1
n
e
w
y
1
+
α
2
n
e
w
y
2
\alpha_1^{old} y_1 + \alpha_2^{old} y_2 = -\sum_{i=3}^N y_i \alpha_i = \alpha_1^{new} y_1 + \alpha_2^{new} y_2 \tag{32}
α1oldy1+α2oldy2=−i=3∑Nyiαi=α1newy1+α2newy2(32)
-
当 y 1 与 y 2 y_1与y_2 y1与y2异号时:
α 1 o l d y 1 y 2 + α 2 o l d y 2 2 = α 1 n e w y 1 y 2 + α 2 n e w y 2 2 ⟹ α 2 n e w = α 2 o l d − α 1 o l d + α 1 n e w \alpha_1^{old} y_1 y_2 + \alpha_2^{old} y_2^2 = \alpha_1^{new} y_1 y_2 + \alpha_2^{new} y_2^2 \Longrightarrow \alpha_2^{new} = \alpha_2^{old} - \alpha_1^{old} + \alpha_1^{new} α1oldy1y2+α2oldy22=α1newy1y2+α2newy22⟹α2new=α2old−α1old+α1new
又因为:
0 ≤ α 1 ≤ C , 0 ≤ α 2 ≤ C 0 \leq \alpha_1 \leq C,\space\space 0 \leq \alpha_2 \leq C 0≤α1≤C, 0≤α2≤C
所以有:
L = max ( 0 , α 2 o l d − α 1 o l d ) , H = min ( C , C + α 2 o l d − α 1 o l d ) L = \max(0,\alpha_2^{old} - \alpha_1^{old}),\space\space H = \min(C,C + \alpha_2^{old} - \alpha_1^{old}) L=max(0,α2old−α1old), H=min(C,C+α2old−α1old) -
当 y 1 与 y 2 y_1与y_2 y1与y2同号时:
α 1 o l d y 1 y 2 + α 2 o l d y 2 2 = α 1 n e w y 1 y 2 + α 2 n e w y 2 2 ⟹ α 2 n e w = α 2 o l d + α 1 o l d − α 1 n e w \alpha_1^{old} y_1 y_2 + \alpha_2^{old} y_2^2 = \alpha_1^{new} y_1 y_2 + \alpha_2^{new} y_2^2 \Longrightarrow \alpha_2^{new} = \alpha_2^{old} + \alpha_1^{old} - \alpha_1^{new} α1oldy1y2+α2oldy22=α1newy1y2+α2newy22⟹α2new=α2old+α1old−α1new
所以有:
L = max ( 0 , α 2 o l d + α 1 o l d − C ) , H = min ( C , α 2 o l d + α 1 o l d ) L = \max(0,\alpha_2^{old} + \alpha_1^{old}- C),\space\space H = \min(C, \alpha_2^{old} + \alpha_1^{old}) L=max(0,α2old+α1old−C), H=min(C,α2old+α1old)
(3)最优求解
为了方便书写,令:
g
(
x
)
=
∑
j
=
1
N
α
j
y
j
K
(
x
,
x
j
)
+
b
(
w
1
)
ν
i
=
∑
j
=
3
N
α
j
y
j
K
(
x
i
,
x
j
)
=
g
(
x
i
)
−
∑
j
=
1
2
α
j
y
j
K
(
x
i
,
x
j
)
−
b
(
w
2
)
E
i
=
g
(
x
i
)
−
y
i
=
(
∑
j
=
1
N
α
j
y
j
K
(
x
i
,
x
j
)
+
b
)
−
y
i
(
w
3
)
η
=
K
11
+
K
22
−
2
K
12
=
∣
∣
ϕ
(
x
1
)
−
ϕ
(
x
2
)
∣
∣
2
(
w
4
)
\begin{aligned} & g(x) = \sum_{j=1}^N \alpha_j y_j K(x,x_j) + b &\space\space\space\space(w1)\\ & \nu_i = \sum_{j=3}^N \alpha_j y_j K(x_i,x_j) = g(x_i) - \sum_{j=1}^2 \alpha_j y_j K(x_i,x_j) - b &\space\space\space\space(w2)\\ & E_i = g(x_i) - y_i = \left(\sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + b \right) - y_i &\space\space\space\space(w3)\\ & \eta = K_{11} + K_{22} - 2K_{12} = ||\phi(x_1) - \phi(x_2)||^2 &\space\space\space\space(w4) \end{aligned}
g(x)=j=1∑NαjyjK(x,xj)+bνi=j=3∑NαjyjK(xi,xj)=g(xi)−j=1∑2αjyjK(xi,xj)−bEi=g(xi)−yi=(j=1∑NαjyjK(xi,xj)+b)−yiη=K11+K22−2K12=∣∣ϕ(x1)−ϕ(x2)∣∣2 (w1) (w2) (w3) (w4)
- 当 i = 1 , 2 i=1,2 i=1,2时, E i E_i Ei为函数 g ( x ) g(x) g(x)对输入 x i x_i xi的预测值与真实输出 y i y_i yi之差。
- ϕ ( x ) \phi(x) ϕ(x)是输入空间到特征空间的映射
则目标函数可以写成:
(33)
W
(
α
1
,
α
2
)
=
1
2
K
11
α
1
2
+
1
2
K
22
α
2
2
+
y
1
y
2
K
12
α
1
α
2
+
y
1
α
1
∑
i
=
3
N
y
i
α
i
K
i
1
+
y
2
α
2
∑
i
=
3
N
y
i
α
i
K
i
2
−
(
α
1
+
α
2
)
=
1
2
K
11
α
1
2
+
1
2
K
22
α
2
2
+
y
1
y
2
K
12
α
1
α
2
+
y
1
ν
1
α
1
+
y
2
ν
2
α
2
−
(
α
1
+
α
2
)
\begin{aligned} W(\alpha_1,\alpha_2) & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\alpha_1 \alpha_2 + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2 \alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2} - (\alpha_1 + \alpha_2) \\ & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\alpha_1 \alpha_2 + y_1 \nu_1 \alpha_1 + y_2 \nu_2 \alpha_2 - (\alpha_1 + \alpha_2) \tag{33} \end{aligned}
W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2−(α1+α2)=21K11α12+21K22α22+y1y2K12α1α2+y1ν1α1+y2ν2α2−(α1+α2)(33)
由
α
1
y
1
=
ζ
−
α
2
y
2
及
y
i
2
=
1
\alpha_1 y_1 = \zeta - \alpha_2 y_2 及 y_i^2 =1
α1y1=ζ−α2y2及yi2=1,可将
α
1
\alpha_1
α1表示为:
α
1
=
(
ζ
−
y
2
α
2
)
y
1
\alpha_1 = (\zeta - y_2 \alpha_2) y_1
α1=(ζ−y2α2)y1
将上式
α
1
\alpha_1
α1代入目标函数(33)得到只含有
α
2
\alpha_2
α2的目标函数:
(34)
W
(
α
2
)
=
1
2
K
11
(
ζ
−
α
2
y
2
)
2
+
1
2
K
22
α
2
2
+
y
2
K
12
(
ζ
−
α
2
y
2
)
α
2
+
ν
1
(
ζ
−
α
2
y
2
)
+
y
2
ν
2
α
2
−
(
ζ
−
y
2
α
2
)
y
1
−
α
2
W(\alpha_2) = \dfrac{1}{2}K_{11} (\zeta - \alpha_2 y_2)^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_2 K_{12}(\zeta - \alpha_2 y_2) \alpha_2 + \nu_1 (\zeta - \alpha_2 y_2) + y_2 \nu_2 \alpha_2 - (\zeta - y_2 \alpha_2) y_1 - \alpha_2 \tag{34}
W(α2)=21K11(ζ−α2y2)2+21K22α22+y2K12(ζ−α2y2)α2+ν1(ζ−α2y2)+y2ν2α2−(ζ−y2α2)y1−α2(34)
上式对
α
2
\alpha_2
α2求导得:
∂
W
∂
α
2
=
K
11
α
2
−
K
11
ζ
y
2
+
K
22
α
2
+
K
12
ζ
y
2
−
2
K
12
α
2
−
ν
1
y
2
+
y
2
ν
2
+
y
1
y
2
−
1
\dfrac {\partial W}{\partial {\alpha_2}} = K_{11} \alpha_2 - K_{11}\zeta y_2 + K_{22} \alpha_2 + K_{12}\zeta y_2 - 2K_{12}\alpha_2 - \nu_1 y_2 + y_2 \nu_2 + y_1 y_2 -1
∂α2∂W=K11α2−K11ζy2+K22α2+K12ζy2−2K12α2−ν1y2+y2ν2+y1y2−1
令其为0,得到:
(
K
11
+
K
22
−
2
K
12
)
α
2
=
K
11
ζ
y
2
−
K
12
ζ
y
2
+
ν
1
y
2
−
y
2
ν
2
−
y
1
y
2
+
y
2
2
=
y
2
[
K
11
ζ
−
K
12
ζ
+
(
g
(
x
1
)
−
∑
j
=
1
2
α
j
y
j
K
1
j
−
b
)
−
(
g
(
x
2
)
−
∑
j
=
1
2
α
j
y
j
K
2
j
−
b
)
−
y
1
+
y
2
]
\begin{aligned} \left(K_{11} + K_{22} - 2K_{12}\right)\alpha_2 &= K_{11}\zeta y_2 - K_{12}\zeta y_2 + \nu_1 y_2 - y_2 \nu_2 - y_1 y_2 + y_2^2 \\ & = y_2[ K_{11}\zeta - K_{12}\zeta + \left( g(x_1) - \sum_{j=1}^2 \alpha_j y_j K_{1j} - b \right) - \left( g(x_2) - \sum_{j=1}^2 \alpha_j y_j K_{2j} - b \right) - y_1 + y_2 ] \end{aligned}
(K11+K22−2K12)α2=K11ζy2−K12ζy2+ν1y2−y2ν2−y1y2+y22=y2[K11ζ−K12ζ+(g(x1)−j=1∑2αjyjK1j−b)−(g(x2)−j=1∑2αjyjK2j−b)−y1+y2]
将
ζ
=
α
1
o
l
d
y
1
+
α
2
o
l
d
y
2
\zeta = \alpha_1^{old} y_1 + \alpha_2^{old} y_2
ζ=α1oldy1+α2oldy2代入得到:
(
K
11
+
K
22
−
2
K
12
)
α
2
n
e
w
,
u
n
c
=
y
2
(
(
K
11
+
K
22
−
2
K
12
)
α
2
o
l
d
y
2
+
y
2
−
y
1
+
g
(
x
1
)
−
g
(
x
2
)
)
=
(
K
11
+
K
22
−
2
K
12
)
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
\begin{aligned} \left(K_{11} + K_{22} - 2K_{12}\right)\alpha_2^{new,unc} &= y_2((K_{11} + K_{22} - 2K_{12})\alpha_2^{old} y_2 + y_2 - y_1 + g(x_1)-g(x_2)) \\ & = (K_{11} + K_{22} - 2K_{12})\alpha_2^{old} + y2(E_1 - E_2) \end{aligned}
(K11+K22−2K12)α2new,unc=y2((K11+K22−2K12)α2oldy2+y2−y1+g(x1)−g(x2))=(K11+K22−2K12)α2old+y2(E1−E2)
将
η
=
K
11
+
K
22
−
2
K
12
=
∣
∣
ϕ
(
x
1
)
−
ϕ
(
x
2
)
∣
∣
2
\eta = K_{11} + K_{22} - 2K_{12} = ||\phi(x_1) - \phi(x_2)||^2
η=K11+K22−2K12=∣∣ϕ(x1)−ϕ(x2)∣∣2代入得到:
(35a)
α
2
n
e
w
,
u
n
c
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
\alpha_2^{new,unc} = \alpha_2^{old} + \dfrac{y_2(E_1 - E_2)}{\eta} \tag{35a}
α2new,unc=α2old+ηy2(E1−E2)(35a)
则得到剪辑后的
α
2
\alpha_2
α2的解为:
(35)
α
2
n
e
w
=
{
H
,
α
2
n
e
w
,
u
n
c
>
H
α
2
n
e
w
,
u
n
c
,
L
≤
α
2
n
e
w
,
u
n
c
≤
H
L
,
α
2
n
e
w
,
u
n
c
<
L
\alpha_2^{new} = \begin{cases} H, & \alpha_2^{new,unc} > H \\[2ex] \alpha_2^{new,unc}, & L \leq \alpha_2^{new,unc} \leq H \tag{35}\\[2ex] L, & \alpha_2^{new,unc} < L \end{cases}
α2new=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧H,α2new,unc,L,α2new,unc>HL≤α2new,unc≤Hα2new,unc<L(35)
由
α
2
n
e
w
\alpha_2^{new}
α2new和等式约束(32)求得
α
1
n
e
w
\alpha_1^{new}
α1new是:
α
1
n
e
w
=
α
1
o
l
d
+
y
1
y
2
(
α
2
o
l
d
−
α
2
n
e
w
)
\alpha_1^{new} = \alpha_1^{old} + y_1 y_2 (\alpha_2^{old} - \alpha_2^{new} )
α1new=α1old+y1y2(α2old−α2new)
于是得到问题(29)-(31)的解 ( α 1 n e w , α 2 n e w ) (\alpha_1^{new},\alpha_2^{new}) (α1new,α2new)
(4)计算阈值b和差值E
在每次完成两个变量的优化后,都要重新计算阈值b和差值E。
阈值b更新
当
0
<
α
1
n
e
w
<
C
0< \alpha_1^{new} < C
0<α1new<C时,由KKT条件(k3)(k6)(k8)可知:
∑
i
=
1
N
α
i
y
i
K
i
1
+
b
=
y
1
\sum_{i=1}^N \alpha_i y_i K_{i1} + b = y_1
i=1∑NαiyiKi1+b=y1
于是,
(36)
b
1
n
e
w
=
y
1
−
∑
i
=
3
N
α
i
y
i
K
i
1
−
α
1
n
e
w
y
1
K
11
−
α
1
n
e
w
y
1
K
11
b_1^{new} = y_1 - \sum_{i=3}^N \alpha_i y_i K_{i1} - \alpha_1^{new} y_1 K_{11} - \alpha_1^{new} y_1 K_{11} \tag{36}
b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α1newy1K11(36)
由
E
1
E_1
E1的定义有
E
1
=
∑
i
=
3
N
α
i
y
i
K
i
1
+
α
1
o
l
d
y
1
K
11
+
α
2
o
l
d
y
2
K
21
+
b
o
l
d
−
y
1
E_1 = \sum_{i=3}^N \alpha_i y_i K_{i1} + \alpha_1^{old} y_1 K_{11} + \alpha_2^{old} y_2 K_{21} + b^{old} - y_1
E1=i=3∑NαiyiKi1+α1oldy1K11+α2oldy2K21+bold−y1
则式(36)等号右侧的前两项可写成:
y
1
−
∑
i
=
3
N
α
i
y
i
K
i
1
=
−
E
1
+
α
1
o
l
d
y
1
K
11
+
α
2
o
l
d
y
2
K
21
+
b
o
l
d
y_1 - \sum_{i=3}^N \alpha_i y_i K_{i1} = -E_1 + \alpha_1^{old} y_1 K_{11} + \alpha_2^{old} y_2 K_{21} + b^{old}
y1−i=3∑NαiyiKi1=−E1+α1oldy1K11+α2oldy2K21+bold
把上式代入式(36)可得:
(37)
b
1
n
e
w
=
−
E
1
−
y
1
K
11
(
α
1
n
e
w
−
α
1
o
l
d
)
−
y
2
K
21
(
α
2
n
e
w
−
α
2
o
l
d
)
+
b
o
l
d
b_1^{new} = -E_1 - y_1 K_{11}(\alpha_1^{new} - \alpha_1^{old}) - y_2 K_{21}(\alpha_2^{new} - \alpha_2^{old}) + b^{old} \tag{37}
b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+bold(37)
同样,如果
0
<
α
2
n
e
w
<
C
0< \alpha_2^{new} < C
0<α2new<C,那么,
(38)
b
2
n
e
w
=
−
E
2
−
y
1
K
12
(
α
1
n
e
w
−
α
1
o
l
d
)
−
y
2
K
22
(
α
2
n
e
w
−
α
2
o
l
d
)
+
b
o
l
d
b_2^{new} = -E_2 - y_1 K_{12}(\alpha_1^{new} - \alpha_1^{old}) - y_2 K_{22}(\alpha_2^{new} - \alpha_2^{old}) + b^{old} \tag{38}
b2new=−E2−y1K12(α1new−α1old)−y2K22(α2new−α2old)+bold(38)
- 如果 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new同时满足 0 < α i n e w < C , i = 1 , 2 0< \alpha_i^{new} < C,\space i=1,2 0<αinew<C, i=1,2,那么 b 1 n e w = b 2 n e w b_1^{new} = b_2^{new} b1new=b2new。
- 如果 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new是0或者C,那么 b 1 n e w , b 2 n e w b_1^{new} , b_2^{new} b1new,b2new以及他们之间的数都是符合KKT条件的阈值,这时选择它们的中点作为 b n e w b^{new} bnew
综上可得:
(39)
b
n
e
w
=
b
1
n
e
w
+
b
2
n
e
w
2
b^{new} = \dfrac{b_1^{new} + b_2^{new}}{2} \tag{39}
bnew=2b1new+b2new(39)
差值 E i E_i Ei更新
在每次完成两个变量的优化之后,还必须更新对应的
E
i
E_i
Ei值,并将他们保存在列表中。
E
i
E_i
Ei值的更新要用到
b
n
e
w
b^{new}
bnew值,以及所有支持向量对应的
α
j
\alpha_j
αj:
(40)
E
i
n
e
w
=
∑
S
y
j
α
j
K
(
x
i
,
x
j
)
+
b
n
e
w
−
y
i
E_i^{new} = \sum_S y_j \alpha_j K(x_i,x_j) + b^{new} - y_i \tag{40}
Einew=S∑yjαjK(xi,xj)+bnew−yi(40)
- S是所有支持向量 x j x_j xj的集合。非支持向量的E值为0。
看了很多博客,其实统计学习方法里面的过程已经很完整,对其中一些过程做了补充,别看在求解时用了很多计算公式,其实里面没有很深的知识,就是变换多。
2、变量的选择方法
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。
(1)第1个变量的选择
SMO称选择第1个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。具体的,检验训练样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)是否满足KKT条件,即:
α
i
=
0
  
⟺
  
y
i
g
(
x
i
)
≥
1
0
<
α
i
<
C
  
⟺
  
y
i
g
(
x
i
)
=
1
α
i
=
C
  
⟺
  
y
i
g
(
x
i
)
≤
1
\begin{aligned} \alpha_i = 0 & \iff y_i g(x_i) \geq 1 \\ 0 < \alpha_i < C & \iff y_i g(x_i) = 1 \\ \alpha_i = C & \iff y_i g(x_i) \leq 1 \\ \end{aligned}
αi=00<αi<Cαi=C⟺yig(xi)≥1⟺yig(xi)=1⟺yig(xi)≤1
- g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + b g(xi)=∑j=1NαjyjK(xi,xj)+b
该检验是在精度 ϵ \epsilon ϵ范围内进行的,即在精度 ϵ \epsilon ϵ范围内的点不选用。
- 在检验过程中,外层循环首先遍历所有满足条件 0 < α i < C 0 < \alpha_i < C 0<αi<C的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件。
- 如果这些点都满足KKT条件,那么就遍历整个训练集,检验它们是否满足KKT条件。
(2)第2个变量的选择
SMO称选择第2个变量的过程为内层循环。假设在外层循环中已经找到第1个变量 α 1 \alpha_1 α1,现在要在内层循环中找到第2个变量 α 2 \alpha_2 α2。第2个变量选择的标准是希望能使 α 2 \alpha_2 α2有足够大的变化。
由式(35a)(35)可知, α 2 n e w \alpha_2^{new} α2new是依赖于 ∣ E 1 − E 2 ∣ |E_1 - E_2| ∣E1−E2∣的,为了加快计算速度,一种简单的做法是选择 α 2 \alpha_2 α2,使其对应的 ∣ E 1 − E 2 ∣ |E_1 - E_2| ∣E1−E2∣最大。因为 α 1 \alpha_1 α1已定, E 1 E_1 E1也确定了。
- 如果 E 1 E_1 E1是正的,那么选择最小的 E i E_i Ei作为 E 2 E_2 E2;
- 如果 E 1 E_1 E1是负的,那么选择最大的 E i E_i Ei作为 E 2 E_2 E2;
- 为了节省计算时间,将所有 E i E_i Ei值保存在一个列表中。
在特殊情况下,如果内层循环通过以上方法选择的 α 2 \alpha_2 α2不能使目标函数有足够的下降,那么采用以下启发式规则继续选择 α 2 \alpha_2 α2。
- 遍历在间隔边界上的支持向量点,依次将其对应的变量作为 α 2 \alpha_2 α2试用,直到目标函数有足够的下降;
- 若找不到合适的 α 2 \alpha_2 α2,那么遍历训练数据集;
- 若仍找不到合适的 α 2 \alpha_2 α2,则放弃第1个 α 1 \alpha_1 α1,再通过外层循环寻找另外的 α 1 \alpha_1 α1。
3、SMO算法
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中, x i ∈ R n , y i ∈ { − 1 , + 1 } , i = 1 , 2 , ⋯   , N x_i \in {\bf R}^n,\space y_i \in \{-1,+1\},\space i =1,2,\cdots,N xi∈Rn, yi∈{−1,+1}, i=1,2,⋯,N,精度 ϵ \epsilon ϵ;
输出:近似解 α ^ \hat{\alpha} α^,由于给算法设置了一个精度 ϵ \epsilon ϵ,所以最终求得是近似解。
(1)取初值 α ( 0 ) = 0 \alpha^{(0)} = 0 α(0)=0,令 k = 0 k=0 k=0;
(2)选取优化变量 α 1 ( k ) , α 2 ( k ) \alpha_1^{(k)},\alpha_2^{(k)} α1(k),α2(k),解析求解两个变量的最优化问题(29)(31),求得最优解 α 1 ( k + 1 ) , α 2 ( k + 1 ) \alpha_1^{(k+1)},\alpha_2^{(k+1)} α1(k+1),α2(k+1),更新 α \alpha α为 α ( k + 1 ) \alpha^{(k+1)} α(k+1);
(3)若在精度
ϵ
\epsilon
ϵ范围内满足停机条件:
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N \alpha_i y_i = 0
i=1∑Nαiyi=0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
⋯
 
,
N
0 \leq \alpha_i \leq C,\space i=1,2,\cdots,N
0≤αi≤C, i=1,2,⋯,N
y
i
⋅
g
(
x
i
)
=
{
≥
1
,
{
x
i
∣
α
i
=
0
}
=
1
,
{
x
i
∣
0
<
α
i
<
C
}
≤
1
,
{
x
i
∣
α
i
=
C
}
y_i \cdot g(x_i) = \begin{cases} \geq 1, & \{x_i|\alpha_i = 0\} \\[2ex] = 1, & \{x_i|0 < \alpha_i < C \} \\[2ex] \leq 1, & \{x_i|\alpha_i = C\} \end{cases}
yi⋅g(xi)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧≥1,=1,≤1,{xi∣αi=0}{xi∣0<αi<C}{xi∣αi=C}
- g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + b g(xi)=∑j=1NαjyjK(xi,xj)+b
则转(4);否则令 k = k + 1 k = k+1 k=k+1,转(2);
(4)取 α ^ = α ( k + 1 ) \hat{\alpha} = \alpha^{(k+1)} α^=α(k+1)。
对于深入研究支持向量机之前,看了一眼书,这个算法占的篇幅最大,公式最多,难度应该不一般。研究下来确实不一般,花费六天,每天至少5小时,最终下来感觉还算是比较了解了。其实支持向量机的模型和策略都很简单,模型就是一个超平面,策略就是最大化分类间隔,解决的问题从线性可分到线性近似可分,再到非线性可分;然后就是算法,对最终最优化问题的求解,为了求解快速、少占内存,有大牛发明了SMO算法(序列最小最优算法)。
如果是想研究支持向量机可以按我上面的总结看下来绝对没问题,大致内容和李航的统计学方法一致,我对中间涉及的一些数学知识做了一定补充,这也是我这篇博客与课本差别之一,对一些难以理解的地方详细展开和知识补充。这篇总结涉及的知识点很多,若有不正确的地方还望指出,以免误导他人。
之前的学习的几个算法都是搞懂再来做总结,支持向量机知识点太多,一下全部搞懂挺难的,是知道一点就总结一点,遇到过不去的就停下来找博客,看别人的讲解,就这样把难点逐个击破,然后整个算法也就总结完了。这也相当于应用了SMO算法的思想,化整为零,逐个击破,每一个算法都是智慧的结晶。
参考资料:
- 统计学习方法—李航
- 从KKT条件下的拉格朗日乘法到拉格朗日对偶问题
- 机器学习实战教程(八)
- 以及文中链接
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
********************************************
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
未完待续