一、理论篇
1、概述
支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机以及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
2、间隔与支持向量
【例子】假如在下面的样本空间中,我们想寻找一个超平面,将不同类别的样本分开。但是我们发现将训练样本分开的超平面可能有很多,选择哪一个好呢?
其实,应选择正中间红色的超平面,因为它容忍性好,鲁棒性高,泛化能力最强。
我们把这个超平面方程定义为:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0。
样本空间中任意点
x
x
x到超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的距离为
r
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
r=\cfrac{|w^Tx+b|}{||w||}
r=∣∣w∣∣∣wTx+b∣
假如超平面能够将样本正确分类,即当
y
i
=
+
1
y_i=+1
yi=+1时,
w
T
x
i
+
b
>
0
w^Tx_i+b>0
wTxi+b>0;当
y
i
=
−
1
y_i=-1
yi=−1时,
w
T
x
i
+
b
<
0
w^Tx_i+b<0
wTxi+b<0。
根据上面的两种情况,关系式
y
i
(
w
T
x
i
+
b
)
>
0
y_i(w^Tx_i+b)>0
yi(wTxi+b)>0永远成立。
如果当
w
w
w和
b
b
b变成它们原来的倍数时,
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0代表同一个超平面。为了后面能解出唯一解,我们需要缩放权重和偏差的比例。为了便于推导,选择一个合适的缩放比例,得到下面式子:
min
i
=
1
,
2
,
.
.
.
,
m
y
i
(
w
T
x
i
+
b
)
=
1
\min_{i=1,2,...,m}y_i(w^Tx_i+b)=1
i=1,2,...,mminyi(wTxi+b)=1
证明如下:
(
b
,
w
)
(b,w)
(b,w)和
(
b
/
c
,
w
/
c
)
(b/c,w/c)
(b/c,w/c)代表同一个超平面(
c
>
0
c>0
c>0),令
c
=
min
i
=
1
,
2
,
.
.
.
,
m
y
i
(
w
T
x
i
+
b
)
>
0
c=\min_{i=1,2,...,m}y_i(w^Tx_i+b)>0
c=i=1,2,...,mminyi(wTxi+b)>0
将
(
b
/
c
,
w
/
c
)
(b/c,w/c)
(b/c,w/c)代入上式的
(
b
,
w
)
(b,w)
(b,w)得
min
i
=
1
,
2
,
.
.
.
,
m
y
i
(
w
T
c
x
i
+
b
c
)
=
1
c
min
i
=
1
,
2
,
.
.
.
,
m
y
i
(
w
T
x
i
+
b
)
=
c
c
=
1
\min_{i=1,2,...,m}y_i(\frac{w^T}{c}x_i+\frac{b}{c})=\frac{1}{c}\min_{i=1,2,...,m}y_i(w^Tx_i+b)=\frac{c}{c}=1
i=1,2,...,mminyi(cwTxi+cb)=c1i=1,2,...,mminyi(wTxi+b)=cc=1
由于
(
b
,
w
)
(b,w)
(b,w)和
(
b
/
c
,
w
/
c
)
(b/c,w/c)
(b/c,w/c)等价,则
min
i
=
1
,
2
,
.
.
.
,
m
y
i
(
w
T
x
i
+
b
)
=
1
\min_{i=1,2,...,m}y_i(w^Tx_i+b)=1
i=1,2,...,mminyi(wTxi+b)=1
即
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(w^Tx_i+b)≥1
yi(wTxi+b)≥1
如下图所示,距离超平面最近的这几个样本点使得上面式子的等号成立,我们称之为“支持向量”,两个异类支持向量到超平面的距离之和为
γ
=
2
∣
∣
w
∣
∣
γ=\cfrac{2}{||w||}
γ=∣∣w∣∣2,我们称之为“间隔”。
我们的目标,就是要找到“最大间隔”的划分超平面,并且满足
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(w^Tx_i+b)≥1
yi(wTxi+b)≥1约束的参数
w
w
w和
b
b
b,使得
γ
γ
γ最大,即
max
w
,
b
2
∣
∣
w
∣
∣
\max_{w,b}^{} \cfrac{2}{||w||}
w,bmax∣∣w∣∣2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
s.t.y_i(w^Tx_i+b)≥1,i=1,2,...,m
s.t.yi(wTxi+b)≥1,i=1,2,...,m
上面的不等式约束可以等价为
min
w
,
b
1
2
w
T
w
\min_{w,b}^{}\cfrac{1}{2}w^Tw
w,bmin21wTw
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
s.t.y_i(w^Tx_i+b)≥1,i=1,2,...,m
s.t.yi(wTxi+b)≥1,i=1,2,...,m
这就是支持向量机的基本型,即SVM的最终优化问题,也被称之为硬间隔SVM原始问题。
由于目标函数是一个关于
w
w
w的二次函数,通常这类问题称作二次规划(QP)。
3、优化问题
3.1 拉格朗日乘子法
最优规划分为无约束规划和约束规划两种,其表现形式如下所示:
无约束规划:
min
x
f
(
x
)
\min_{x}^{}f(x)
xminf(x)
约束规划:
min
x
f
(
x
)
\min_{x}^{} f(x)
xminf(x)
s
.
t
.
①
g
i
(
x
)
≤
0
,
i
=
1
,
2
,
.
.
.
,
k
s.t.①g_i(x)≤0,i=1,2,...,k
s.t.①gi(x)≤0,i=1,2,...,k
②
h
i
(
x
)
=
0
,
i
=
1
,
2
,
.
.
.
,
l
②h_i(x)=0,i=1,2,...,l
②hi(x)=0,i=1,2,...,l
约束规划比无约束规划问题难,而拉格朗日量可以将约束规划转换成无约束规划,具体定义如下:(拉格朗日函数)
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
k
α
i
g
i
(
x
)
+
∑
i
=
1
l
β
i
h
i
(
x
)
L(x,α,β)=f(x)+\sum_{i=1}^kα_ig_i(x)+\sum_{i=1}^lβ_ih_i(x)
L(x,α,β)=f(x)+i=1∑kαigi(x)+i=1∑lβihi(x)
拉格朗日量是
x
,
α
,
β
x,α,β
x,α,β的函数,
α
≥
0
α≥0
α≥0。
如果对于
L
L
L只在
α
,
β
α,β
α,β(没有包括
x
x
x)上求最大值
θ
θ
θ,那么
θ
θ
θ其实是
x
x
x的一个函数,记作
θ
(
x
)
θ(x)
θ(x):
θ
(
x
)
=
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
θ(x)=\max_{α,β:α_i≥0}L(x,α,β)
θ(x)=α,β:αi≥0maxL(x,α,β)
我们会发现,其实无约束最小化
θ
(
x
)
θ(x)
θ(x)等价于有约束最小化
f
(
x
)
f(x)
f(x),具体证明如下。
情况1:当
x
x
x违反边界条件(
g
i
(
x
)
>
0
,
h
i
(
x
)
≠
0
g_i(x)>0,h_i(x)≠0
gi(x)>0,hi(x)=0)时
θ
(
x
)
=
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
=
max
α
,
β
:
α
i
≥
0
[
f
(
x
)
+
∑
i
=
1
k
α
i
g
i
(
x
)
+
∑
i
=
1
l
β
i
h
i
(
x
)
]
=
∞
θ(x)=\max_{α,β:α_i≥0}L(x,α,β)=\max_{α,β:α_i≥0}[f(x)+\sum_{i=1}^kα_ig_i(x)+\sum_{i=1}^lβ_ih_i(x)]=∞
θ(x)=α,β:αi≥0maxL(x,α,β)=α,β:αi≥0max[f(x)+i=1∑kαigi(x)+i=1∑lβihi(x)]=∞
情况2:当
x
x
x满足边界条件(
g
i
(
x
)
≤
0
,
h
i
(
x
)
=
0
g_i(x)≤0,h_i(x)=0
gi(x)≤0,hi(x)=0)时
θ
(
x
)
=
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
=
max
α
,
β
:
α
i
≥
0
[
f
(
x
)
+
∑
i
=
1
k
α
i
g
i
(
x
)
]
=
f
(
x
)
θ(x)=\max_{α,β:α_i≥0}L(x,α,β)=\max_{α,β:α_i≥0}[f(x)+\sum_{i=1}^kα_ig_i(x)]=f(x)
θ(x)=α,β:αi≥0maxL(x,α,β)=α,β:αi≥0max[f(x)+i=1∑kαigi(x)]=f(x)
综上所述,
θ
(
x
)
=
{
∞
g
i
(
x
)
>
0
,
h
i
(
x
)
≠
0
f
(
x
)
g
i
(
x
)
≤
0
,
h
i
(
x
)
=
0
θ(x)=\begin{cases} ∞& \text{$g_i(x)>0,h_i(x)≠0$}\\ f(x)& \text{$g_i(x)≤0,h_i(x)=0$}\\ \end{cases}
θ(x)={∞f(x)gi(x)>0,hi(x)=0gi(x)≤0,hi(x)=0
因此,无约束最小化
θ
(
x
)
θ(x)
θ(x)等价于有约束最小化
f
(
x
)
f(x)
f(x),其数学表达形式如下所示:
约束规划
f
(
x
)
f(x)
f(x):
min
x
f
(
x
)
\min_{x}^{} f(x)
xminf(x)
s
.
t
.
①
g
i
(
x
)
≤
0
,
i
=
1
,
2
,
.
.
.
,
k
s.t.①g_i(x)≤0,i=1,2,...,k
s.t.①gi(x)≤0,i=1,2,...,k
②
h
i
(
x
)
=
0
,
i
=
1
,
2
,
.
.
.
,
l
②h_i(x)=0,i=1,2,...,l
②hi(x)=0,i=1,2,...,l
无约束规划
θ
(
x
)
θ(x)
θ(x):
min
x
θ
(
x
)
=
min
x
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
\min_{x}^{}θ(x)=\min_x\max_{α,β:α_i≥0}L(x,α,β)
xminθ(x)=xminα,β:αi≥0maxL(x,α,β)
结论:对于一个约束规划问题,将其用拉格朗日量转换成容易求解的无约束规划问题即可,两者是等价的。
3.2 原始和对偶问题
上面介绍的无约束规划形式被叫作“原始形式(Primal)”,与其对应的是“对偶形式(Dual)”。
原始问题:先在
α
α
α,
β
β
β上求最大值,再在
x
x
x上求最小值。
min
x
θ
P
(
x
)
=
min
x
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
\min_{x}^{}θ_P(x)=\min_x\max_{α,β:α_i≥0}L(x,α,β)
xminθP(x)=xminα,β:αi≥0maxL(x,α,β)
对偶问题:先在
x
x
x上求最小值,再在
α
α
α,
β
β
β上求最大值。
max
α
,
β
:
α
i
≥
0
θ
D
(
x
)
=
max
α
,
β
:
α
i
≥
0
min
x
L
(
x
,
α
,
β
)
\max_{α,β:α_i≥0}^{}θ_D(x)=\max_{α,β:α_i≥0}\min_xL(x,α,β)
α,β:αi≥0maxθD(x)=α,β:αi≥0maxxminL(x,α,β)
下面的不等式恒成立:(最大的最小值永远大于或等于最小的最大值)
min
x
θ
P
(
x
)
≥
max
α
,
β
:
α
i
≥
0
θ
D
(
x
)
\min_{x}^{}θ_P(x)≥\max_{α,β:α_i≥0}^{}θ_D(x)
xminθP(x)≥α,β:αi≥0maxθD(x)
min
x
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
≥
max
α
,
β
:
α
i
≥
0
min
x
L
(
x
,
α
,
β
)
\min_x\max_{α,β:α_i≥0}L(x,α,β)≥\max_{α,β:α_i≥0}\min_xL(x,α,β)
xminα,β:αi≥0maxL(x,α,β)≥α,β:αi≥0maxxminL(x,α,β)
原始与对偶关系的证明:【略】
上面的不等式具有的特性被称为弱对偶性,即对偶问题的最优解永远小于或等于原始问题的最优解。在实际问题中,如果有以下3个额外条件,则有强对偶等式:
min
x
max
α
,
β
:
α
i
≥
0
L
(
x
,
α
,
β
)
=
max
α
,
β
:
α
i
≥
0
min
x
L
(
x
,
α
,
β
)
\min_x\max_{α,β:α_i≥0}L(x,α,β)=\max_{α,β:α_i≥0}\min_xL(x,α,β)
xminα,β:αi≥0maxL(x,α,β)=α,β:αi≥0maxxminL(x,α,β)
其中3个条件是
{
①
原始问题的目标函数是凸函数
②
原始问题有解
③
线性限制条件
\begin{cases} ①& \text{原始问题的目标函数是凸函数}\\ ②& \text{原始问题有解}\\ ③& \text{线性限制条件}\\ \end{cases}
⎩⎪⎨⎪⎧①②③原始问题的目标函数是凸函数原始问题有解线性限制条件
强对偶条件意味着原始问题和对偶问题的最优解是一样的。假设
x
∗
x^*
x∗,
α
∗
α^*
α∗,
β
∗
β^*
β∗是最优解,它们满足KKT条件。
原始可行性条件 | g i ( x ∗ ) ≤ 0 , i = 1 , 2 , . . . , k g_i(x^*)≤0,i=1,2,...,k gi(x∗)≤0,i=1,2,...,k h i ( x ∗ ) = 0 , i = 1 , 2 , . . . , l h_i(x^*)=0,i=1,2,...,l hi(x∗)=0,i=1,2,...,l |
---|---|
对偶可行性条件 | α i ∗ ≥ 0 , i = 1 , 2 , . . . , k α_i^*≥0,i=1,2,...,k αi∗≥0,i=1,2,...,k |
驻点条件 | ∂ L ( x ∗ , α ∗ , β ∗ ) ∂ x ( i ) = 0 , i = 1 , 2 , . . . , m \frac{∂L(x^*,α^*,β^*)}{∂x^{(i)}}=0,i=1,2,...,m ∂x(i)∂L(x∗,α∗,β∗)=0,i=1,2,...,m |
互补松弛条件 | α i ∗ g i ( x ∗ ) = 0 , i = 1 , 2 , . . . , k α_i^*g_i(x^*)=0,i=1,2,...,k αi∗gi(x∗)=0,i=1,2,...,k |
结论:如果满足强对偶条件,则可以不好解的原始问题转换成好解的对偶问题,再用KKT条件求解。
4、硬间隔SVM
回顾硬间隔SVM原始问题:
min
w
,
b
1
2
w
T
w
\min_{w,b}^{}\cfrac{1}{2}w^Tw
w,bmin21wTw
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
s.t.y_i(w^Tx_i+b)≥1,i=1,2,...,m
s.t.yi(wTxi+b)≥1,i=1,2,...,m
支持向量机的基本型属于一个凸二次规划问题,我们通过使用拉格朗日乘子法转化为无约束规划问题,即对每一条约束添加拉格朗日乘子
α
i
≥
0
α_i≥0
αi≥0,则该问题的拉格朗日函数可以写为
令
L
(
w
,
b
,
α
)
L(w,b,α)
L(w,b,α)对
w
w
w和
b
b
b的偏导为零可得
将上面两个式子代入
L
(
w
,
b
,
α
)
L(w,b,α)
L(w,b,α),将
w
w
w和
b
b
b消去,可得
【原问题转化为对偶问题】
所以
由此可以求出最优解
α
∗
α^*
α∗,求出该值后将其带入可以得到:
根据上面的推导得到硬间隔SVM对偶问题:
min
α
(
1
2
∑
i
=
1
m
∑
k
=
1
m
α
i
α
k
y
(
i
)
y
(
k
)
x
(
i
)
(
x
(
k
)
)
T
−
∑
i
=
1
m
α
i
)
\min_{α}(\cfrac{1}{2}\sum_{i=1}^m\sum_{k=1}^mα_iα_ky^{(i)}y^{(k)}x^{(i)}(x^{(k)})^T-\sum_{i=1}^mα_i)
αmin(21i=1∑mk=1∑mαiαky(i)y(k)x(i)(x(k))T−i=1∑mαi)
s
.
t
.
∑
i
=
1
m
α
i
y
(
i
)
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
s.t.\sum_{i=1}^mα_iy^{(i)}=0,α_i≥0,i=1,2,...,m
s.t.i=1∑mαiy(i)=0,αi≥0,i=1,2,...,m
SVM的原始问题和对偶问题都是二次规划问题,但是求解的变量个数和约束条件个数都不同。
SVM | 原始问题 | 对偶问题 |
---|---|---|
求解变量 | min w , b 1 2 w T w \min_{w,b}^{}\cfrac{1}{2}w^Tw w,bmin21wTw s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m s.t.y_i(w^Tx_i+b)≥1,i=1,2,...,m s.t.yi(wTxi+b)≥1,i=1,2,...,m | min α ( 1 2 ∑ i = 1 m ∑ k = 1 m α i α k y ( i ) y ( k ) x ( i ) ( x ( k ) ) T − ∑ i = 1 m α i ) \min_{α}(\cfrac{1}{2}\sum_{i=1}^m\sum_{k=1}^mα_iα_ky^{(i)}y^{(k)}x^{(i)}(x^{(k)})^T-\sum_{i=1}^mα_i) αmin(21i=1∑mk=1∑mαiαky(i)y(k)x(i)(x(k))T−i=1∑mαi) s . t . ∑ i = 1 m α i y ( i ) = 0 , α i ≥ 0 , i = 1 , 2 , . . . , m s.t.\sum_{i=1}^mα_iy^{(i)}=0,α_i≥0,i=1,2,...,m s.t.i=1∑mαiy(i)=0,αi≥0,i=1,2,...,m |
变量个数 | n + 1 n+1 n+1 | m m m |
约束条件个数 | m m m | m + 1 m+1 m+1 |
m m m是向量个数而 n n n是维度,如果数据在低维度下线性不可分,需要转到高维度空间中,那么 n n n可能是非常大的。求解原始问题会很低效,因此会将其转换成对偶问题,后者需要求解的变量个数为 m m m,只跟数据个数有关。
KKT | 一般问题 | SVM问题 |
---|---|---|
拉格朗日量 | L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i g i ( x ) + ∑ i = 1 l β i h i ( x ) L(x,α,β)=f(x)+\sum_{i=1}^kα_ig_i(x)+\sum_{i=1}^lβ_ih_i(x) L(x,α,β)=f(x)+i=1∑kαigi(x)+i=1∑lβihi(x) | L ( b , w , α ) = w T w 2 + ∑ i = 1 m α i [ 1 − y ( i ) ( w T x ( i ) + b ) ] L(b,w,α)=\frac{w^Tw}{2}+\sum_{i=1}^mα_i[1-y^{(i)}(w^Tx^{(i)}+b)] L(b,w,α)=2wTw+i=1∑mαi[1−y(i)(wTx(i)+b)] |
原始可行性 | g i ( x ∗ ) ≤ 0 , i = 1 , 2 , . . . , k g_i(x^*)≤0,i=1,2,...,k gi(x∗)≤0,i=1,2,...,k h i ( x ∗ ) = 0 , i = 1 , 2 , . . . , l h_i(x^*)=0,i=1,2,...,l hi(x∗)=0,i=1,2,...,l | y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . , m y^{(i)}(w^Tx^{(i)}+b)≥1,i=1,2,...,m y(i)(wTx(i)+b)≥1,i=1,2,...,m |
对偶可行性 | α i ∗ ≥ 0 , i = 1 , 2 , . . . , k α_i^*≥0,i=1,2,...,k αi∗≥0,i=1,2,...,k | α i ≥ 0 , i = 1 , 2 , . . . , m α_i≥0,i=1,2,...,m αi≥0,i=1,2,...,m |
驻点 | ∂ L ( x ∗ , α ∗ , β ∗ ) ∂ x ( i ) = 0 , i = 1 , 2 , . . . , m \frac{∂L(x^*,α^*,β^*)}{∂x^{(i)}}=0,i=1,2,...,m ∂x(i)∂L(x∗,α∗,β∗)=0,i=1,2,...,m | ∂ L ( b , w , α ) ∂ b = 0 , ∂ L ( b , w , α ) ∂ w = 0 \frac{∂L(b,w,α)}{∂b}=0,\frac{∂L(b,w,α)}{∂w}=0 ∂b∂L(b,w,α)=0,∂w∂L(b,w,α)=0 |
互补松弛 | α i ∗ g i ( x ∗ ) = 0 , i = 1 , 2 , . . . , k α_i^*g_i(x^*)=0,i=1,2,...,k αi∗gi(x∗)=0,i=1,2,...,k | α i [ 1 − y ( i ) ( w T x ( i ) + b ) ] = 0 , i = 1 , 2 , . . . , m α_i[1-y^{(i)}(w^Tx^{(i)}+b)]=0,i=1,2,...,m αi[1−y(i)(wTx(i)+b)]=0,i=1,2,...,m |
注意由原始可行性、对偶可行性和互补松弛三个条件推出的关系式:
{
①
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
②
α
i
≥
0
③
α
i
[
1
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
]
=
0
\begin{cases} ①& \text{$y^{(i)}(w^Tx^{(i)}+b)≥1$}\\ ②& \text{$α_i≥0$}\\ ③& \text{$α_i[1-y^{(i)}(w^Tx^{(i)}+b)]=0$}\\ \end{cases}
⎩⎪⎨⎪⎧①②③y(i)(wTx(i)+b)≥1αi≥0αi[1−y(i)(wTx(i)+b)]=0
由上式可知,
(1)如果①式中取严格大于号,意味着
x
(
i
)
x^{(i)}
x(i)没有落在边界上,即不是支持向量SV,要使③式成立,那么
α
i
=
0
α_i=0
αi=0。
(2)如果②式中取严格大于号,要使③式成立,那么
y
(
i
)
(
w
T
x
(
i
)
+
b
)
=
1
y^{(i)}(w^Tx^{(i)}+b)=1
y(i)(wTx(i)+b)=1,即
x
(
i
)
x^{(i)}
x(i)是支持向量SV,落在了边界上。
5、软间隔SVM
线性不可分有两种情况,按照程度可分为两类:
(1)线性轻度不可分【解决方法:引入软间隔SVM】;
(2)线性重度不可分【解决方法:引入核函数(+软间隔SVM)】。
硬间隔SVM要求所有的数据都要分类正确,在此前提下再最小化
w
T
w
w^Tw
wTw。但是在现实中,很难找到这样完美的数据集。为了缓解这个问题,引入了软间隔SVM,它会容忍一些错误的发生,将发生错误的情况加入目标函数中,希望能得到一个分类错误情况越少越好的结果。
SVM | 原始问题 |
---|---|
硬间隔 | min w , b 1 2 w T w \min_{w,b}^{}\cfrac{1}{2}w^Tw w,bmin21wTw s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m s.t.y_i(w^Tx_i+b)≥1,i=1,2,...,m s.t.yi(wTxi+b)≥1,i=1,2,...,m |
软间隔 | min w , b 1 2 w T w + C ∑ i = 1 m ξ i \min_{w,b}^{}\cfrac{1}{2}w^Tw+C\sum_{i=1}^mξ_i w,bmin21wTw+Ci=1∑mξi s . t . ① y i ( w T x i + b ) ≥ 1 − ξ i , ② ξ i ≥ 0 , i = 1 , 2 , . . . , m s.t.①y_i(w^Tx_i+b)≥1-ξ_i,②ξ_i≥0,i=1,2,...,m s.t.①yi(wTxi+b)≥1−ξi,②ξi≥0,i=1,2,...,m |
硬间隔SVM和软间隔SVM的区别就是后者多了
ξ
ξ
ξ(松弛变量)和
C
C
C(惩罚因子,
C
>
0
C>0
C>0)。当进行完SVM后会有一个缓冲带,在硬间隔SVM中没有数据点在缓冲带里面,但在软间隔SVM中则不一样。如果定义“数据点进入缓冲带这一现象”为违规,那么软间隔SVM分类有3种不同现象:
①分类正确;②分类正确但违规;③分类错误(一定违规)。而参数
ξ
ξ
ξ用于衡量数据违规的程度。
为了简化分析,令
u
i
=
y
i
(
w
T
x
i
+
b
)
u_i=y_i(w^Tx_i+b)
ui=yi(wTxi+b),则
u
i
≥
1
−
ξ
i
u_i≥1-ξ_i
ui≥1−ξi。
(1)当
ξ
i
=
0
ξ_i=0
ξi=0时,
u
i
≥
1
u_i≥1
ui≥1,该点没有违规且分类正确(该点到分隔线的距离大于或等于最大间隔);
(2)当
0
<
ξ
i
≤
1
0<ξ_i≤1
0<ξi≤1时,
u
i
≥
u_i≥
ui≥小于1的正数,该点违规但分类正确(该点到分隔线的距离小于最大间隔);
(3)当
ξ
i
>
1
ξ_i>1
ξi>1时,
u
i
≥
u_i≥
ui≥负数,该点违规且分类错误(只有
u
i
>
0
u_i>0
ui>0才代表分类正确)。
上图用
ξ
ξ
ξ来记录违规数据距离边界的距离,并将这个距离纳入最优化的标准中。
但我们不希望
ξ
ξ
ξ太大,因为这意味着有某个数据分类错得太离谱,因此需要用
C
C
C来惩罚太大的
ξ
ξ
ξ。
惩罚参数
C
C
C控制缓冲带的宽度(最大间隔的长度)。
①值大的
C
C
C对误分类的惩罚增大,代表“宁可边界窄一点,也要违规甚至出错的数据少点”,
C
C
C无穷大就是硬间隔SVM的情况。
②值小的
C
C
C误分类的惩罚减小,代表“宁可边界宽一点,即使牺牲分类精度也无所谓。
最小化目标函数包含两层含义:一方面使间隔尽量大,另一方面使误分类点的个数尽量小,
C
C
C是调和二者的系数。
【原问题转化为对偶问题】
SVM | 对偶问题 |
---|---|
硬间隔 | min α ( 1 2 ∑ i = 1 m ∑ k = 1 m α i α k y ( i ) y ( k ) x ( i ) ( x ( k ) ) T − ∑ i = 1 m α i ) \min_{α}(\cfrac{1}{2}\sum_{i=1}^m\sum_{k=1}^mα_iα_ky^{(i)}y^{(k)}x^{(i)}(x^{(k)})^T-\sum_{i=1}^mα_i) αmin(21i=1∑mk=1∑mαiαky(i)y(k)x(i)(x(k))T−i=1∑mαi) s . t . ∑ i = 1 m α i y ( i ) = 0 , α i ≥ 0 , i = 1 , 2 , . . . , m s.t.\sum_{i=1}^mα_iy^{(i)}=0,α_i≥0,i=1,2,...,m s.t.i=1∑mαiy(i)=0,αi≥0,i=1,2,...,m |
软间隔 | min α ( 1 2 ∑ i = 1 m ∑ k = 1 m α i α k y ( i ) y ( k ) x ( i ) ( x ( k ) ) T − ∑ i = 1 m α i ) \min_{α}(\cfrac{1}{2}\sum_{i=1}^m\sum_{k=1}^mα_iα_ky^{(i)}y^{(k)}x^{(i)}(x^{(k)})^T-\sum_{i=1}^mα_i) αmin(21i=1∑mk=1∑mαiαky(i)y(k)x(i)(x(k))T−i=1∑mαi) s . t . ∑ i = 1 m α i y ( i ) = 0 , 0 ≤ α i ≤ C , i = 1 , 2 , . . . , m s.t.\sum_{i=1}^mα_iy^{(i)}=0,0≤α_i≤C,i=1,2,...,m s.t.i=1∑mαiy(i)=0,0≤αi≤C,i=1,2,...,m |
推导过程如下:
(1)构造拉格朗日函数:
(2)对
w
,
b
,
ξ
w,b,ξ
w,b,ξ求偏导:
(3)将三个式子带入
L
L
L中:
(4)对上式求关于
α
α
α的极大:
(5)整理(消去
μ
i
μ_i
μi,只留下
α
i
α_i
αi),得到对偶问题:
【硬间隔和软间隔SVM两者的对偶问题的唯一的区别就是
α
i
α_i
αi的取值范围不同】
【软间隔支持向量机KKT条件】
6、核函数
线性不可分有两种情况,按照程度可分为两类:
(1)线性轻度不可分【解决方法:引入软间隔SVM】;
(2)线性重度不可分【解决方法:引入核函数(+软间隔SVM)】。
Q:若不存在一个能正确划分两类样本的超平面, 怎么办?
A:将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
设样本
x
x
x映射后的向量为
φ
(
x
)
φ(x)
φ(x),划分超平面为
f
(
x
)
=
w
T
φ
(
x
)
+
b
f(x)=w^Tφ(x)+b
f(x)=wTφ(x)+b。
→存在的问题:
(1)维度灾难
上面式子方框的地方要使用映射后的样本向量做内积;假如最初的特征是
n
n
n维的,我们把它映射到
n
2
n^2
n2维,然后再计算。这样需要的时间从原来的的
O
(
n
)
O(n)
O(n),变成了
O
(
n
2
)
O(n^2)
O(n2)。
(2)如何选择合理的非线性转换?
→解决的办法:引入核函数(核技巧)
基本想法:不显式地设计核映射,而是设计核函数。
我们可以构造核函数使得运算结果等同于非线性映射,同时运算量要远远小于非线性映射。
常用核函数:
【核函数的注意事项】
(1)核函数选择成为SVM的最大变数;
(2)经验:文本数据使用线性核,情况不明使用高斯核;
(3)核函数的性质:
①核函数的线性组合仍为核函数;
②核函数的直积仍为核函数;
③设
K
(
x
1
,
x
2
)
K(x_1,x_2)
K(x1,x2)为核函数,则对于任意函数
g
(
x
)
g(x)
g(x),
转换函数无穷无尽,可以从低维 x x x空间转到高维 z z z空间(多项式核)甚至无穷维度 z z z空间(高斯径向基函数核)。但维度越高,得到的SVM越容易过拟合数据。
【核函数举例】
假设定义两个向量:
x
=
(
x
1
,
x
2
,
x
3
)
,
y
=
(
y
1
,
y
2
,
y
3
)
x=(x1,x2,x3), y=(y1,y2,y3)
x=(x1,x2,x3),y=(y1,y2,y3)
定义高维映射方程:
φ
(
x
)
=
(
x
1
x
1
,
x
1
x
2
,
x
1
x
3
,
x
2
x
1
,
x
2
x
2
,
x
2
x
3
,
x
3
x
1
,
x
3
x
2
,
x
3
x
3
)
φ(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)
φ(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)
假设
x
=
(
1
,
2
,
3
)
,
y
=
(
4
,
5
,
6
)
x=(1,2,3),y=(4,5,6)
x=(1,2,3),y=(4,5,6)
φ
(
x
)
=
(
1
,
2
,
3
,
2
,
4
,
6
,
3
,
6
,
9
)
φ(x)=(1,2,3,2,4,6,3,6,9)
φ(x)=(1,2,3,2,4,6,3,6,9)
φ
(
y
)
=
(
16
,
20
,
24
,
20
,
25
,
36
,
24
,
30
,
36
)
φ(y)=(16,20,24,20,25,36,24,30,36)
φ(y)=(16,20,24,20,25,36,24,30,36)
求内积
<
φ
(
x
)
,
φ
(
y
)
>
=
16
+
40
+
72
+
40
+
100
+
180
+
72
+
180
+
324
=
1024
<φ(x),φ(y)>=16+40+72+40+100+180+72+180+324=1024
<φ(x),φ(y)>=16+40+72+40+100+180+72+180+324=1024
定义核函数:
K
(
x
,
y
)
=
(
<
x
,
y
>
)
2
K(x,y)=(<x,y>)^2
K(x,y)=(<x,y>)2
K
(
x
,
y
)
=
(
4
+
10
+
18
)
2
=
1024
K(x,y)=(4+10+18)^2=1024
K(x,y)=(4+10+18)2=1024
同样的结果,使用核方法计算容易得多。
7、序列最小优化(SMO)算法
8、模型选择
(1)多项式核函数:
K
(
x
,
x
′
)
=
(
ζ
+
γ
x
T
x
′
)
Q
K(x,x')=(ζ+γx^Tx')^Q
K(x,x′)=(ζ+γxTx′)Q;
(2)高斯径向基函数核:
K
(
x
,
x
′
)
=
e
x
p
(
−
γ
×
∣
∣
x
−
x
′
∣
∣
2
)
K(x,x')=exp(-γ×||x-x'||^2)
K(x,x′)=exp(−γ×∣∣x−x′∣∣2)。
在使用SVM时,根据不同的数据特征,一般都会使用软间隔SVM加上一个核函数。多项式核首先需要设定多项式次数
Q
Q
Q来控制模型,之后还要调节参数
γ
γ
γ和
ζ
ζ
ζ。当参数比较多时,选择起来比较麻烦,因此通常会选用高斯径向基函数核。软间隔SVM里的超参数
C
C
C和高斯径向基函数核里的超参数
γ
γ
γ用(交叉)验证数据集来调节。
高斯径向基函数核的超参数
γ
γ
γ值越大,越容易产生过拟合。
软间隔SVM里的超参数
C
C
C值越大,越容易产生过拟合。
sklearn中提供了两种调参方法:网格追踪法和随机追踪法。
9、总结
SVM分类遇到的3类数据:
类型①:线性可分(在理论上存在,在实际中罕见,引出硬间隔SVM);
类型②:线性轻度不可分(存在少量异常值,引出软间隔SVM);
类型③:线性重度不可分(不可能线性分类,必须要提升维度,引出空间转换)。
在类型①数据中,硬间隔SVM本着“分离平面到数据间隔越远越好”的原则,由以下3步推导完成。
(1)推导出最近点到超平面的距离的表达式,将其定义为间隔。
(2)最大化间隔得到一个约束规划问题,用分类正确而且点都在间隔之内当约束条件。
(3)通过数学技巧将困难的约束规划问题转换成容易的凸二次规划问题。
该凸二次规划问题是硬间隔SVM原始问题,接着利用拉格朗日量推出其对偶问题,并且根据强对偶关系,发现“对偶问题的最优解”和“原始问题的最优解”一致。从表面上看,对偶问题要比原始问题复杂,但推导硬间隔SVM对偶问题的原因有3个:
(1)原始问题的解和数据的维度有关,而对偶问题的解只和数据的个数有关,通常在低维度线性重度不可分的情况下会转换到高维度(甚至无限维度),那么对偶问题的计算负担会小很多。
(2)对偶问题的解含有内积表达式,而核技巧在“不触碰高维空间”的情况下计算高维向量内积最在行。
(3)在现实中,软间隔SVM最常用,而它和硬间隔SVM对偶问题只差一个上界限制条件,前者可以由后者快速推导出。
软间隔SVM用于处理类型②的线性轻度不可分数据,将数据由低维升到高维空间的转换函数用于处理类型③的线性重度不可分数据,但是处理完后可能数据还是线性不可分的,只不过从重度变为轻度了,最后还要用软间隔SVM来处理。
为了避免犯数据窥探的错误,以及能处理所有种类(线性可分或线性不可分)的数据,可以使用空间转换函数加上软间隔SVM。使用空间转换函数加上软间隔SVM是将一个强鲁棒性的线性模型和采用核函数做非线性转换进行结合。从算法角度来看:
①当用转换函数将数据从低维空间提升到高维空间时,可以用核技巧来降低计算量。
②软间隔SVM在数据很大时直接用二次规划很慢,可以用序列最小优化(SMO)来降低计算量。
要计算软间隔SVM和核函数里的超参数,就用网格追踪法或随机追踪法选取最小的(交叉)验证误差对应的超参数。
下面是SVM的总结图:
【SVM的优点】
• 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生多拟合;
• SVM训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。
• 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。