在上一篇文章中介绍了线性可分支持向量机,但如果训练数据不是严格线性可分的,线性可分支持向量机便不适用了,需要修改硬间隔最大化,使其成为软间隔最大化。
1、线性支持向量机
给定一个特征空间上的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)} 其中
x
i
∈
R
n
,
y
i
∈
{
+
1
,
−
1
}
x_i\in R^n,y_i\in\{+1,-1\}
xi∈Rn,yi∈{+1,−1}。通常情况时训练数据中有一些特异点(outlier),将其除去后剩下大部分的样本点组成的集合是线性可分的。
针对这个问题,可以对每个样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)引进一个松弛变量
ξ
i
≥
0
\xi_i\ge0
ξi≥0,修改硬间隔最大化的约束条件,使函数间隔加上松弛变量大于等于1,即
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
y_i(w\cdot x_i+b)\ge1-\xi_i
yi(w⋅xi+b)≥1−ξi 同时对每个松弛变量
ξ
i
\xi_i
ξi支付一个代价,即目标函数变为
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i
21∣∣w∣∣2+Ci=1∑Nξi 这有两层含义,一是使间隔尽量大,二是使误分类点的个数尽可能小,
C
C
C是调和二者的系数。
线性支持向量机变成如下凸二次规划(convex quadratic programming)问题
min
w
,
b
,
ξ
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
\min_{w,b,\xi} \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i
w,b,ξmin 21∣∣w∣∣2+Ci=1∑Nξi
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
⋯
 
