SVM序列最小最优化算法SMO
SMO算法简介
序列最小最优化(sequential minimal optimization SMO)算法 ,由Platt于1998年提出,可以高效地实现支持向量机学习问题.
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
(
1
)
\min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \quad(1)
αmin21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi(1)
s.t.
∑
i
=
1
N
α
i
y
t
=
0
(
2
)
\text { s.t. } \quad \sum_{i=1}^{N} \alpha_{i} y_{t}=0 \quad(2)
s.t. i=1∑Nαiyt=0(2)
0
⩽
α
i
⩽
C
,
i
=
1
,
2
,
⋯
 
,
N
(
3
)
0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \quad(3)
0⩽αi⩽C,i=1,2,⋯,N(3)在这个问题中,变量是拉格朗日乘子,一个变量
α
i
\alpha_i
αi对应于一个样本点
(
x
i
,
y
i
)
\left(x_{i}, y_{i}\right)
(xi,yi);变量的总数等于训练样本容量。与之对应的最优解需满足KKT条件为:
α
i
=
0
⇔
y
i
g
(
x
i
)
⩾
1
(
4
)
\alpha_{i}=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geqslant 1 \quad(4)
αi=0⇔yig(xi)⩾1(4)
0
<
α
i
<
C
⇔
y
i
g
(
x
i
)
=
1
(
5
)
0<\alpha_{i}<C \Leftrightarrow y_{i} g\left(x_{i}\right)=1 \quad(5)
0<αi<C⇔yig(xi)=1(5)
α
i
=
C
⇔
y
i
g
(
x
i
)
⩽
1
(
6
)
\alpha_{i}=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leqslant 1 \quad(6)
αi=C⇔yig(xi)⩽1(6)其中,
g
(
x
i
)
=
∑
j
=
1
N
α
j
y
j
K
(
x
i
,
x
j
)
+
b
g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)+b
g(xi)=∑j=1NαjyjK(xi,xj)+b
(
4
)
(4)
(4)式表明,在两条间隔线外面的点,对应前面的系数
α
i
\alpha_i
αi为
0
0
0
(
5
)
(5)
(5)式表明,在两条间隔线上的点,对应前面的系数
α
i
\alpha_i
αi为
C
C
C
(
6
)
(6)
(6)式表明,在两条间隔线里面的点,对应前面的系数
α
i
\alpha_i
αi在
0
0
0和
C
C
C之间
以下几种情况出现将不会满足:
y
i
g
(
x
i
)
≤
1
y_{i} g(x_{i}) \leq 1
yig(xi)≤1但
α
i
<
C
\alpha_i <C
αi<C,则表明是不满足的,而原本的
α
i
=
C
\alpha_i =C
αi=C
y
i
g
(
x
i
)
≥
1
y_{i} g(x_{i}) \geq 1
yig(xi)≥1但
α
i
>
0
\alpha_i >0
αi>0,则表明是不满足的,而原本的
α
i
=
0
\alpha_i =0
αi=0
y
i
g
(
x
i
)
=
1
y_{i} g(x_{i}) = 1
yig(xi)=1但
α
i
=
0
\alpha_i =0
αi=0或者
α
i
=
C
\alpha_i =C
αi=C,则表明是不满足的,而原本应该是
0
<
α
i
<
C
0<\alpha_{i}<C
0<αi<C
SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,(因为KKT条件是该最优化问题的充分必要条件)那么这个最优化问题的解就得到了,否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定,如此,SMO算法将原问题不断分解为子问题对子问题的求解进而达到求解原问题的目的.
注意,子问题的两个变量中只有一个是自由变量,假设
α
1
\alpha_1
α1,
α
2
\alpha_2
α2为两个变量,固定
α
3
,
α
4
,
⋯
 
,
α
N
\alpha_{3}, \alpha_{4}, \cdots, \alpha_{N}
α3,α4,⋯,αN,那么由等式约束可知:
如果
α
2
\alpha_2
α2确定,那么
α
1
\alpha_1
α1也随之确定,所以子问题中同时更新两个变量。
假设变量个数为一个时,固定
α
3
,
α
4
,
⋯
 
