前面两篇文章讨论的都是线性分类问题,但有时分类问题是非线性的,这时可以使用非线性支持向量机。
1、核技巧
核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间(欧式空间
R
n
R^n
Rn或离散集合)对应于一个特征空间(希尔伯特空间
H
H
H),然后在特征空间里用线性分类学习方法学习分类模型。
接着介绍核函数的概念。设
X
X
X是输入空间,
H
H
H是特征空间,如果存在一个从
X
X
X到
H
H
H的映射
ϕ
(
x
)
:
X
→
H
\phi(x):X\to H
ϕ(x):X→H 使得对所有的
x
,
z
∈
X
x,z\in X
x,z∈X,函数
K
(
x
,
z
)
K(x,z)
K(x,z)满足条件
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z) 则称
K
(
x
,
z
)
K(x,z)
K(x,z)为核函数,式中
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi(x)\cdot\phi(z)
ϕ(x)⋅ϕ(z)为
ϕ
(
x
)
\phi(x)
ϕ(x)和
ϕ
(
z
)
\phi(z)
ϕ(z)的内积。
通常直接定义并计算
K
(
x
,
z
)
K(x,z)
K(x,z)比较容易,而通过
ϕ
(
x
)
\phi(x)
ϕ(x)和
ϕ
(
z
)
\phi(z)
ϕ(z)计算
K
(
x
,
z
)
K(x,z)
K(x,z)比较复杂,因此核技巧的想法是,只定义核函数
K
(
x
,
z
)
K(x,z)
K(x,z)而不显式地定义映射函数
ϕ
\phi
ϕ。
注意到在线性支持向量机的对偶问题中,无论是目标函数还是分离超平面的
w
,
b
w,b
w,b都只涉及输入实例与实例之间的内积,因此将内积
x
i
⋅
x
j
x_i\cdot x_j
xi⋅xj用
K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
K(x_i,x_j)=\phi(x_i)\cdot\phi(x_j)
K(xi,xj)=ϕ(xi)⋅ϕ(xj)来代替。当映射函数
ϕ
\phi
ϕ是非线性函数时,学习到的支持向量机是非线性分类模型。
2、正定核
核技巧通过直接定义核函数
K
(
x
,
z
)
K(x,z)
K(x,z)的表达式,避免了计算
ϕ
(
x
)
\phi(x)
ϕ(x)与
ϕ
(
z
)
\phi(z)
ϕ(z)再求取它们内积的过程,那么我们如何得知定义的这个
K
(
x
,
z
)
K(x,z)
K(x,z)是否是核函数呢?或者说,函数
K
(
x
,
z
)
K(x,z)
K(x,z)满足什么条件才能成为核函数?
假设
K
(
x
,
z
)
K(x,z)
K(x,z)是定义在
X
×
X
X\times X
X×X上的对称函数,且对任意的
x
1
,
x
2
,
⋯
 
,
x
m
∈
X
x_1,x_2,\cdots,x_m\in X
x1,x2,⋯,xm∈X,
K
(
x
,
z
)
K(x,z)
K(x,z)关于
x
1
,
x
2
,
⋯
 
,
x
m
x_1,x_2,\cdots,x_m
x1,x2,⋯,xm的
G
r
a
m
Gram
Gram矩阵是半正定的。可以依据函数
K
(
x
,
z
)
K(x,z)
K(x,z)构成一个希尔伯特空间(Hilbert space),具体步骤就不细说了,大致是:首先定义映射
ϕ
\phi
ϕ并构成向量空间
S
S
S,然后再
S
S
S上定义内积构成内积空间,最后再将
S
S
S完备化构成希尔伯特空间。
下面阐述
K
(
x
,
z
)
K(x,z)
K(x,z)是正定核的充要条件。设
K
:
X
×
X
→
R
K:X\times X\to R
K:X×X→R是对称函数,则
K
(
x
,
z
)
K(x,z)
K(x,z)是正定核的充要条件是对任意
x
i
∈
X
x_i\in X
xi∈X,
K
(
x
,
z
)
K(x,z)
K(x,z)对应的
G
r
a
m
Gram
Gram矩阵
K
=
[
K
(
x
i
,
x
j
)
]
m
×
m
K=[K(x_i,x_j)]_{m\times m}
K=[K(xi,xj)]m×m是半正定矩阵。
首先证明定理的必要性。由于
K
(
x
,
z
)
K(x,z)
K(x,z)是
X
×
X
X\times X
X×X上的正定核,存在从
X
X
X到希尔伯特空间
H
H
H的映射
ϕ
\phi
ϕ,使得
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z) 对任意
x
1
,
x
2
,
⋯
 
