全称:序列最小最优化算法(sequential minimal optimization)
推导
已知 SVM 的目标函数为:
m
i
n
α
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
min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \sum_{i=1}^N\alpha_iy_i=0 \\ 0 \leq \alpha_i \leq C, i=1,2,...,N
minα21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N
由约束条件可知,对两个变量
α
1
,
α
2
\alpha1, \alpha2
α1,α2,有:
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
α
n
y
n
\alpha_1y_1 + \alpha_2y_2 = -\sum_{i=3}^N\alpha_ny_n
α1y1+α2y2=−i=3∑Nαnyn
令等式右边为一个常数 k(自己设),再将
α
2
\alpha_2
α2 用
α
1
\alpha_1
α1 表示,则原始问题变成单变量二次规划问题的解。
将原始问题表示成由
α
1
,
α
2
\alpha_1, \alpha_2
α1,α2 表示的表示式,如下所示:
原
式
=
1
2
α
1
2
K
11
+
1
2
α
2
2
K
22
+
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
+
1
2
∑
i
=
3
N
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
i
j
−
∑
i
=
3
N
α
i
原式 = \frac{1}{2} \alpha_1^2K_{11} +\frac{1}{2}\alpha_2^2K_{22} + y_1y_2K_{12}\alpha_1\alpha_2 -(\alpha_1 + \alpha_2) + y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1} + y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2} + \frac{1}{2}\sum_{i=3}^N\sum_{j=3}^{N}\alpha_i\alpha_jy_iy_jK_{ij} - \sum_{i=3}^N\alpha_i
原式=21α12K11+21α22K22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2+21i=3∑Nj=3∑NαiαjyiyjKij−i=3∑Nαi
其中令最后两项
1
2
∑
i
=
3
N
∑
j
=
3
N
α
i
α
j
y
i
y
j
K
i
j
−
∑
i
=
3
N
α
i
=
c
o
n
s
t
a
n
t
\frac{1}{2}\sum_{i=3}^N\sum_{j=3}^{N}\alpha_i\alpha_jy_iy_jK_{ij} - \sum_{i=3}^N\alpha_i = constant
21∑i=3N∑j=3NαiαjyiyjKij−∑i=3Nαi=constant,令
v
i
=
∑
j
=
3
N
y
j
α
j
K
i
j
v_i = \sum_{j=3}^N y_j\alpha_j K_{ij}
vi=∑j=3NyjαjKij,
那么
原
式
=
1
2
α
1
2
K
11
+
1
2
α
2
2
K
22
+
y
1
y
2
K
12
α
1
α
2
−
(
α
1
+
α
2
)
+
y
1
α
1
v
1
+
y
2
α
2
v
2
+
c
o
n
s
t
a
n
t
原式= \frac{1}{2} \alpha_1^2K_{11} +\frac{1}{2}\alpha_2^2K_{22} + y_1y_2K_{12}\alpha_1\alpha_2 -(\alpha_1 + \alpha_2) + y_1\alpha_1v_1 + y_2\alpha_2v_2 + constant
原式=21α12K11+21α22K22+y1y2K12α1α2−(α1+α2)+y1α1v1+y2α2v2+constant
将
α
1
\alpha_1
α1 用
α
2
\alpha_2
α2 表示,再带入原式:
m
i
n
Φ
(
α
2
)
=
1
2
(
k
−
y
2
α
2
)
2
K
11
+
1
2
α
2
2
K
22
+
y
2
K
12
(
k
−
y
2
α
2
)
α
2
−
(
k
−
y
2
α
2
)
y
1
−
α
2
+
(
k
−
y
2
α
2
)
v
1
+
y
2
α
2
v
2
min\Phi(\alpha_2) = \frac{1}{2}(k-y_2\alpha_2)^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+y_2K_{12}(k-y_2\alpha_2)\alpha_2-(k-y_2\alpha_2)y_1-\alpha_2+(k-y_2\alpha_2)v_1 + y_2\alpha_2v_2
minΦ(α2)=21(k−y2α2)2K11+21α22K22+y2K12(k−y2α2)α2−(k−y2α2)y1−α2+(k−y2α2)v1+y2α2v2
求偏导:
∂
Φ
(
α
2
)
∂
α
2
=
(
K
11
+
K
22
−
2
K
12
)
α
2
−
K
11
k
y
2
+
K
12
k
y
2
+
y
1
y
2
−
1
−
v
1
y
2
+
v
2
y
2
=
0
\frac{\partial \Phi(\alpha_2)}{\partial \alpha_2} = (K_{11}+K_{22}-2K_{12})\alpha_2-K_{11}ky_2+K_{12}ky_2+y_1y_2-1-v_1y_2+v_2y_2=0
∂α2∂Φ(α2)=(K11+K22−2K12)α2−K11ky2+K12ky2+y1y2−1−v1y2+v2y2=0
令
f
(
x
)
=
∑
i
=
1
N
α
i
y
i
K
(
x
i
,
x
)
+
b
f(x) = \sum_{i=1}^N\alpha_iy_iK(x_i,x) + b
f(x)=i=1∑NαiyiK(xi,x)+b
那么:
v
1
=
f
(
x
1
)
−
∑
j
=
1
2
y
j
α
j
K
1
j
−
b
v
2
=
f
(
x
2
)
−
∑
j
=
1
2
y
j
α
j
K
2
j
−
b
v_1=f(x_1) - \sum_{j=1}^2y_j\alpha_jK_{1j} - b \\ v_2=f(x_2) - \sum_{j=1}^2y_j\alpha_jK_{2j} - b
v1=f(x1)−j=1∑2yjαjK1j−bv2=f(x2)−j=1∑2yjαjK2j−b
将
k
=
α
1
y
1
+
α
2
y
2
k = \alpha_1y_1 + \alpha_2y_2
k=α1y1+α2y2带入上述偏导式:
(
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
+
f
(
x
1
)
−
f
(
x
2
)
)
(K_{11}+K_{22}-2K_{12})\alpha_2^{new,unc} = y_2((K_{11}+K_{22}-2K_{12})\alpha_2^{old}y_2+y_2-y_1+f(x_1)-f(x_2))
(K11+K22−2K12)α2new,unc=y2((K11+K22−2K12)α2oldy2+y2−y1+f(x1)−f(x2))
其中
a
l
p
h
a
2
n
e
w
,
u
n
c
alpha_2^{new,unc}
alpha2new,unc 代表优化后的未裁剪的
α
2
\alpha_2
α2,对应优化前的
α
2
o
l
d
\alpha_2^{old}
α2old。
令:
误
差
E
i
=
f
(
x
i
)
−
y
i
,
η
=
K
11
+
K
22
−
2
K
12
误差 \ \ E_i=f(x_i)- y_i, \\ \eta=K_{11}+K_{22}-2K_{12}
误差 Ei=f(xi)−yi,η=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(E_1-E_2)}{\eta}
α2new,unc=α2old+ηy2(E1−E2)
因为
α
i
≤
C
\alpha_i \leq C
αi≤C, 所以
α
1
,
α
2
\alpha_1, \alpha_2
α1,α2 的约束可以表示成如下两个图形:
原本的约束为:
0
≤
α
i
≤
C
0 \leq \alpha_i \leq C
0≤αi≤C, 现在变为
L
≤
α
i
≤
H
L \leq \alpha_i \leq H
L≤αi≤H.
L, H分别为上图中
α
2
\alpha_2
α2 的两个边界点。
若
y
1
≠
y
2
y_1 \neq y_2
y1̸=y2,则:
L
=
m
a
x
(
0
,
α
2
o
l
d
−
α
1
o
l
d
)
,
H
=
m
i
n
(
C
,
C
+
α
2
o
l
d
−
α
1
o
l
d
)
L = max(0, \alpha_2^{old}-\alpha_1^{old}), 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, 则:
L
=
m
a
x
(
0
,
a
2
o
l
d
+
α
1
o
l
d
−
C
)
,
H
=
m
i
n
(
C
,
α
2
o
l
d
+
α
1
o
l
d
)
L = max(0, a_2^{old} + \alpha_1^{old} - C), H = min(C, \alpha_2^{old} + \alpha_1^{old})
L=max(0,a2old+α1old−C),H=min(C,α2old+α1old)
那么经剪辑后:
α
2
=
{
H
,
α
2
n
e
w
,
u
n
c
>
H
a
l
p
h
a
2
n
e
w
,
u
n
c
,
L
≤
α
2
n
e
w
,
u
n
c
≤
H
L
,
α
2
n
e
w
,
u
n
c
<
H
\alpha_2=\begin{cases} H, \ \ \alpha_2^{new, unc} >H \\ alpha_2^{new, unc}, \ \ L \leq \alpha_2^{new,unc}\leq H \\ L, \ \ \alpha_2^{new,unc}<H \end{cases}
α2=⎩⎪⎨⎪⎧H, α2new,unc>Halpha2new,unc, L≤α2new,unc≤HL, α2new,unc<H
由
α
1
o
l
d
y
1
+
α
2
o
l
d
=
α
1
n
e
w
y
1
+
α
2
n
e
w
\alpha_1^{old}y_1+\alpha_2^{old} = \alpha_1^{new}y_1+\alpha_2^{new}
α1oldy1+α2old=α1newy1+α2new ,得:
α
1
n
e
w
=
α
1
o
l
d
+
y
1
y
2
α
2
n
e
w
\alpha_1^{new} = \alpha_1^{old} + y_1y_2\alpha_2^{new}
α1new=α1old+y1y2α2new
有了变量的求解公式之后,就是如何选择变量了。
首先要理解 smo 算法的思路:如果所有变量都满足 KKT 条件,那么最优化问题的解就得到了。(关于 kkt 条件,可以看这篇文章:http://jacoxu.com/最优化理论与kkt条件/)
那么在我们选择的两个变量中,至少有一个是违反 kkt 条件的。对另一个变量,我们希望它是目标函数值减小得最快,但这样比较复杂,第二个变量的选择标准是能够有足够大的变化。
因为
α
2
\alpha_2
α2 依赖于
∣
E
1
−
E
2
∣
|E_1-E_2|
∣E1−E2∣,所以选择使
∣
E
1
−
E
2
∣
|E_1 - E_2|
∣E1−E2∣ 变化最大的
α
2
\alpha_2
α2。
计算 b 值
每次完成优化后,都要重新计算 b。
当
0
<
α
1
n
e
w
<
C
0 < \alpha_1^{new} < C
0<α1new<C 时,满足
y
i
f
(
x
i
)
=
1
y_if(x_i) = 1
yif(xi)=1(此时所有满足条件的点为支持向量),即:
∑
i
=
1
N
α
i
y
i
K
i
1
+
b
=
y
1
\sum_{i=1}^N\alpha_iy_iK_{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_{i=3}^N\alpha_i y_i K_{i1} - \alpha_1^{new}y_1K_{11} - \alpha_2^{new}y_2K_{21}
b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21
又:
E
1
=
f
(
x
1
)
−
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
o
l
d
−
y
1
E_1 = f(x_1)-y_1 =\sum_{i=3}^N\alpha_i y_i K_{i1} + \alpha_1^{new}y_1K_{11} +\alpha_2^{new}y_2K_{21}+b^{old} - y_1
E1=f(x1)−y1=i=3∑NαiyiKi1+α1newy1K11+α2newy2K21+bold−y1
所以:
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_1K_{11}(\alpha_1^{new}-\alpha_1^{old} - y_2K_{21}(\alpha_2^{new}-\alpha_2^{old}) + b^{old})
b1new=−E1−y1K11(α1new−α1old−y2K21(α2new−α2old)+bold)
同理可得
b
2
n
e
w
b_2^{new}
b2new。
对求得的所有
b
i
b_i
bi求平均值。
先写到这里,并不完善,待更新。。。
参考:
周志华 《机器学习》
李航 《统计学习方法》
https://blog.youkuaiyun.com/luoshixian099/article/details/51227754