,
N
s.t. y_i(w\cdot x_i+b)\ge1-\xi_i, i=1,2,\cdots,N
s.t. yi(w⋅xi+b)≥1−ξi, i=1,2,⋯,N
ξ
i
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
\xi_i\ge0, i=1,2,\cdots,N
ξi≥0, i=1,2,⋯,N 可以证明,
w
w
w的解是唯一的,但
b
b
b的解可能不唯一,而是存在于一个区间。
2、学习的对偶算法
列出原始最优化问题的拉格朗日函数
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
−
∑
i
=
1
N
α
i
[
y
i
(
w
⋅
x
i
+
b
)
−
1
+
ξ
i
]
−
∑
i
=
1
N
μ
i
ξ
i
L(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i-\sum_{i=1}^N\alpha_i[y_i(w\cdot x_i+b)-1+\xi_i]-\sum_{i=1}^N\mu_i\xi_i
L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑Nξi−i=1∑Nαi[yi(w⋅xi+b)−1+ξi]−i=1∑Nμiξi 原始问题的对偶问题为
max
α
,
μ
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
\max_{\alpha,\mu}\min_{w,b,\xi}L(w,b,\xi,\alpha,\mu)
α,μmaxw,b,ξminL(w,b,ξ,α,μ) 首先求内部极小化问题,分别对
w
,
b
,
ξ
w,b,\xi
w,b,ξ求偏导
▽
w
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
\bigtriangledown_wL(w,b,\xi,\alpha,\mu)=w-\sum_{i=1}^N\alpha_iy_ix_i=0
▽wL(w,b,ξ,α,μ)=w−i=1∑Nαiyixi=0
▽
b
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
−
∑
i
=
1
N
α
i
y
i
=
0
\bigtriangledown_bL(w,b,\xi,\alpha,\mu)=-\sum_{i=1}^N\alpha_iy_i=0
▽bL(w,b,ξ,α,μ)=−i=1∑Nαiyi=0
▽
ξ
i
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
C
−
α
i
−
μ
i
=
0
\bigtriangledown_{\xi_i} L(w,b,\xi,\alpha,\mu)=C-\alpha_i-\mu_i=0
▽ξiL(w,b,ξ,α,μ)=C−αi−μi=0 得
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum_{i=1}^N\alpha_iy_ix_i
w=i=1∑Nαiyixi
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N\alpha_iy_i=0
i=1∑Nαiyi=0
C
=
α
i
+
μ
i
C=\alpha_i+\mu_i
C=αi+μi 代入对偶问题内部极小化式子中,可得
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\min_{w,b,\xi}L(w,b,\xi,\alpha,\mu)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i
w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi 再对
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
\min_{w,b,\xi}L(w,b,\xi,\alpha,\mu)
minw,b,ξL(w,b,ξ,α,μ)求
α
,
μ
\alpha,\mu
α,μ的极大
max
α
,
μ
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\max_{\alpha,\mu} -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i
α,μmax −21i=1∑Nj=1∑Nαiαjyiyj(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
C
−
α
i
−
μ
i
=
0
C-\alpha_i-\mu_i=0
C−αi−μi=0
α
i
≥
0
\alpha_i\ge0
αi≥0
μ
i
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
\mu_i\ge0, i=1,2,\cdots,N
μi≥0, i=1,2,⋯,N 由于目标函数中没有
μ
\mu
μ,可以在约束条件中消去
μ
i
\mu_i
μi,将约束条件后面的三式写成
0
≤
α
i
≤
C
0\le\alpha_i\le C
0≤αi≤C 求解上面的最优化问题,得到解
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
 
,
α
N
∗
)
\alpha^*=(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*)
α∗=(α1∗,α2∗,⋯,αN∗),接着考虑如何由
α
∗
\alpha^*
α∗计算分离超平面参数
w
∗
,
b
∗
w^*,b^*
w∗,b∗。
由于原始问题是凸二次规划问题,其解满足KKT条件,即
▽
w
L
(
w
∗
,
b
∗
,
ξ
∗
,
α
∗
,
μ
∗
)
=
w
∗
−
∑
i
=
1
N
α
i
∗
y
i
x
i
=
0
\bigtriangledown_wL(w^*,b^*,\xi^*,\alpha^*,\mu^*)=w^*-\sum_{i=1}^N\alpha_i^*y_ix_i=0
▽wL(w∗,b∗,ξ∗,α∗,μ∗)=w∗−i=1∑Nαi∗yixi=0
▽
b
L
(
w
∗
,
b
∗
,
ξ
∗
,
α
∗
,
μ
∗
)
=
−
∑
i
=
1
N
α
i
∗
y
i
=
0
\bigtriangledown_bL(w^*,b^*,\xi^*,\alpha^*,\mu^*)=-\sum_{i=1}^N\alpha_i^*y_i=0
▽bL(w∗,b∗,ξ∗,α∗,μ∗)=−i=1∑Nαi∗yi=0
▽
ξ
i
L
(
w
∗
,
b
∗
,
ξ
∗
,
α
∗
,
μ
∗
)
=
C
−
α
i
∗
−
μ
i
∗
=
0
\bigtriangledown_{\xi_i} L(w^*,b^*,\xi^*,\alpha^*,\mu^*)=C-\alpha_i^*-\mu_i^*=0
▽ξiL(w∗,b∗,ξ∗,α∗,μ∗)=C−αi∗−μi∗=0
α
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
μ
i
∗
ξ
i
∗
=
0
\mu_i^*\xi_i^*=0
μi∗ξi∗=0
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
+
ξ
i
≥
0
y_i(w^*\cdot x_i+b^*)-1+\xi_i\ge0
yi(w∗⋅xi+b∗)−1+ξi≥0
ξ
i
∗
≥
0
\xi^*_i\ge0
ξi∗≥0
α
i
∗
≥
0
\alpha_i^*\ge0
αi∗≥0
μ
i
∗
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
\mu_i^*\ge0, i=1,2,\cdots,N
μi∗≥0, i=1,2,⋯,N 由上面的第一个KKT条件可以推出
w
∗
w^*
w∗的计算公式
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 接着求取
b
∗
b^*
b∗的公式。
考虑若有
0
<
α
j
<
C
0<\alpha_j<C
0<αj<C,根据第三个KKT条件可推出
μ
j
∗
>
0
\mu_j^*>0
μj∗>0;根据第四个KKT条件可推出
y
j
(
w
∗
⋅
x
j
+
b
∗
)
−
1
+
ξ
j
∗
=
0
y_j(w^*\cdot x_j+b^*)-1+\xi_j^*=0
yj(w∗⋅xj+b∗)−1+ξj∗=0。
由于
μ
j
∗
>
0
\mu^*_j>0
μj∗>0,根据第五个KKT条件可进一步推出
ξ
j
∗
=
0
\xi_j^*=0
ξj∗=0,因此有
y
j
(
w
∗
⋅
x
j
+
b
∗
)
−
1
=
0
y_j(w^*\cdot x_j+b^*)-1=0
yj(w∗⋅xj+b∗)−1=0 带入
w
∗
w^*
w∗的表达式,可得
b
∗
=
y
j
−
∑
i
=
1
N
y
i
α
i
∗
(
x
i
⋅
x
j
)
b^*=y_j-\sum_{i=1}^Ny_i\alpha_i^*(x_i\cdot x_j)
b∗=yj−i=1∑Nyiαi∗(xi⋅xj)
3、支持向量
与线性可分支持向量机相同,将对应于
α
i
∗
>
0
\alpha_i^*>0
αi∗>0的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的实例
x
i
x_i
xi称为支持向量。支持向量
x
i
x_i
xi到间隔边界的距离是
ξ
i
∣
∣
w
∣
∣
\frac{\xi_i}{||w||}
∣∣w∣∣ξi,即
ξ
i
\xi_i
ξi越大,离间隔边界越远。
若
0
<
α
i
∗
<
C
0<\alpha_i^*<C
0<αi∗<C,则有
ξ
∗
=
0
\xi^*=0
ξ∗=0,即支持向量
x
i
x_i
xi恰好落在间隔边界上;若
α
i
∗
=
C
\alpha_i^*=C
αi∗=C且
0
<
ξ
i
∗
<
1
0<\xi_i^*<1
0<ξi∗<1,则
x
i
x_i
xi分类正确,但在间隔边界与分离超平面之间;若
α
i
∗
=
C
\alpha_i^*=C
αi∗=C且
ξ
i
∗
=
1
\xi_i^*=1
ξi∗=1,则
x
i
x_i
xi在分离超平面上;若
α
i
∗
=
C
\alpha_i^*=C
αi∗=C且
ξ
i
∗
>
1
\xi_i^*>1
ξi∗>1,则
x
i
x_i
xi在分离超平面的误分一侧。
4、合页损失函数
线性支持向量机还有另外一种解释,就是最小化以下目标函数
min
w
,
b
∑
i
=
1
N
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
\min_{w,b} \sum_{i=1}^N[1-y_i(w\cdot x_i+b)]_++\lambda||w||^2
w,bmin i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2 其中目标函数的第一项是经验风险,函数
L
(
y
(
w
⋅
x
+
b
)
)
=
[
1
−
y
(
w
⋅
x
+
b
)
]
+
L(y(w\cdot x+b))=[1-y(w\cdot x+b)]_+
L(y(w⋅x+b))=[1−y(w⋅x+b)]+称为合页损失函数(hinge loss function);目标函数的第二项是
w
w
w的
L
2
L_2
L2范数,是正则化项。
为什么说带正则化项的合页损失函数是线性支持向量机的另一种解释?可以令
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
=
ξ
i
[1-y_i(w\cdot x_i+b)]_+=\xi_i
[1−yi(w⋅xi+b)]+=ξi 则
ξ
i
\xi_i
ξi满足以下两个约束
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
⋯
 
,
N
y_i(w\cdot x_i+b)\ge1-\xi_i, i=1,2,\cdots,N
yi(w⋅xi+b)≥1−ξi, i=1,2,⋯,N
ξ
i
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
\xi_i\ge0, i=1,2,\cdots,N
ξi≥0, i=1,2,⋯,N 这正是线性支持向量机原始问题的两个约束条件,再看看目标函数,若取
λ
=
1
2
C
\lambda=\frac{1}{2C}
λ=2C1,则带正则化项的合页损失函数可写成
min
w
,
b
1
C
(
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
)
\min_{w,b} \frac{1}{C}(\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i)
w,bmin C1(21∣∣w∣∣2+Ci=1∑Nξi) 可以发现,括号里的部分正是线性支持向量机原始问题的目标函数。
与感知机相比,线性支持向量机对学习有更高的要求。感知机的损失函数是
[
−
y
i
(
w
⋅
x
i
+
b
)
]
+
[-y_i(w\cdot x_i+b)]_+
[−yi(w⋅xi+b)]+,当样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)被正确分类时,损失是0;相比之下线性支持向量机的合页损失函数
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
[1-y_i(w\cdot x_i+b)]_+
[1−yi(w⋅xi+b)]+不仅要分类正确,而且确信度足够高时损失才是0.