,
x
m
x_1,x_2,\cdots,x_m
x1,x2,⋯,xm,构造
K
(
x
,
z
)
K(x,z)
K(x,z)的
G
r
a
m
Gram
Gram矩阵
[
K
i
j
]
m
×
m
=
[
K
(
x
i
,
x
j
)
]
m
×
m
[K_{ij}]_{m\times m}=[K(x_i,x_j)]_{m\times m}
[Kij]m×m=[K(xi,xj)]m×m 对任意
c
1
,
c
2
,
⋯
 
,
c
m
∈
R
c_1,c_2,\cdots,c_m\in R
c1,c2,⋯,cm∈R,有
∑
i
,
j
=
1
m
c
i
c
j
K
i
j
=
∑
i
,
j
=
1
m
c
i
c
j
[
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
]
=
∑
i
=
1
m
c
i
ϕ
(
x
i
)
⋅
∑
j
=
1
m
c
j
ϕ
(
x
j
)
\sum_{i,j=1}^mc_ic_jK_{ij}=\sum_{i,j=1}^mc_ic_j[\phi(x_i)\cdot\phi(x_j)]=\sum_{i=1}^mc_i\phi(x_i)\cdot\sum_{j=1}^mc_j\phi(x_j)
i,j=1∑mcicjKij=i,j=1∑mcicj[ϕ(xi)⋅ϕ(xj)]=i=1∑mciϕ(xi)⋅j=1∑mcjϕ(xj) 由于内积的左右两项相等,可得
∑
i
,
j
=
1
m
c
i
c
j
K
i
j
≥
0
\sum_{i,j=1}^mc_ic_jK_{ij}\ge0
i,j=1∑mcicjKij≥0 即
K
(
x
,
z
)
K(x,z)
K(x,z)关于
x
1
,
x
2
,
⋯
 
,
x
m
x_1,x_2,\cdots,x_m
x1,x2,⋯,xm的
G
r
a
m
Gram
Gram矩阵是半正定的。
接着证明定理的充分性。已知对称函数
K
(
x
,
z
)
K(x,z)
K(x,z)对任意
x
1
,
x
2
,
⋯
 