,
α
N
\alpha_{3}, \alpha_{4}, \cdots, \alpha_{N}
α3,α4,⋯,αN,此时
α
1
\alpha_1
α1也已经固定,
α
1
\alpha_1
α1不可作为自由变量。
假设变量个数为三个时,这样无法控制自由变量个数。因此只能取两个变量,其中之一为自由变量。SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法.
两个变量二次规划的求解方法
假设选择的两个变量时
α
1
,
α
2
\alpha_{1}, \alpha_{2}
α1,α2,其他变量
α
i
(
i
=
3
,
4
,
.
.
.
,
N
)
\alpha_i(i=3,4,...,N)
αi(i=3,4,...,N)是固定的,于是SMO的最优化问题
(
1
)
∼
(
3
)
(1)\sim(3)
(1)∼(3)的子问题可以写成:
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
−
(
α
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
(
7
)
\min _{\alpha_{1}, \alpha_{2}} \; W\left(\alpha_{1}, \alpha_{2}\right)=\frac{1}{2} K_{11} \alpha_{1}^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{1} y_{2} K_{12} \alpha_{1} \alpha_{2}\\- \left(\alpha_{1}+\alpha_{2}\right)+y_{1} \alpha_{1} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 1}+y_{2} \alpha_{2} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 2} \quad(7)
α1,α2minW(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2(7)
s.t.
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
y
i
α
i
=
ζ
(
8
)
\text { s.t. } \quad \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta \quad(8)
s.t. α1y1+α2y2=−i=3∑Nyiαi=ζ(8)
0
⩽
α
i
⩽
C
,
i
=
1
,
2
(
9
)
0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2\quad(9)
0⩽αi⩽C,i=1,2(9)
其中,
K
i
j
=
K
(
x
i
,
x
j
)
,
i
,
j
=
1
,
2
,
⋯
 
,
N
,
ζ
K_{i j}=K\left(x_{i}, x_{j}\right), i, j=1,2, \cdots, N, \quad \zeta
Kij=K(xi,xj),i,j=1,2,⋯,N,ζ是常数,目标函数式中省略了不含
α
1
,
α
2
\alpha_{1}, \alpha_{2}
α1,α2的常数项.为了求解两个变量的二次规划问题
(
7
)
∼
(
9
)
(7)\sim(9)
(7)∼(9),首先分析约束条件,然后在此约束条件下求极小。
由于只有两个变量
α
1
,
α
2
\alpha_{1}, \alpha_{2}
α1,α2,约束可以用二维空间的图形表示:

对于上图由条件 α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta α1y1+α2y2=−∑i=3Nyiαi=ζ,当 y 1 ≠ y 2 y_{1} \neq y_{2} y1̸=y2,即 y 1 , y 2 y_1,y_2 y1,y2异号,有 α 1 − α 2 = ζ \alpha_1-\alpha_2=\zeta α1−α2=ζ,即左图,当 y 1 = y 2 y_{1}=y_{2} y1=y2,即 α 1 + α 2 = ζ \alpha_{1}+\alpha_{2}=\zeta α1+α2=ζ得右图,不等式约束 0 ⩽ α i ⩽ C , i = 1 , 2 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2 0⩽αi⩽C,i=1,2,使得 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times[0,C] [0,C]×[0,C],等式约束 α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta α1y1+α2y2=−∑i=3Nyiαi=ζ使 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在平行于盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times[0,C] [0,C]×[0,C]的对角线的直线上,因此要求的是目标函数在一条平行于对角线的线段上的最优值,实质上是单变量的最优化问题,不妨考虑为变量的最优化问题

假设问题
(
7
)
∼
(
9
)
(7)\sim(9)
(7)∼(9)的初始可行解为
α
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
n
e
w
\alpha_2^{new}
α2new满足不等式约束
0
⩽
α
i
⩽
C
,
i
=
1
,
2
0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2
0⩽αi⩽C,i=1,2,所以最优解
α
2
n
e
w
\alpha_2^{new}
α2new的取值范围必须满足条件
L
⩽
α
2
n
e
w
⩽
H
L \leqslant \alpha_{2}^{\mathrm{new}} \leqslant H
L⩽α2new⩽H其中,
L
L
L与
H
H
H是
α
2
n
e
w
\alpha_2^{new}
α2new所在对角线段端点的界,如上图
y
1
,
y
2
y_1,y_2
y1,y2异号时,
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 \left(0, \alpha_{2}^{{old}}-\alpha_{1}^{{old}}\right) \quad H=\min \left(C, C+\alpha_{2}^{{ old }}-\alpha_{1}^{{ old }}\right)
L=max(0,α2old−α1old)H=min(C,C+α2old−α1old) 此处需要具体解释一下,结合上图
当
ζ
>
0
\zeta>0
ζ>0时,
α
1
−
α
2
=
ζ
\alpha_1-\alpha_2=\zeta
α1−α2=ζ,处于对角线的下方,
α
2
\alpha_2
α2下界为图中的
L
1
=
0
L1=0
L1=0,上界为图中的
H
1
=
C
+
α
2
−
α
1
H1=C+\alpha_2-\alpha_1
H1=C+α2−α1
当
ζ
<
0
\zeta<0
ζ<0时,
α
1
−
α
2
=
ζ
\alpha_1-\alpha_2=\zeta
α1−α2=ζ,处于对角线的下方,
α
2
\alpha_2
α2下界为图中的
L
2
=
−
ζ
L2=-\zeta
L2=−ζ,上界为图中的
H
2
=
C
H2=C
H2=C
综合上述两种情况可得要满足
L
⩽
α
2
n
e
w
⩽
H
L \leqslant \alpha_{2}^{{new}} \leqslant H
L⩽α2new⩽H须有
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 \left(0, \alpha_{2}^{{old}}-\alpha_{1}^{{old}}\right) \quad H=\min \left(C, C+\alpha_{2}^{{ old }}-\alpha_{1}^{{ old }}\right)
L=max(0,α2old−α1old)H=min(C,C+α2old−α1old)同理如果
y
1
,
y
2
y_1,y_2
y1,y2同号,则
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 \left(0, \alpha_{2}^{ { old }}+\alpha_{1}^{{ old }}-C\right) \quad H=\min \left(C, \alpha_{2}^{{old}}+\alpha_{1}^{{old}}\right)
L=max(0,α2old+α1old−C)H=min(C,α2old+α1old)下面,首先沿着约束方向未经剪辑即考虑不等式约束时
0
⩽
α
i
⩽
C
,
i
=
1
,
2
0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2
0⩽αi⩽C,i=1,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,为了简洁叙述下面定理我们首先记
g
(
x
)
=
∑
i
=
1
N
α
i
y
i
K
(
x
i
,
x
)
+
b
(
10
)
g(x)=\sum_{i=1}^{N} \alpha_{i} y_{i} K\left(x_{i}, x\right)+b \quad(10)
g(x)=i=1∑NαiyiK(xi,x)+b(10)令
E
i
=
g
(
x
i
)
−
y
i
=
(
∑
j
=
1
N
α
j
y
j
K
(
x
j
,
x
i
)
+
b
)
−
y
i
,
i
=
1
,
2
(
11
)
E_{i}=g\left(x_{i}\right)-y_{i}=\left(\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b\right)-y_{i}, \quad i=1,2 \quad(11)
Ei=g(xi)−yi=(j=1∑NαjyjK(xj,xi)+b)−yi,i=1,2(11)当时
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之差.
定理6 最优化问题
(
7
)
∼
(
9
)
(7)\sim(9)
(7)∼(9)沿着约束方向未经剪辑时的解是
α
2
n
e
w
,
u
n
c
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
(
12
)
\alpha_{2}^{{new}, {unc}}=\alpha_{2}^{{old}}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta} \quad(12)
α2new,unc=α2old+ηy2(E1−E2)(12)其中,
η
=
K
11
+
K
22
−
2
K
12
=
∥
Φ
(
x
1
)
−
Φ
(
x
2
)
∥
2
\eta=K_{11}+K_{22}-2 K_{12}=\left\|\Phi\left(x_{1}\right)-\Phi\left(x_{2}\right)\right\|^{2}
η=K11+K22−2K12=∥Φ(x1)−Φ(x2)∥2
ϕ
(
x
)
\phi(x)
ϕ(x)是输入空间到特征空间的映射,
E
i
,
i
=
1
,
2
E_i,i=1,2
Ei,i=1,2,由式
(
11
)
(11)
(11)给出
经剪辑后
α
2
\alpha_2
α2的解是
α
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
(
13
)
L
,
α
2
n
e
w
,
u
n
c
<
L
\alpha_{2}^{ { new }}=\left\{\begin{array}{ll}{H,} & {\alpha_{2}^{ { new, unc }}>H} \\ {\alpha_{2}^{ { new, unc }},} & {L \leqslant \alpha_{2}^{ { new, unc }} \leqslant H} \quad(13)\\ {L,} & {\alpha_{2}^{{ new, unc }}<L}\end{array}\right.
α2new=⎩⎨⎧H,α2new,unc,L,α2new,unc>HL⩽α2new,unc⩽H(13)α2new,unc<L由
α
2
n
e
w
\alpha_{2}^{new}
α2new求得
α
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
)
(
14
)
\alpha_{1}^{{new}}=\alpha_{1}^{{old}}+y_{1} y_{2}\left(\alpha_{2}^{{old}}-\alpha_{2}^{{new}}\right) \quad(14)
α1new=α1old+y1y2(α2old−α2new)(14)
证明 引进记号
v
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
,
i
=
1
,
2
v_{i}=\sum_{j=3}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)=g\left(x_{i}\right)-\sum_{j=1}^{2} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)-b, \quad i=1,2
vi=j=3∑NαjyjK(xi,xj)=g(xi)−j=1∑2αjyjK(xi,xj)−b,i=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
−
(
α
1
+
α
2
)
+
y
1
v
1
α
1
+
y
2
v
2
α
2
(
15
)
W\left(\alpha_{1}, \alpha_{2}\right)=\frac{1}{2} K_{11} \alpha_{1}^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{1} y_{2} K_{12} \alpha_{1} \alpha_{2} -\left(\alpha_{1}+\alpha_{2}\right)+y_{1} v_{1} \alpha_{1}+y_{2} v_{2} \alpha_{2} \quad(15)
W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1v1α1+y2v2α2(15)由
α
1
y
1
=
ζ
−
α
2
y
2
\alpha_{1} y_{1}=\zeta-\alpha_{2} y_{2}
α1y1=ζ−α2y2及
y
i
2
=
1
y_{i}^{2}=1
yi2=1,两边同时乘以
y
1
y_1
y1, 可将
α
1
\alpha_1
α1表示为
α
1
=
(
ζ
−
y
2
α
2
)
y
1
\alpha_{1}=\left(\zeta-y_{2} \alpha_{2}\right) y_{1}
α1=(ζ−y2α2)y1将其带入式
(
15
)
(15)
(15),得到的只是
α
2
\alpha_2
α2的函数的目标函数:
W
(
α
2
)
=
1
2
K
11
(
ζ
−
α
2
y
2
)
2
+
1
2
K
22
α
2
2
+
y
2
K
12
(
ζ
−
α
2
y
2
)
α
2
−
(
ζ
−
α
2
y
2
)
y
1
−
α
2
+
v
1
(
ζ
−
α
2
y
2
)
+
y
2
v
2
α
2
W\left(\alpha_{2}\right)=\frac{1}{2} K_{11}\left(\zeta-\alpha_{2} y_{2}\right)^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{2} K_{12}\left(\zeta-\alpha_{2} y_{2}\right) \alpha_{2}\\-\left(\zeta-\alpha_{2} y_{2}\right) y_{1}-\alpha_{2}+v_{1}\left(\zeta-\alpha_{2} y_{2}\right)+y_{2} v_{2} \alpha_{2}
W(α2)=21K11(ζ−α2y2)2+21K22α22+y2K12(ζ−α2y2)α2−(ζ−α2y2)y1−α2+v1(ζ−α2y2)+y2v2α2对
α
2
\alpha_2
α2求导数
∂
W
∂
α
2
=
K
11
α
2
+
K
22
α
2
−
2
K
12
α
2
−
K
11
ζ
y
2
+
K
12
ζ
y
2
+
y
1
y
2
−
1
−
v
1
y
2
+
y
2
v
2
\frac{\partial W}{\partial \alpha_{2}}=K_{11} \alpha_{2}+K_{22} \alpha_{2}-2 K_{12} \alpha_{2} -K_{11} \zeta y_{2}+K_{12} \zeta y_{2}+y_{1} y_{2}\\-1-v_{1} y_{2}+y_{2} v_{2}
∂α2∂W=K11α2+K22α2−2K12α2−K11ζy2+K12ζy2+y1y2−1−v1y2+y2v2令其为
0
0
0,得到
(
K
11
+
K
22
−
2
K
12
)
α
2
=
y
2
(
y
2
−
y
1
+
ζ
K
11
−
ζ
K
12
+
v
1
−
v
2
)
=
y
2
[
y
2
−
y
1
+
ζ
K
11
−
ζ
K
12
+
(
g
(
x
1
)
−
∑
j
=
1
2
y
j
α
j
K
1
j
−
b
)
−
(
g
(
x
2
)
−
∑
j
=
1
2
y
j
α
j
K
2
j
−
b
)
]
\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}=y_{2}\left(y_{2}-y_{1}+\zeta K_{11}-\zeta K_{12}+v_{1}-v_{2}\right) \\ =y_{2}\left[y_{2}-y_{1}+\zeta K_{11}-\zeta K_{12}+\left(g\left(x_{1}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{1 j}-b\right)\right. \\-\left(g\left(x_{2}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{2 j}-b\right) \Biggr ]
(K11+K22−2K12)α2=y2(y2−y1+ζK11−ζK12+v1−v2)=y2[y2−y1+ζK11−ζK12+(g(x1)−j=1∑2yjαjK1j−b)−(g(x2)−j=1∑2yjαjK2j−b)]将
ζ
=
α
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
)
\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{new}, {unc}}\\= y_{2}\left(\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{old}} y_{2}+y_{2}-y_{1}+g\left(x_{1}\right)-g\left(x_{2}\right)\right)\\=\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{ old }}+y_{2}\left(E_{1}-E_{2}\right)
(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
\eta=K_{11}+K_{22}-2 K_{12}
η=K11+K22−2K12代入于是得到
α
2
n
e
w
,
u
n
c
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
\alpha_{2}^{{new}, {unc}}=\alpha_{2}^{{old}}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta}
α2new,unc=α2old+ηy2(E1−E2)要使其满足不等式约束必将其限制在区间
[
L
,
H
]
[L,H]
[L,H]内,从而得到
α
2
n
e
w
\alpha_2 ^{new}
α2new表达式
(
13
)
(13)
(13),由等式约束
(
8
)
(8)
(8)得到
α
1
n
e
w
\alpha_1 ^{new}
α1new的表达式
(
14
)
α
1
n
e
w
=
α
1
o
l
d
+
y
1
y
2
(
α
2
o
l
d
−
α
2
n
e
w
)
(14)\alpha_{1}^{{new}}=\alpha_{1}^{{old}}+y_{1} y_{2}\left(\alpha_{2}^{{old}}-\alpha_{2}^{{new}}\right)
(14)α1new=α1old+y1y2(α2old−α2new),于是得到最优化问题
(
7
)
∼
(
9
)
(7)\sim(9)
(7)∼(9)的解
(
α
1
n
e
w
,
α
2
n
e
w
)
(\alpha_{1}^{{new}},\alpha_{2}^{{new}})
(α1new,α2new)
变量的选择方法
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的
1.第1个变量的选择
SMO称选择第1个变量的过程为外层循环,外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量,检验训练样本点
(
x
i
,
y
i
)
\left(x_{i}, y_{i}\right)
(xi,yi)是否满足KKT条件,即
α
i
=
0
⇔
y
i
g
(
x
i
)
⩾
1
(
4
)
\alpha_{i}=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geqslant 1 \quad(4)
αi=0⇔yig(xi)⩾1(4)
0
<
α
i
<
C
⇔
y
i
g
(
x
i
)
=
1
(
5
)
0<\alpha_{i}<C \Leftrightarrow y_{i} g\left(x_{i}\right)=1 \quad(5)
0<αi<C⇔yig(xi)=1(5)
α
i
=
C
⇔
y
i
g
(
x
i
)
⩽
1
(
6
)
\alpha_{i}=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leqslant 1 \quad(6)
αi=C⇔yig(xi)⩽1(6)其中,
g
(
x
i
)
=
∑
j
=
1
N
α
j
y
j
K
(
x
i
,
x
j
)
+
b
g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)+b
g(xi)=∑j=1NαjyjK(xi,xj)+b
该检验是在
ε
\varepsilon
ε范围内进行的,在检验过程中,外层循环首先遍历所有满足条件
0
<
α
i
<
C
0<\alpha_{i}<C
0<αi<C的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件,如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件.
2.第2个变量的选择
SMO称选择第2个变量的过程称为内层循环,假设在外层循环中已经找到第一个变量
α
1
\alpha_1
α1,现在要在内层循环中找第2个变量
α
2
\alpha_2
α2,第2个变量选择的标准是希望能使
α
2
\alpha_2
α2有足够大的变化.
由式
(
12
)
(12)
(12)和
(
14
)
(14)
(14)可知,
α
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.计算阈值
b
b
b和差值
E
i
E_i
Ei
在每次完成两个变量的优化后,都要重新计算阈值
b
b
b,当
0
<
α
1
n
e
w
<
C
0<\alpha_{1}^{{ new }}<C
0<α1new<C时,由KKT条件知:
∑
i
=
1
N
α
i
y
i
K
i
1
+
b
=
y
1
\sum_{i=1}^{N} \alpha_{i} y_{i} K_{i 1}+b=y_{1}
i=1∑NαiyiKi1+b=y1于是
b
1
n
e
w
=
y
1
−
∑
i
=
3
N
α
i
y
i
K
i
1
−
α
1
n
a
w
y
1
K
11
−
α
2
n
a
w
y
2
K
21
(
16
)
b_{1}^{{new}}=y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}-\alpha_{1}^{{naw}} y_{1} K_{11}-\alpha_{2}^{{naw}} y_{2} K_{21} \quad(16)
b1new=y1−i=3∑NαiyiKi1−α1nawy1K11−α2nawy2K21(16)由
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_{i 1}+\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式
(
16
)
(16)
(16)的前两项可写成:
y
1
−
∑
i
=
3
N
α
i
y
i
K
n
=
−
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_{n}=-E_{1}+\alpha_{1}^{ { old }} y_{1} K_{11}+\alpha_{2}^{{ old }} y_{2} K_{21}+b^{ { old }}
y1−i=3∑NαiyiKn=−E1+α1oldy1K11+α2oldy2K21+bold带入式
(
16
)
(16)
(16)可得
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}\left(\alpha_{1}^{{new}}-\alpha_{1}^{{old}}\right)-y_{2} K_{21}\left(\alpha_{2}^{{new}}-\alpha_{2}^{{old}}\right)+b^{{old}}
b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+bold同样,如果
0
<
α
2
n
e
w
<
C
0<\alpha_{2}^{{ new }}<C
0<α2new<C,那么
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}\left(\alpha_{1}^{{new}}-\alpha_{1}^{{old}}\right)-y_{2} K_{22}\left(\alpha_{2}^{{new}}-\alpha_{2}^{{old}}\right)+b^{{old}}
b2new=−E2−y1K12(α1new−α1old)−y2K22(α2new−α2old)+bold如果
α
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, \quad 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
0
0或
C
C
C,那么
b
1
n
e
w
,
b
2
n
e
w
b_1 ^{new},b_2 ^{new}
b1new,b2new,以及它们之间的数都是符合KKT条件的阈值,这时选择它们的中点作为
b
2
n
e
w
b_2 ^{new}
b2new.在每次完成两个变量的优化后,还必须更新对应的的
E
i
E_i
Ei值,并将它们保存在列表中,
E
i
E_i
Ei值的更新要用到
b
2
n
e
w
b_2 ^{new}
b2new值,以及所有支持向量对应的
α
j
\alpha_j
αj:
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\left(x_{i}, x_{j}\right)+b^{{new}}-y_{i}
Einew=S∑yjαjK(xi,xj)+bnew−yi其中,
S
S
S是所有支持向量
x
j
x_j
xj的集合.
SMO算法流程
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
⋯
 
