支持向量机(四)
在前面的基础上,接下来我们关注支持向量机学习的实现问题——序列最小最优化算法(SMO)。
序列最小最优化算法
- 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 \mathop {\min }\limits_\alpha \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}K\left( {{x_i},{x_j}} \right)} } - \sum\limits_{i = 1}^N {{\alpha _i}} αmin21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 s.t.\quad \sum\limits_{i = 1}^N {{\alpha _i}{y_i} = 0} s.t.i=1∑Nαiyi=0
0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N 0 \le {\alpha _i} \le C,\quad i = 1,2, \cdots ,N 0≤αi≤C,i=1,2,⋯,N - SMO算法的基本思路
如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。 - SMO算法的主要部分
- 求解两个变量二次规划的解析方法
- 选择变量的启发式方法
两个变量二次规划的求解方法
假设选择的两个变量
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2,其他变量
α
i
(
i
=
3
,
4
,
⋯
 
,
N
)
{\alpha _i}\left( {i = 3,4, \cdots ,N} \right)
αi(i=3,4,⋯,N)是固定的,于是SMO的最优化问题的子问题可以写为:
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
\mathop {\min }\limits_{{\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\limits_{i = 3}^N {{y_i}{\alpha _i}{K_{i1}}} + {y_2}{\alpha _2}\sum\limits_{i = 3}^N {{y_i}{\alpha _i}{K_{i2}}}
α1,α2minW(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2
s
.
t
.
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
y
i
α
i
=
ς
s.t.\quad {\alpha _1}{y_1} + {\alpha _2}{y_2} = - \sum\limits_{i = 3}^N {{y_i}{\alpha _i}} = \varsigma
s.t.α1y1+α2y2=−i=3∑Nyiαi=ς
0
≤
α
i
≤
C
,
i
=
1
,
2
0 \le {\alpha _i} \le C,\quad i = 1,2
0≤αi≤C,i=1,2
其中
K
i
j
=
K
(
x
i
,
x
j
)
,
i
,
j
=
1
,
2
,
⋯
 
,
N
K_{ij}=K\left(x_i,x_j\right),i,j=1,2,\cdots,N
Kij=K(xi,xj),i,j=1,2,⋯,N,
ς
\varsigma
ς为常数。
假设初始解为 α 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
,
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)
其中:
η
=
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
E
i
=
g
(
x
i
)
−
y
i
=
(
∑
j
=
1
N
α
j
y
j
K
(
x
j
,
x
i
)
+
b
)
−
y
i
,
i
=
1
,
2
{E_i} = g\left( {{x_i}} \right) - {y_i} = \left( {\sum\limits_{j = 1}^N {{\alpha _j}{y_j}K\left( {{x_j},{x_i}} \right) + b} } \right) - {y_i},i = 1,2
Ei=g(xi)−yi=(j=1∑NαjyjK(xj,xi)+b)−yi,i=1,2
KaTeX parse error: Expected 'EOF', got '\[' at position 1: \̲[̲{\Phi \left( {{…是输入空间到特征空间的映射。
经剪辑后的解为:
α
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} = \left\{ \begin{array}{l} H,\quad \alpha _2^{new,unc} > H\\ \alpha _2^{new,unc},\quad L \le \alpha _2^{new,unc} \le H\\ L,\quad \alpha _2^{new,unc} < L \end{array} \right.
α2new=⎩⎨⎧H,α2new,unc>Hα2new,unc,L≤α2new,unc≤HL,α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
)
\alpha _1^{new} = \alpha _1^{old} + {y_1}{y_2}\left( {\alpha _2^{old} - \alpha _2^{new}} \right)
α1new=α1old+y1y2(α2old−α2new)
变量的选择方法
SMO算法在每个问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。
- 第一个变量的选择
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 {\alpha _i} = 0 \Leftrightarrow {y_i}g\left( {{x_i}} \right) \ge 1 αi=0⇔yig(xi)≥1
0 < α i < C ⇔ y i g ( x i ) = 1 0 < {\alpha _i} < C \Leftrightarrow {y_i}g\left( {{x_i}} \right) = 1 0<αi<C⇔yig(xi)=1
α i = C ⇔ y i g ( x i ) ≤ 1 {\alpha _i} = C \Leftrightarrow {y_i}g\left( {{x_i}} \right) \le 1 αi=C⇔yig(xi)≤1
其中 g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g\left( {{x_i}} \right) = \sum\limits_{j = 1}^N {{\alpha _j}{y_j}K\left( {{x_i},{x_j}} \right)} + b g(xi)=j=1∑NαjyjK(xi,xj)+b。
- 标准
- 第2个变量的选择
SMO称选择第2个变量的过程为内层循环,假设在外层循环已经找到第一个变量 α 1 \alpha_1 α1,要在内层循环中找到第2个变量 α 2 \alpha_2 α2。- 标准:
希望使 α 2 \alpha_2 α2有足够大的变化。 - 方法
α 2 n e w \alpha_2^{new} α2new依赖于 ∣ E 1 − E 2 ∣ \left| {{E_1} - {E_2}} \right| ∣E1−E2∣, α 1 \alpha_1 α1确定 E 1 E_1 E1也确定,选择 α 2 \alpha_2 α2使得 ∣ E 1 − E 2 ∣ \left| {{E_1} - {E_2}} \right| ∣E1−E2∣最大。 - 特殊情况
如果目标函数没有足够的下降,使用启发式方法或重新选择 α 1 \alpha_1 α1。
- 标准:
- 计算阈值
b
b
b和差值
E
i
E_i
Ei
- 当
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\limits_{i = 1}^N {{\alpha _i}{y_i}{K_{i1}}} + 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 e w y 1 K 11 − α 2 n e w y 2 K 21 b_1^{new} = {y_1} - \sum\limits_{i = 3}^N {{\alpha _i}{y_i}{K_{i1}}} - \alpha _1^{new}{y_1}{K_{11}} - \alpha _2^{new}{y_2}{K_{21}} b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21
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 < α 1 n e w < C , i = 1 , 2 0 < \alpha _1^{new} < C,i=1,2 0<α1new<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 n e w b^{new} bnew。 -
E
i
n
e
w
E_i^{new}
Einew的计算为:
E i n e w = ∑ S y j α j K ( x i , x j ) + b n e w − y i E_i^{new} = \sum\limits_S {{y_j}{\alpha _j}K\left( {{x_i},{x_j}} \right) + {b^{new}} - {y_i}} Einew=S∑yjαjK(xi,xj)+bnew−yi
- 当
0
<
α
1
n
e
w
<
C
0 < \alpha _1^{new} < C
0<α1new<C时,由KKT可知:
SMO算法
- 输入:训练数据集 T T T,精度 ε \varepsilon ε
- 输出:近似解 α ^ {\hat \alpha } α^
- 过程
- 取初始值 α ( 0 ) = 0 {\alpha ^{\left( 0 \right)}} = 0 α(0)=0,令 k = 0 k=0 k=0
- 选取优化变量 α 1 ( k ) , α 2 ( k ) \alpha _1^{\left( k \right)},\alpha _2^{\left( k \right)} α1(k),α2(k),解析求解两个变量的最优化问题,得到最优解 α 1 ( k + 1 ) , α 2 ( k + 1 ) \alpha _1^{\left( k+1 \right)},\alpha _2^{\left( k+1 \right)} α1(k+1),α2(k+1),更新 α \alpha α为 α ( k + 1 ) \alpha^{\left( k+1 \right)} α(k+1)
- 若在精度
ε
\varepsilon
ε范围内满足下面的停止条件则进行下一步
∑ i = 1 N α i y i = 0 \sum\limits_{i = 1}^N {{\alpha _i}{y_i}} = 0 i=1∑Nαiyi=0
0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N 0 \le {\alpha _i} \le C,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}{l} \ge 1,\left\{ {{x_i}\left| {{\alpha _i} = 0} \right.} \right\}\\ = 1,\left\{ {{x_i}\left| {0 < {\alpha _i} < C} \right.} \right\}\\ \le 1,\left\{ {{x_i}\left| {{\alpha _i} = C} \right.} \right\} \end{array} \right. yi⋅g(xi)=⎩⎨⎧≥1,{xi∣αi=0}=1,{xi∣0<αi<C}≤1,{xi∣αi=C}
其中
g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b g\left( {{x_i}} \right) = \sum\limits_{j = 1}^N {{\alpha _j}{y_j}K\left( {{x_j},{x_i}} \right)} + b g(xi)=j=1∑NαjyjK(xj,xi)+b
否则令 k = k + 1 k=k+1 k=k+1回到上一步。 - 取 α ^ = α ( k + 1 ) \hat \alpha = {\alpha ^{\left( {k + 1} \right)}} α^=α(k+1)
参考文献
《统计学习方法》