,
x
m
x_1,x_2,\cdots,x_m
x1,x2,⋯,xm的
G
r
a
m
Gram
Gram矩阵是半正定的,根据本节开头的定理,可以构造从
X
X
X到某个希尔伯特空间
H
H
H的映射
ϕ
:
x
→
K
(
⋅
,
x
)
\phi:x\to K(\cdot,x)
ϕ:x→K(⋅,x) 由于核
K
K
K具有再生性,即
K
(
⋅
,
x
)
⋅
K
(
⋅
,
z
)
=
K
(
x
,
z
)
K(\cdot,x)\cdot K(\cdot,z)=K(x,z)
K(⋅,x)⋅K(⋅,z)=K(x,z) 因此
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z) 这表明
K
(
x
,
z
)
K(x,z)
K(x,z)是
X
×
X
X\times X
X×X上的核函数。
因此在构造核函数时,可以通过判断
K
(
x
,
z
)
K(x,z)
K(x,z)对任意
x
i
∈
X
x_i\in X
xi∈X的
G
r
a
m
Gram
Gram矩阵是否是半正定矩阵,来判断
K
(
x
,
z
)
K(x,z)
K(x,z)是否是核函数。但验证
G
r
a
m
Gram
Gram矩阵是否为半正定并不容易,因此在实际问题中往往应用已有的核函数。
3、常用核函数
常用的核函数有多项式核函数(polynomial kernel function)
K
(
x
,
z
)
=
(
x
⋅
z
+
1
)
p
K(x,z)=(x\cdot z+1)^p
K(x,z)=(x⋅z+1)p
高斯核函数(Gaussian kernel function)
K
(
x
,
z
)
=
e
−
∣
∣
x
−
z
∣
∣
2
2
σ
2
K(x,z)=e^{-\frac{||x-z||^2}{2\sigma^2}}
K(x,z)=e−2σ2∣∣x−z∣∣2
字符串核函数(string kernel function)
4、序列最小最优化算法
支持向量机的学习可形式化为求解凸二次规划问题,虽然凸二次规划问题具有全局最优解且许多最优化算法均可求解,但当训练样本容量很大时,这些算法往往变得非常低效,这便引出了序列最小最优化(sequential minimal optimization, 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
\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
αmin 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
s.t. \sum_{i=1}^N\alpha_iy_i=0
s.t. 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 SMO算法的基本思路是:由于KKT条件是该最优化问题的充要条件,如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这时子问题可以通过解析方法求解,速度大大加快。子问题的两个变量,一个是违反KKT条件最严重的一个,另一由约束条件自动确定。
由于
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N\alpha_iy_i=0
∑i=1Nαiyi=0,子问题的两个变量中只有一个是自由变量,这也是子问题同时更新两个变量的原因。
假设选择的两个变量是
α
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)是固定的,将最优化问题的目标函数与约束条件仅取与
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2有关的部分,可变为
min
α
1
,
α
2
1
2
α
1
2
K
11
+
1
2
α
2
2
K
22
+
α
1
α
2
y
1
y
2
K
12
−
(
α
1
+
α
2
)
+
α
1
y
1
∑
i
=
3
N
α
i
y
i
K
1
i
+
α
2
y
2
∑
i
=
3
N
α
i
y
i
K
2
i
\min_{\alpha_1,\alpha_2} \frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1\alpha_2y_1y_2K_{12}-(\alpha_1+\alpha_2)+\alpha_1y_1\sum_{i=3}^N\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{i=3}^N\alpha_iy_iK_{2i}
α1,α2min 21α12K11+21α22K22+α1α2y1y2K12−(α1+α2)+α1y1i=3∑NαiyiK1i+α2y2i=3∑NαiyiK2i
s
.
t
.
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
α
i
y
i
=
ς
s.t. \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^N\alpha_iy_i=\varsigma
s.t. α1y1+α2y2=−i=3∑Nαiyi=ς
0
≤
α
i
≤
C
,
i
=
1
,
2
0\le\alpha_i\le C, i=1,2
0≤αi≤C, i=1,2 先观察两个约束条件,由于只有两个变量
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2,约束可以用二维空间表示。不等式约束使
(
α
1
,
α
2
)
(\alpha_1,\alpha_2)
(α1,α2)在方形
[
0
,
C
]
×
[
0
,
C
]
[0,C]\times [0,C]
[0,C]×[0,C]内;由于
y
1
,
y
2
=
±
1
y_1,y_2=\pm 1
y1,y2=±1,等式约束使
(
α
1
,
α
2
)
(\alpha_1,\alpha_2)
(α1,α2)在平行于方形对角线的直线上,可能是斜向上的,也可能是斜向下的。
根据约束条件的特点,可以先沿着等式约束的直线求
α
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。
为表述方便,引进记号
v
i
=
∑
j
=
3
N
α
j
y
j
K
(
x
i
,
x
j
)
,
i
=
1
,
2
v_i=\sum_{j=3}^N\alpha_jy_jK(x_i,x_j), i=1,2
vi=j=3∑NαjyjK(xi,xj), i=1,2 目标函数可以写成
W
(
α
1
,
α
2
)
=
1
2
α
1
2
K
11
+
1
2
α
2
2
K
22
+
α
1
α
2
y
1
y
2
K
12
−
(
α
1
+
α
2
)
+
α
1
y
1
v
1
+
α
2
y
2
v
2
W(\alpha_1,\alpha_2)=\frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1\alpha_2y_1y_2K_{12}-(\alpha_1+\alpha_2)+\alpha_1y_1v_1+\alpha_2y_2v_2
W(α1,α2)=21α12K11+21α22K22+α1α2y1y2K12−(α1+α2)+α1y1v1+α2y2v2 由于
α
1
y
1
=
ς
−
α
2
y
2
\alpha_1y_1=\varsigma-\alpha_2y_2
α1y1=ς−α2y2,即
α
1
=
y
1
(
ς
−
α
2
y
2
)
\alpha_1=y_1(\varsigma-\alpha_2y_2)
α1=y1(ς−α2y2),代入上式得
W
(
α
2
)
=
1
2
(
ς
−
α
2
y
2
)
2
K
11
+
1
2
α
2
2
K
22
+
(
ς
−
α
2
y
2
)
α
2
y
2
K
12
−
y
1
(
ς
−
α
2
y
2
)
−
α
2
+
(
ς
−
α
2
y
2
)
v
1
+
α
2
y
2
v
2
W(\alpha_2)=\frac{1}{2}(\varsigma-\alpha_2y_2)^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+(\varsigma-\alpha_2y_2)\alpha_2y_2K_{12}-y1(\varsigma-\alpha_2y_2)-\alpha_2+(\varsigma-\alpha_2y_2)v_1+\alpha_2y_2v_2
W(α2)=21(ς−α2y2)2K11+21α22K22+(ς−α2y2)α2y2K12−y1(ς−α2y2)−α2+(ς−α2y2)v1+α2y2v2 删去与
α
2
\alpha_2
α2无关的项
W
(
α
2
)
=
−
ς
α
2
y
2
K
11
+
1
2
α
2
2
K
11
+
1
2
α
2
2
K
22
+
ς
α
2
y
2
K
12
−
α
2
2
K
12
+
y
1
α
2
y
2
−
α
2
−
α
2
y
2
v
1
+
α
2
y
2
v
2
W(\alpha_2)=-\varsigma\alpha_2y_2K_{11}+\frac{1}{2}\alpha_2^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\varsigma\alpha_2y_2K_{12}-\alpha_2^2K_{12}+y_1\alpha_2y_2-\alpha_2-\alpha_2y_2v_1+\alpha_2y_2v_2
W(α2)=−ςα2y2K11+21α22K11+21α22K22+ςα2y2K12−α22K12+y1α2y2−α2−α2y2v1+α2y2v2 合并各项可得
W
(
α
2
)
=
1
2
α
2
2
(
K
11
+
K
22
−
2
K
12
)
+
α
2
(
−
ς
y
2
K
11
+
ς
y
2
K
12
+
y
1
y
2
−
1
−
y
2
v
1
+
y
2
v
2
)
W(\alpha_2)=\frac{1}{2}\alpha_2^2(K_{11}+K_{22}-2K_{12})+\alpha_2(-\varsigma y_2K_{11}+\varsigma y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2)
W(α2)=21α22(K11+K22−2K12)+α2(−ςy2K11+ςy2K12+y1y2−1−y2v1+y2v2) 接着对
α
2
\alpha_2
α2求导,令其为0
∂
W
∂
α
2
=
α
2
(
K
11
+
K
22
−
2
K
12
)
−
ς
y
2
K
11
+
ς
y
2
K
12
+
y
1
y
2
−
1
−
y
2
v
1
+
y
2
v
2
=
0
\frac{\partial W}{\partial\alpha_2}=\alpha_2(K_{11}+K_{22}-2K_{12})-\varsigma y_2K_{11}+\varsigma y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2=0
∂α2∂W=α2(K11+K22−2K12)−ςy2K11+ςy2K12+y1y2−1−y2v1+y2v2=0 由于1可以写作
y
2
2
y_2^2
y22,上式可变为
α
2
(
K
11
+
K
22
−
2
K
12
)
=
y
2
(
y
2
−
y
1
+
ς
K
11
−
ς
K
12
+
v
1
−
v
2
)
\alpha_2(K_{11}+K_{22}-2K_{12})=y_2(y_2-y_1+\varsigma K_{11}-\varsigma K_{12}+v_1-v_2)
α2(K11+K22−2K12)=y2(y2−y1+ςK11−ςK12+v1−v2) 由于
v
1
=
∑
j
=
3
N
α
j
y
j
K
1
j
=
∑
j
=
1
N
α
j
y
j
K
1
j
−
∑
j
=
1
2
α
j
y
j
K
1
j
v_1=\sum_{j=3}^N\alpha_jy_jK_{1j}=\sum_{j=1}^{N}\alpha_jy_jK_{1j}-\sum_{j=1}^2\alpha_jy_jK_{1j}
v1=j=3∑NαjyjK1j=j=1∑NαjyjK1j−j=1∑2αjyjK1j
v
2
=
∑
j
=
3
N
α
j
y
j
K
2
j
=
∑
j
=
1
N
α
j
y
j
K
2
j
−
∑
j
=
1
2
α
j
y
j
K
2
j
v_2=\sum_{j=3}^N\alpha_jy_jK_{2j}=\sum_{j=1}^N\alpha_jy_jK_{2j}-\sum_{j=1}^2\alpha_jy_jK_{2j}
v2=j=3∑NαjyjK2j=j=1∑NαjyjK2j−j=1∑2αjyjK2j 再引进一个记号
E
i
=
∑
j
=
1
N
α
j
y
j
K
i
j
+
b
−
y
i
,
i
=
1
,
2
E_i=\sum_{j=1}^N\alpha_jy_jK_{ij}+b-y_i, i=1,2
Ei=j=1∑NαjyjKij+b−yi, i=1,2 则
v
1
,
v
2
v_1,v_2
v1,v2可表示为
v
1
=
E
1
−
b
+
y
1
−
∑
j
=
1
2
α
j
y
j
K
1
j
v_1=E_1-b+y_1-\sum_{j=1}^2\alpha_jy_jK_{1j}
v1=E1−b+y1−j=1∑2αjyjK1j
v
2
=
E
2
−
b
+
y
2
−
∑
j
=
1
2
α
j
y
j
K
2
j
v_2=E_2-b+y_2-\sum_{j=1}^2\alpha_jy_jK_{2j}
v2=E2−b+y2−j=1∑2αjyjK2j 代入求导所得等式中
α
2
(
K
11
+
K
22
−
2
K
12
)
=
y
2
(
ς
K
11
−
ς
K
12
+
E
1
−
E
2
−
∑
j
=
1
2
α
j
y
j
K
1
j
+
∑
j
=
1
2
α
j
y
j
K
2
j
)
\alpha_2(K_{11}+K_{22}-2K_{12})=y_2(\varsigma K_{11}-\varsigma K_{12}+E_1-E_2-\sum_{j=1}^2\alpha_jy_jK_{1j}+\sum_{j=1}^2\alpha_jy_jK_{2j})
α2(K11+K22−2K12)=y2(ςK11−ςK12+E1−E2−j=1∑2αjyjK1j+j=1∑2αjyjK2j) 将
ς
=
α
1
o
l
d
y
1
+
α
2
o
l
d
y
2
\varsigma=\alpha_1^{old}y_1+\alpha_2^{old}y_2
ς=α1oldy1+α2oldy2代入式中,得
α
2
n
e
w
,
u
n
c
(
K
11
+
K
22
−
2
K
12
)
=
(
K
11
+
K
22
−
2
K
12
)
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
\alpha_2^{new,unc}(K_{11}+K_{22}-2K_{12})=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2)
α2new,unc(K11+K22−2K12)=(K11+K22−2K12)α2old+y2(E1−E2) 即
α
2
n
e
w
,
u
n
c
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
K
11
+
K
22
−
2
K
12
\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{K_{11}+K_{22}-2K_{12}}
α2new,unc=α2old+K11+K22−2K12y2(E1−E2) 这便是未经剪辑的解,经剪辑后
α
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
L
,
α
2
n
e
w
,
u
n
c
<
L
\alpha_2^{new}=\left\{\begin{array}{rcl}H,&\alpha_2^{new,unc}>H\\\alpha_2^{new,unc},&L\le\alpha_2^{new,unc}\le H\\L,&\alpha_2^{new,unc}<L\end{array}\right.
α2new=⎩⎨⎧H,α2new,unc,L,α2new,unc>HL≤α2new,unc≤Hα2new,unc<L 式中,
L
L
L与
H
H
H是
α
2
n
e
w
\alpha_2^{new}
α2new的上下界,即
L
≤
α
2
n
e
w
≤
H
L\le\alpha_2^{new}\le H
L≤α2new≤H 由于
(
α
1
,
α
2
)
(\alpha_1,\alpha_2)
(α1,α2)在一条平行于方块对角线的直线上,所以这里
α
2
\alpha_2
α2不是简单的满足
0
≤
α
2
≤
C
0\le\alpha_2\le C
0≤α2≤C就可以了。如果
y
1
̸
=
y
2
y_1\not=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(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
=
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), H=\min(C,\alpha_2^{old}+\alpha_1^{old})
L=max(0,α2old+α1old−C), H=min(C,α2old+α1old) 最后由
α
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_1y_2(\alpha_2^{old}-\alpha_2^{new})
α1new=α1old+y1y2(α2old−α2new) 接下来讨论SMO算法的两个变量具体怎么选择。
首先是第一个变量的选择。在上一篇文章里讲述了线性支持向量机的KKT条件,例如其中的KKT对偶互补条件
α
i
∗
[
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
+
ξ
i
∗
]
=
0
\alpha_i^*[y_i(w^*\cdot x_i+b^*)-1+\xi_i^*]=0
αi∗[yi(w∗⋅xi+b∗)−1+ξi∗]=0 其中
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
w^*=\sum_{i=1}^N\alpha_i^*y_ix_i
w∗=i=1∑Nαi∗yixi 将上面的KKT对偶互补条件改造成核函数形式
α
i
∗
[
y
i
(
∑
j
=
1
N
α
j
∗
y
j
K
(
x
j
,
x
i
)
+
b
∗
)
−
1
+
ξ
i
∗
]
=
0
\alpha_i^*[y_i(\sum_{j=1}^N\alpha_j^*y_jK(x_j,x_i)+b^*)-1+\xi_i^*]=0
αi∗[yi(j=1∑Nαj∗yjK(xj,xi)+b∗)−1+ξi∗]=0 令
g
(
x
i
)
=
∑
j
=
1
N
α
j
y
j
K
(
x
i
,
x
j
)
+
b
g(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b
g(xi)=j=1∑NαjyjK(xi,xj)+b 则KKT对偶互补条件为
α
i
[
y
i
g
(
x
i
)
−
1
+
ξ
i
]
=
0
\alpha_i[y_ig(x_i)-1+\xi_i]=0
αi[yig(xi)−1+ξi]=0 若
α
1
=
0
\alpha_1=0
α1=0,考虑到下面的另外两个KKT条件
y
i
g
(
x
i
)
−
1
+
ξ
i
≥
0
y_ig(x_i)-1+\xi_i\ge0
yig(xi)−1+ξi≥0
ξ
i
≥
0
\xi_i\ge0
ξi≥0 可以得到
y
i
g
(
x
i
)
≥
1
−
ξ
i
≥
1
y_ig(x_i)\ge1-\xi_i\ge1
yig(xi)≥1−ξi≥1 若
0
<
α
1
<
C
0<\alpha_1<C
0<α1<C,根据KKT的对偶互补条件有
y
i
g
(
x
i
)
−
1
+
ξ
i
=
0
y_ig(x_i)-1+\xi_i=0
yig(xi)−1+ξi=0 而结合下面这个KKT条件
▽
ξ
i
L
(
w
,
b
,
ξ
i
,
α
i
,
μ
i
)
=
C
−
α
i
−
μ
i
=
0
\bigtriangledown_{\xi_i}L(w,b,\xi_i,\alpha_i,\mu_i)=C-\alpha_i-\mu_i=0
▽ξiL(w,b,ξi,αi,μi)=C−αi−μi=0 又有
μ
i
=
C
−
α
i
>
0
\mu_i=C-\alpha_i>0
μi=C−αi>0 于是,根据另一个KKT条件
μ
i
ξ
i
=
0
\mu_i\xi_i=0
μiξi=0 可以推出
ξ
i
=
0
\xi_i=0
ξi=0 这样,就得到了
y
i
g
(
x
i
)
=
1
−
ξ
i
=
1
y_ig(x_i)=1-\xi_i=1
yig(xi)=1−ξi=1 若
α
i
=
C
\alpha_i=C
αi=C,同样根据KKT的对偶互补条件有
y
i
g
(
x
i
)
−
1
+
ξ
i
=
0
y_ig(x_i)-1+\xi_i=0
yig(xi)−1+ξi=0 根据上面提到的另一个KKT条件,有
μ
i
=
C
−
α
i
=
0
\mu_i=C-\alpha_i=0
μi=C−αi=0 这样,
ξ
i
\xi_i
ξi不一定要为0了,其约束为
ξ
i
≥
0
\xi_i\ge0
ξi≥0 因此可以得到
y
i
g
(
x
i
)
=
1
−
ξ
i
≤
1
y_ig(x_i)=1-\xi_i\le1
yig(xi)=1−ξi≤1 总结一下,便是选第一个变量的时候,要考察各样本点是否满足如下KKT条件,找出违反KKT条件最严重的样本点
α
i
=
0
⇔
y
i
g
(
x
i
)
≥
1
\alpha_i=0\Leftrightarrow y_ig(x_i)\ge1
αi=0⇔yig(xi)≥1
0
<
α
i
<
C
⇔
y
i
g
(
x
i
)
=
1
0<\alpha_i<C\Leftrightarrow y_ig(x_i)=1
0<αi<C⇔yig(xi)=1
α
i
=
C
⇔
y
i
g
(
x
i
)
≤
1
\alpha_i=C\Leftrightarrow y_ig(x_i)\le1
αi=C⇔yig(xi)≤1 SMO称选择第一个变量的过程为外层循环,外层循环首先遍历所有满足条件
0
<
α
i
<
C
0<\alpha_i<C
0<αi<C的样本点,即在间隔边界上的支持向量点。如果它们都满足KKT条件,那么遍历整个训练集,找出不满足KKT条件的样本点。
SMO称选择第二个变量的过程为内层循环,假设已找到了第一个变量
α
1
\alpha_1
α1,第二个变量选择的标准是希望能使
α
2
\alpha_2
α2有足够大的变化。上面有公式
α
2
n
e
w
,
u
n
c
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
K
11
+
K
22
−
2
K
12
\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{K_{11}+K_{22}-2K_{12}}
α2new,unc=α2old+K11+K22−2K12y2(E1−E2) 可以看到,
α
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∣最大。具体的,如果
E
1
>
0
E_1>0
E1>0,就选最小的
E
i
E_i
Ei作为
E
2
E_2
E2;如果
E
1
<
0
E_1<0
E1<0,就选最大的
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,则放弃当前已选出的
α
1
\alpha_1
α1,通过外层循环找另外的
α
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_{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_iy_iK_{i1}-\alpha_1^{new}y_1K_{11}-\alpha_2^{new}y_2K_{21}
b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21 同理可得
b
2
n
e
w
b_2^{new}
b2new的表达式。如果
α
1
n
e
w
,
α
2
n
e
w
\alpha_1^{new},\alpha_2^{new}
α1new,α2new同时满足
0
<
α
i
n
e
w
<
C
0<\alpha_i^{new}<C
0<αinew<C,那么
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
C
C,那么取
b
1
n
e
w
b_1^{new}
b1new和
b
2
n
e
w
b_2^{new}
b2new的中点作为
b
n
e
w
b^{new}
bnew。
接着看
E
i
E_i
Ei的更新方法,根据
E
i
E_i
Ei与
g
(
x
i
)
g(x_i)
g(xi)的定义,有
E
1
=
g
(
x
1
)
−
y
1
=
∑
j
=
1
N
α
j
y
j
K
j
1
+
b
−
y
i
E_1=g(x_1)-y_1=\sum_{j=1}^N\alpha_jy_jK_{j1}+b-y_i
E1=g(x1)−y1=j=1∑NαjyjKj1+b−yi 即
E
i
E_i
Ei的更新规则如下
E
i
n
e
w
=
∑
S
y
j
α
j
K
(
x
i
,
x
j
)
+
b
n
e
w
−
y
i
E_i^{new}=\sum_Sy_j\alpha_jK(x_i,x_j)+b^{new}-y_i
Einew=S∑yjαjK(xi,xj)+bnew−yi 式中
S
S
S是所有支持向量
x
j
x_j
xj的集合。