,
N
x_{i} \in \mathcal{X}=\mathbf{R}^{n}, \quad y_{i} \in \mathcal{Y}=\{+1,-1\}, \quad i=1,2, \cdots, N
xi∈X=Rn,yi∈Y={+1,−1},i=1,2,⋯,N,精度
ε
\varepsilon
ε:
输出:近似解
α
^
\hat{\alpha}
α^
(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),解析求解两个变量的最优化问题
(
7
)
∼
(
9
)
(7)\sim(9)
(7)∼(9),求得最优解
α
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)若在精度
ε
\varepsilon
ε范围内满足停机条件
∑
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 \leqslant \alpha_{i} \leqslant C, \quad 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\left(x_{i}\right)=\left\{\begin{array}{ll}{\geqslant 1,} & {\left\{x_{i} | \alpha_{i}=0\right\}} \\ {=1,} & {\left\{x_{i} | 0<\alpha_{i}<C\right\}} \\ {\leqslant 1,} & {\left\{x_{i} | \alpha_{i}=C\right\}}\end{array}\right.
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
j
,
x
i
)
+
b
g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b
g(xi)=j=1∑NαjyjK(xj,xi)+b则转(4);否则令
k
=
k
+
1
k=k+1
k=k+1,转(2);
(4) 取
α
^
=
α
(
k
+
1
)
\hat{\alpha}=\alpha^{(k+1)}
α^=α(k+1)
注:第一轮迭代由于没有支持向量,不迭代
b
b
b和
E
E
E.
对于每次迭代选择
α
i
\alpha_i
αi和
α
j
\alpha_j
αj的启发式方法,其包括以下两个步骤:
(1)先扫描所有乘子,把第一个违反KKT条件的作为更新对象,令为
α
j
\alpha_j
αj;
(2)在所有不违反KKT条件的乘子中,选择使
∣
E
i
−
E
j
∣
\left|E_{i}-E_{j}\right|
∣Ei−Ej∣最大的
α
i
\alpha_i
αi
需要注意的是,每次更新完所选的
α
i
\alpha_i
αi和
α
j
\alpha_j
αj后,都需要重新计算
b
,
E
i
b,E_i
b,Ei.
参考:
李航《统计学习方法》
http://www.cnblogs.com/pinard/p/6111471.html
https://blog.youkuaiyun.com/m0_37622530/article/details/80933353
支持向量机通俗导论(理解SVM的三层境界)
https://blog.youkuaiyun.com/v_july_v/article/details/7624837