线性可分
在二维平面中,正样本和负样本可以由一条直线完全隔开。假设存在直线 y = ω 1 x + b y=\omega_1 x+b y=ω1x+b使得平面上 ω 1 x + b ≥ 0 \omega_1 x+b\ge 0 ω1x+b≥0处完全是正样本, ω 1 x + b < 0 \omega_1 x+b<0 ω1x+b<0完全是负样本,那么这条直线就是一个超平面,它将样本完全分开,并且这样的样本被称为线性可分。
超平面
超平面是推广到n维空间后的概念,在一维空间下,超平面就是一个点;在二维空间下,超平面就是一条直线;在三维平面下,超平面就是一个平面;…推广到n维情况,则统称为超平面
支持向量机
在二维平面上,对于一组线性可分的数据,往往可以找到很多条直线作为超平面。支持向量机可以在这若干条直线中,找出最合适的一条直线作为决策边界。如何判断直线足够合适呢?对于一个决策边界,我们希望他能够具有较好的泛化能力。假如正样本均匀分布在y=0的直线上,负样本均匀分布在存在于y=9的直线上。假设我们取y=1,y=5,y=8作为超平面,从直觉上来讲,y=1,y=8两条直线都离一组样本过近,离另外一组样本过远,因此这两条直线都不合适。而y=5作为y=0和y=9的垂线,对于正样本和负样本都留有一定的余地,这使得模型的泛化能力变强。当出现一些噪声,比如y=2上出现了正样本,y=7上出现了负样本的情况,y=5都能够将其归为正确的分类。当然,并不是所有的样本都如我们期望的那样线性可分。
总的来说,支持向量机(support vector machines)可以分为以下三种:
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分SVM。
- 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性SVM。
- 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。
算法推导
几何间隔
在超平面确定的情况下,
∣
ω
x
+
b
∣
|\omega x+b|
∣ωx+b∣表示点到超平面的距离,而函数最终预测输出的y(1和-1)与
ω
x
+
b
\omega x +b
ωx+b 符号一致,因此可用
y
(
ω
x
+
b
)
y(\omega x +b)
y(ωx+b)来表示分类预测的准确程度。定义所有样本点最小的
y
(
ω
x
+
b
)
y(\omega x +b)
y(ωx+b)作为函数间隔,
根据高中的知识,我们知道点到直线的距离公式为
d
=
∣
a
x
0
+
b
y
0
+
c
a
2
+
b
2
∣
d=|\frac{ax_0+by_0+c}{\sqrt{a^2+b^2}}|
d=∣a2+b2ax0+by0+c∣,点到平面的距离公式为
d
=
∣
A
x
0
+
B
y
0
+
C
z
0
+
D
A
2
+
B
2
+
C
2
∣
d=|\frac{Ax_0+By_0+Cz_0+D}{\sqrt{A^2+B^2+C^2}}|
d=∣A2+B2+C2Ax0+By0+Cz0+D∣,如果用向量表示,设
ω
=
(
a
,
b
)
\omega = (a,b)
ω=(a,b),
f
(
x
)
=
ω
T
x
+
c
f(x)=\omega ^Tx+c
f(x)=ωTx+c,那么这个距离正是
∣
f
(
x
)
∣
∣
∣
ω
∣
∣
\frac{|f(x)|}{||\omega||}
∣∣ω∣∣∣f(x)∣。
支持向量
我们知道对于一个超平面恒有
y
i
(
w
x
i
+
b
)
>
0
y_i(wx_i+b) \gt 0
yi(wxi+b)>0
则我们一定可以找到一个最小值
r
r
r令
y
i
(
w
x
i
+
b
)
=
r
y_i(wx_i+b)=r
yi(wxi+b)=r
对于
w
x
+
b
wx+b
wx+b和
2
w
x
+
2
b
2wx+2b
2wx+2b来说,对应的是相同的超平面,我们不妨令r=1,尽管最小值可能不是1,我们也可以通过缩放操作令其等于1,这样我们实际上也对w做了限制,使我们能够找到特定的解而不是无数解。
满足
y
(
ω
T
x
+
b
)
=
1
y(\omega ^Tx+b)=1
y(ωTx+b)=1的样本点我们称之为支持向量。因为它们是撑开超平面的并且离超平面最近的点。对于其他不是支持向量的点,显然有
y
(
ω
T
x
+
b
)
>
1
y(\omega ^Tx+b)>1
y(ωTx+b)>1。
令
x
⃗
+
\vec x_+
x+和
x
⃗
−
\vec x_-
x−表示两个正负支持向量,满足
y
(
ω
T
x
+
b
)
=
1
y(\omega ^Tx+b)=1
y(ωTx+b)=1,推出
{
ω
T
x
+
=
1
−
b
ω
T
x
−
=
−
1
−
b
\begin{cases}\omega ^Tx_+=1-b \\ \omega ^Tx_-=-1-b \end{cases}
{ωTx+=1−bωTx−=−1−b。对于一正一负两个支持向量的间隔等于两个支持向量的差在
ω
\omega
ω上的投影,即
γ
=
x
⃗
+
⋅
ω
⃗
T
∣
∣
ω
∣
∣
−
x
⃗
−
⋅
ω
⃗
T
∣
∣
ω
∣
∣
=
x
⃗
+
⋅
ω
⃗
T
−
x
⃗
−
⋅
ω
⃗
T
∣
∣
ω
∣
∣
=
1
−
b
+
(
1
+
b
)
∣
∣
ω
∣
∣
=
2
∣
∣
ω
∣
∣
\gamma=\frac{\vec x_+·\vec \omega ^T}{||\omega||}-\frac{\vec x_-·\vec \omega ^T}{||\omega||}=\frac{\vec x_+·\vec \omega ^T-\vec x_-·\vec \omega ^T}{||\omega||}=\frac{1-b+(1+b)}{||\omega||}=\frac{2}{||\omega||}
γ=∣∣ω∣∣x+⋅ωT−∣∣ω∣∣x−⋅ωT=∣∣ω∣∣x+⋅ωT−x−⋅ωT=∣∣ω∣∣1−b+(1+b)=∣∣ω∣∣2。因此,我们的目标就是最大化这个间隔,也就是
max
w
,
b
2
∣
∣
ω
∣
∣
,
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
.
.
.
,
m
)
\max_{w,b}\frac{2}{||\omega||},s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m)
w,bmax∣∣ω∣∣2,s.t.yi(ωTxi+b)≥1(i=1,2,...,m)
最大化
2
∣
∣
ω
∣
∣
\frac{2}{||\omega||}
∣∣ω∣∣2相当于最小化
∣
∣
ω
∣
∣
||\omega||
∣∣ω∣∣,为了计算方便,将上述式子转化为
min
w
,
b
1
2
∣
∣
ω
∣
∣
2
,
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
(
i
=
1
,
2
,
.
.
.
,
m
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(
1
)
\min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m) ..................(1)
w,bmin21∣∣ω∣∣2,s.t.yi(ωTxi+b)≥1(i=1,2,...,m)..................(1)
对偶问题
该问题的拉格朗日函数可以写为:
L
(
ω
,
b
,
a
)
=
1
2
∣
∣
ω
∣
∣
2
+
∑
i
=
1
m
a
i
(
1
−
y
i
(
ω
T
x
i
+
b
)
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(
2
)
L(\omega,b,a)=\frac{1}{2}||\omega||^2+\sum_{i=1}^ma_i(1-y_i(\omega^Tx_i+b)).....................(2)
L(ω,b,a)=21∣∣ω∣∣2+i=1∑mai(1−yi(ωTxi+b)).....................(2)
公式(1)等价于求解
min
w
,
b
(
max
a
n
≥
0
L
(
w
,
b
,
a
)
)
\min\limits_{w,b}(\max\limits_{a_n\ge 0}L(w,b,a))
w,bmin(an≥0maxL(w,b,a)),考虑两种情况:
- 如果某个b,w不符合原始问题的条件,即某个 1 − y i ( ω T x i + b ) > 0 1-y_i(\omega^Tx_i+b)>0 1−yi(ωTxi+b)>0,则内部的max操作会将a推向无穷大,在min操作中会被淘汰。
- 如果某个b,w满足原始问题的约束,则内部max会将所有的a推向0,在外部的min操作中就会取得满足条件的b,w中目标函数最小的组合。
对于一个确定的a’,根据
m
a
x
≥
a
n
y
max\ge any
max≥any,有
min
w
,
b
(
max
a
n
≥
0
L
(
w
,
b
,
a
)
)
≥
min
w
,
b
L
(
w
,
b
,
a
′
)
\min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \min_{w,b}L(w,b,a')
w,bmin(an≥0maxL(w,b,a))≥w,bminL(w,b,a′)
因为对于a’都有上式成立,所以
min
w
,
b
(
max
a
n
≥
0
L
(
w
,
b
,
a
)
)
≥
max
a
n
≥
0
(
min
w
,
b
L
(
w
,
b
,
a
′
)
)
\min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \max_{a_n\ge 0}(\min_{w,b}L(w,b,a'))
w,bmin(an≥0maxL(w,b,a))≥an≥0max(w,bminL(w,b,a′))
上式被称作是弱对偶关系,当等号成立时称为强对偶关系。什么时候会是强对偶关系呢?我们先将其对偶问题写出来:
max
a
n
≥
0
(
min
w
,
b
L
(
w
,
b
,
a
′
)
)
\max_{a_n\ge 0}(\min_{w,b}L(w,b,a'))
an≥0max(w,bminL(w,b,a′))
当原问题和对偶具有强对偶关系的充要条件是它们满足KKT条件。该拉格朗日函数式子的KKT条件为:
{
∂
L
∂
w
=
0
,
∂
L
∂
b
=
0
,
∂
L
∂
a
=
0
a
i
≥
0
1
−
y
i
(
ω
T
x
i
+
b
)
≤
0
a
i
(
1
−
y
i
(
ω
T
x
i
+
b
)
)
=
0
\begin{cases} \frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0,\frac{\partial L}{\partial a}=0\\ a_i \ge 0 \\ 1-y_i(\omega^Tx_i+b) \le 0 \\ a_i(1-y_i(\omega^Tx_i+b)) = 0 \end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧∂w∂L=0,∂b∂L=0,∂a∂L=0ai≥01−yi(ωTxi+b)≤0ai(1−yi(ωTxi+b))=0
公式(2)分别对
ω
\omega
ω和b求偏导得到:
{
∂
L
∂
ω
=
ω
−
∑
i
=
1
m
a
i
y
i
x
i
∂
L
∂
b
=
∑
i
=
1
m
a
i
y
i
\begin{cases} \frac{\partial L}{\partial \omega}=\omega-\sum\limits_{i=1}^ma_iy_ix_i\\ \frac{\partial L}{\partial b}=\sum\limits_{i=1}^ma_iy_i \end{cases}
⎩⎪⎨⎪⎧∂ω∂L=ω−i=1∑maiyixi∂b∂L=i=1∑maiyi
分别令偏导为0,得到
{
ω
=
∑
i
=
1
m
a
i
y
i
x
i
.
.
.
.
.
.
.
.
.
.
(
3
)
∑
i
=
1
m
a
i
y
i
=
0..............
(
4
)
\begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i..........(3)\\ \sum\limits_{i=1}^ma_iy_i=0..............(4) \end{cases}
⎩⎪⎨⎪⎧ω=i=1∑maiyixi..........(3)i=1∑maiyi=0..............(4)
由于并没有出现
b
b
b,因此我们还需要看一下b怎么求。对于KKT条件,可以发现只有支持向量上的点
x
k
x_k
xk满足
1
−
y
k
(
ω
T
x
k
+
b
)
=
0
1-y_k(\omega^Tx_k+b) = 0
1−yk(ωTxk+b)=0
而除了支持向量以外的点,其参数a都为0。对上式进行同乘
y
i
y_i
yi并化简,就得到了求b的公式
b
=
y
k
−
ω
T
x
k
=
y
k
−
∑
i
=
1
m
a
i
y
i
x
i
T
⋅
x
k
.
.
.
.
.
.
.
.
.
.
.
(
5
)
b=y_k-\omega^Tx_k=y_k-\sum_{i=1}^ma_iy_ix_i^T·x_k...........(5)
b=yk−ωTxk=yk−i=1∑maiyixiT⋅xk...........(5)
将公式(3)和(4)代入(2)中得到
L
(
ω
,
b
,
a
)
=
1
2
ω
T
ω
+
∑
i
=
1
m
a
i
−
∑
i
=
1
m
a
i
y
i
(
ω
T
x
i
+
b
)
=
1
2
ω
T
ω
+
∑
i
=
1
m
a
i
−
ω
T
∑
i
=
1
m
a
i
y
i
x
i
−
b
∑
i
=
1
m
a
i
y
i
=
1
2
ω
T
∑
i
=
1
m
a
i
y
i
x
i
+
∑
i
=
1
m
a
i
−
ω
T
∑
i
=
1
m
a
i
y
i
x
i
−
b
⋅
0
=
∑
i
=
1
m
a
i
−
1
2
ω
T
∑
i
=
1
m
a
i
y
i
x
i
=
∑
i
=
1
m
a
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
a
i
a
j
y
i
y
j
x
i
x
j
s
.
t
.
∑
i
=
1
m
a
i
y
i
=
0
,
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
m
\begin{aligned}L(\omega,b,a) &=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_i(\omega^Tx_i+b)\\ &=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b\sum_{i=1}^ma_iy_i\\ &=\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b·0\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j \\ &s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \end{aligned}
L(ω,b,a)=21ωTω+i=1∑mai−i=1∑maiyi(ωTxi+b)=21ωTω+i=1∑mai−ωTi=1∑maiyixi−bi=1∑maiyi=21ωTi=1∑maiyixi+i=1∑mai−ωTi=1∑maiyixi−b⋅0=i=1∑mai−21ωTi=1∑maiyixi=i=1∑mai−21i=1∑mj=1∑maiajyiyjxixjs.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
于是我们得到了只包含变量a的表达式,从上面的式子可以得到
max
a
∑
i
=
1
m
a
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
a
i
a
j
y
i
y
j
x
i
x
j
.
.
.
.
.
.
(
6
)
s
.
t
.
∑
i
=
1
m
a
i
y
i
=
0
,
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
m
\max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j ......(6)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \\
amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjxixj......(6)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
通过求解公式(6)得到a后,并回代得到
ω
\omega
ω和b,我们最终可以到超平面:
f
(
x
)
=
ω
T
x
+
b
=
∑
i
=
1
m
a
i
y
i
x
i
T
x
+
b
.
.
.
.
.
.
.
.
.
.
(
7
)
f(x)=\omega^Tx+b=\sum_{i=1}^ma_iy_ix_i^Tx+b..........(7)
f(x)=ωTx+b=i=1∑maiyixiTx+b..........(7)
结合式子(2)以及KKT条件,可以知道对于任意的训练样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),若
a
i
=
0
a_i=0
ai=0,则其不会在(6)中出现, 也不会在求b和w的公式中出现,不影响模型训练。若
a
i
>
0
a_i>0
ai>0,则
y
i
(
ω
T
x
i
+
b
)
=
1
y_i(\omega^Tx_i+b)=1
yi(ωTxi+b)=1,即该样本一定是支持向量。不难发现,最终模型只与支持向量有关;
非线性SVM
对于非线性的问题,上面的SVM并不能够有效解决,必须用到非线性模型才可以分类。对于二维平面上散落的点,我们不一定能够用一条直线就将其分开,比如圆形、椭圆形、矩形或其他不规则的决策边界。对于这样的问题,我们可以将训练样本映射到一个更高的维度,并且在这个高维度中样本是线性可分的,这样我们就又可以用回前面的公式。
想象一个平面上分散着线性不可分的样本点,一个高手一拍桌子,样本点飞上了天空,并且刚好有一个平面可以将正样本和负样本隔开。令
ϕ
(
x
)
\phi_(x)
ϕ(x)表示将x映射到高维空间后的特征向量,于是在特征空间中,模型变为
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
.
.
.
.
.
.
.
.
.
.
(
8
)
f(x)=\omega^T\phi(x)+b..........(8)
f(x)=ωTϕ(x)+b..........(8)
最小化函数为:
min
w
,
b
1
2
∣
∣
ω
∣
∣
2
,
s
.
t
.
y
i
(
ω
T
ϕ
(
x
i
)
+
b
)
≥
1
(
i
=
1
,
2
,
.
.
.
,
m
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(
9
)
\min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^T\phi(x_i)+b)\ge 1(i=1,2,...,m) ...............(9)
w,bmin21∣∣ω∣∣2,s.t.yi(ωTϕ(xi)+b)≥1(i=1,2,...,m)...............(9)
其对偶问题变为:
max
a
∑
i
=
1
m
a
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
a
i
a
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
.
.
.
.
.
.
.
.
.
(
10
)
s
.
t
.
∑
i
=
1
m
a
i
y
i
=
0
,
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
m
\max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_j\phi(x_i)^T\phi(x_j) .........(10)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m
amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjϕ(xi)Tϕ(xj).........(10)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
若要计算,由于样本已经被映射到高维空间,如果要计算高维度的
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi(x_i)^T\phi(x_j)
ϕ(xi)Tϕ(xj)通常是困难的,于是我们想利用样本在原特征空间下,通过某个函数
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj)得到其在高维空间下的內积。则式子(10)变为
max
a
∑
i
=
1
m
a
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
a
i
a
j
y
i
y
j
K
(
x
i
,
x
j
)
.
.
.
.
.
.
.
.
.
(
11
)
s
.
t
.
∑
i
=
1
m
a
i
y
i
=
0
,
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
m
\max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jK(x_i,x_j) .........(11)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m
amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjK(xi,xj).........(11)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
求解后得到
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
a
i
y
i
ϕ
(
x
i
)
T
ϕ
(
x
j
)
+
b
(
12
)
=
∑
i
=
1
m
a
i
y
i
K
(
x
i
,
x
j
)
+
b
\begin{aligned} f(x) &= \omega^T\phi(x)+b\\ &= \sum_{i=1}^ma_iy_i\phi(x_i)^T\phi(x_j)+b \qquad\qquad\qquad (12)\\ &= \sum_{i=1}^ma_iy_iK(x_i,x_j)+b \end{aligned}
f(x)=ωTϕ(x)+b=i=1∑maiyiϕ(xi)Tϕ(xj)+b(12)=i=1∑maiyiK(xi,xj)+b
核函数
上面提到的 K ( x i , x j ) K(x_i,x_j) K(xi,xj),其实就是核函数,它用来映射原始样本 x i , x i x_i,x_i xi,xi在高维特征空间下的內积,从而避免了直接在高维空间中进行计算。由于核函数的构造较为复杂,因此人们通常从一些常用的核函数中选择,而不是自己构造。一些常用的核函数如下:
- 线性核: K ( x i , x j ) = x i T x j K(x_i,x_j)=x_i^Tx_j K(xi,xj)=xiTxj
- 多项式核: K ( x i , x j ) = ( x i T x j ) d K(x_i,x_j)=(x_i^Tx_j)^d K(xi,xj)=(xiTxj)d(d是多项式的次数,d=1时为线性核)
- 高斯核: K ( x i , x j ) = e x p ( ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) , ( σ > 0 ) K(x_i,x_j)=exp(\frac{||x_i-x_j||^2}{2\sigma^2}),(\sigma>0) K(xi,xj)=exp(2σ2∣∣xi−xj∣∣2),(σ>0)
- 拉普拉斯核: K ( x i , x j ) = e x p ( ∣ ∣ x i − x j ∣ ∣ σ ) , ( σ > 0 ) K(x_i,x_j)=exp(\frac{||x_i-x_j||}{\sigma}),(\sigma>0) K(xi,xj)=exp(σ∣∣xi−xj∣∣),(σ>0)
- Sigmoid核: K ( x i , x j ) = t a n h ( β x i T x j + θ ) , ( β > 0 , θ > 0 ) K(x_i,x_j)=tanh(\beta x_i^Tx_j+\theta),(\beta >0,\theta>0) K(xi,xj)=tanh(βxiTxj+θ),(β>0,θ>0)
松弛变量
当样本是线性不可分的时候,往往需要映射到高维空间内计算。但有时仅仅只是因为数据有噪音,比如说,有一两个噪声,偏离了正常的位置。这些噪声如果作为支持向量的话,超平面将不得不变得偏离,间隔也会变小。如果我们能够允许数据点在一定程度上偏离超平面,这样我们依旧能够得到较好的超平面。因此我们定义一个变量
ξ
i
=
1
−
y
i
(
ω
T
x
i
+
b
)
\xi_i=1-y_i(\omega^Tx_i+b)
ξi=1−yi(ωTxi+b),使得约束条件变为:
y
i
(
ω
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
.
.
.
,
n
y_i(\omega ^Tx_i+b) \ge 1-\xi_i ,i=1,2,...,n
yi(ωTxi+b)≥1−ξi,i=1,2,...,n
ξ
i
\xi_i
ξi称为松弛变量,是样本
x
i
x_i
xi允许偏移的量。当
ξ
\xi
ξ很大时,任意的超平面都符合条件。所以在目标函数加上一项,使得
ξ
\xi
ξ的总和也要最小,新的优化目标为
m
i
n
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
(
13
)
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
2
,
.
.
.
m
ξ
i
≥
0
,
i
=
1
,
2
,
.
.
.
m
min\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i\qquad (13)\\ s.t. \qquad y_i(\omega^Tx_i+b)\ge 1-\xi_i,i=1,2,...m \\ \xi_i \ge 0,i=1,2,...m
min21∣∣ω∣∣2+Ci=1∑mξi(13)s.t.yi(ωTxi+b)≥1−ξi,i=1,2,...mξi≥0,i=1,2,...m
其中C作为惩罚参数,当C很大时,对分类错误的惩罚较大;当C较小时,对分类错误的惩罚较小,公式(13)要使最小间隔尽量大,误分类点尽量少,C是调和两者的权重系数。
在式子(13)中新增的松弛变量,其实可以看做是对损失函数
l
o
s
s
=
m
a
x
{
0
,
ξ
i
}
=
m
a
x
{
0
,
1
−
y
i
(
w
⋅
x
i
+
b
)
}
loss=max\{0,\xi_i\}=max\{0,1-y_i(w·x_i+b)\}
loss=max{0,ξi}=max{0,1−yi(w⋅xi+b)}
的优化,它又被称为合页损失函数。
当样本点被正确分类时且函数间隔
y
i
(
w
⋅
x
i
+
b
)
y_i(w·x_i+b)
yi(w⋅xi+b)大于1时,损失是0,否则损失是
1
−
y
i
(
w
⋅
x
i
+
b
)
1-y_i(w·x_i+b)
1−yi(w⋅xi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。
公式(13)的拉格朗日函数为
L
(
ω
,
b
,
a
,
ξ
,
μ
)
=
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
+
∑
i
=
1
m
a
i
(
1
−
ξ
i
−
y
i
(
ω
T
x
i
+
b
)
)
−
∑
i
=
1
m
μ
i
ξ
i
.
.
.
.
.
.
.
.
.
.
(
14
)
L(\omega,b,a,\xi,\mu)=\frac{1}{2}||\omega||^2+ C\sum_{i=1}^m\xi_i+\sum_{i=1}^ma_i(1-\xi_i-y_i(\omega^Tx_i+b))-\sum_{i=1}^m\mu_i\xi_i..........(14)
L(ω,b,a,ξ,μ)=21∣∣ω∣∣2+Ci=1∑mξi+i=1∑mai(1−ξi−yi(ωTxi+b))−i=1∑mμiξi..........(14)
该式子的KKT条件为:
{
a
i
≥
0
1
−
ξ
i
−
y
i
(
ω
T
x
i
+
b
)
≥
0
a
i
(
1
−
ξ
i
−
y
i
(
ω
T
x
i
+
b
)
)
=
0
ξ
i
≥
0
μ
i
≥
0
μ
i
ξ
i
=
0
\begin{cases} a_i \ge 0 \\ 1-\xi_i-y_i(\omega^Tx_i+b) \ge 0 \\ a_i(1-\xi_i-y_i(\omega^Tx_i+b)) = 0 \\ \xi_i \ge 0 \\ \mu_i \ge 0 \\ \mu_i\xi_i = 0 \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧ai≥01−ξi−yi(ωTxi+b)≥0ai(1−ξi−yi(ωTxi+b))=0ξi≥0μi≥0μiξi=0
求导后令偏导数为0,得
{
ω
=
∑
i
=
1
m
a
i
y
i
x
i
.
.
.
.
.
.
.
.
.
(
15
)
∑
i
=
1
m
a
i
y
i
=
0.........
(
16
)
∂
L
∂
ξ
i
=
C
−
a
i
−
μ
i
=
0
i
=
1
,
2
,
.
.
.
m
(
17
)
\begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i.........(15)\\ \sum\limits_{i=1}^ma_iy_i=0.........(16)\\ \frac{\partial L}{\partial \xi_i}=C-a_i-\mu_i=0\quad i=1,2,...m\qquad(17) \end{cases}
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧ω=i=1∑maiyixi.........(15)i=1∑maiyi=0.........(16)∂ξi∂L=C−ai−μi=0i=1,2,...m(17)
将公式(15)(16)(17)带入(14)得到
max
a
∑
i
=
1
m
a
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
a
i
a
j
y
i
y
j
x
i
x
j
.
.
.
.
.
.
.
.
.
.
.
.
.
(
18
)
s
.
t
.
∑
i
=
1
m
a
i
y
i
=
0
,
a
i
≥
0
,
μ
i
≥
0
,
0
≤
a
i
≤
C
,
i
=
1
,
2
,
.
.
.
m
\max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j.............(18) \\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,\mu_i \ge 0,0 \le a_i \le C,i=1,2,...m
amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjxixj.............(18)s.t.i=1∑maiyi=0,ai≥0,μi≥0,0≤ai≤C,i=1,2,...m
SMO算法
那么如何求解以上公式中的a呢?这里要用到的是一种高效求解的算法SMO算法,即序列最小最优化算法。a需要满足两个条件,因此我们同时更新两个变量,保证两个基本条件可以满足。假设我们更新变量
a
1
,
a
2
a_1,a_2
a1,a2,则其他变量
a
i
(
i
=
3
,
4
,
.
.
.
m
)
a_i(i=3,4,...m)
ai(i=3,4,...m)是固定的,令
ξ
=
−
∑
i
=
3
m
a
i
y
i
\xi=-\sum\limits_{i=3}^ma_iy_i
ξ=−i=3∑maiyi,则有
a
1
y
1
+
a
2
y
2
=
ξ
a_1y_1+a_2y_2=\xi
a1y1+a2y2=ξ。优化问题的子问题变为:
min
a
1
,
a
2
W
(
a
1
,
a
2
)
=
1
2
K
11
a
1
2
+
1
2
K
22
a
2
2
+
y
1
y
2
K
12
a
1
a
2
−
(
a
1
+
a
2
)
+
y
1
a
1
∑
i
=
3
m
y
i
a
i
K
i
1
+
y
2
a
2
∑
i
=
3
m
y
i
a
i
K
i
2
s
.
t
.
a
1
y
1
+
a
2
y
2
=
ξ
,
0
≤
a
i
≤
C
,
i
=
1
,
2
,
.
.
.
m
\min_{a_1,a_2}W(a_1,a_2)=\frac{1}{2}K_{11}a_1^2+\frac{1}{2}K_{22}a_2^2+y_1y_2K_{12}a_1a_2-(a_1+a_2)+y_1a_1\sum_{i=3}^my_ia_iK_{i1}+y_2a_2\sum_{i=3}^my_ia_iK_{i2} \\ s.t. \quad a_1y_1+a_2y_2=\xi,0 \le a_i \le C,i=1,2,...m
a1,a2minW(a1,a2)=21K11a12+21K22a22+y1y2K12a1a2−(a1+a2)+y1a1i=3∑myiaiKi1+y2a2i=3∑myiaiKi2s.t.a1y1+a2y2=ξ,0≤ai≤C,i=1,2,...m
由于
a
1
y
1
+
a
2
y
2
=
ξ
a_1y_1+a_2y_2=\xi
a1y1+a2y2=ξ等价于
{
a
1
+
a
2
=
ξ
a
1
−
a
2
=
ξ
\begin{cases}a_1+a_2=\xi \\ a_1-a_2=\xi\end{cases}
{a1+a2=ξa1−a2=ξ。由于
a
1
a_1
a1和
a
2
a_2
a2都位于0和C之间,目标函数的约束域是以(0,0),(0,C),(C,0),(C,C)围成的正方形区域,其中存在的
a
1
+
a
2
=
ξ
a_1+a_2=\xi
a1+a2=ξ和
a
1
−
a
2
=
ξ
a_1-a_2=\xi
a1−a2=ξ两条直线。由条件
a
1
y
1
+
a
2
y
2
=
ξ
,
y
i
2
=
1
a_1y_1+a_2y_2=\xi,y_i^2=1
a1y1+a2y2=ξ,yi2=1得
a
1
=
(
ξ
−
a
2
y
2
)
y
1
a_1=(\xi-a_2y_2)y_1
a1=(ξ−a2y2)y1,回代到
W
(
a
1
,
a
2
)
W(a_1,a_2)
W(a1,a2)得到只包含
a
2
a_2
a2的函数
W
(
a
2
)
=
1
2
K
11
(
ξ
−
a
2
y
2
)
2
+
1
2
K
22
a
2
2
+
y
2
K
12
(
ξ
−
a
2
y
2
)
a
2
−
(
ξ
−
a
2
y
2
)
y
1
−
a
2
+
v
1
(
ξ
−
a
2
y
2
)
+
y
2
v
2
a
2
W(a_2)=\frac{1}{2}K_{11}(\xi-a_2y_2)^2+\frac{1}{2}K_{22}a_2^2+y_2K_{12}(\xi-a_2y_2)a_2\\-(\xi-a_2y_2)y_1-a_2+v_1(\xi-a_2y_2)+y_2v_2a_2
W(a2)=21K11(ξ−a2y2)2+21K22a22+y2K12(ξ−a2y2)a2−(ξ−a2y2)y1−a2+v1(ξ−a2y2)+y2v2a2,
其中
v
i
=
∑
j
=
3
N
a
j
y
j
K
(
x
i
,
x
j
)
=
g
(
x
)
−
∑
j
=
1
2
a
j
y
j
K
(
x
i
,
x
j
)
−
b
,
i
=
1
,
2
v_i=\sum_{j=3}^Na_jy_jK(x_i,x_j)=g(x)-\sum_{j=1}^2a_jy_jK(x_i,x_j)-b,i=1,2
vi=j=3∑NajyjK(xi,xj)=g(x)−j=1∑2ajyjK(xi,xj)−b,i=1,2
令
g
(
x
)
=
∑
i
=
1
N
a
i
y
i
K
(
x
i
,
x
)
+
b
E
i
=
g
(
x
i
)
−
y
i
=
(
∑
j
=
1
N
a
j
y
j
K
(
x
j
,
x
i
)
+
b
)
−
y
i
,
i
=
1
,
2
g(x)=\sum_{i=1}^Na_iy_iK(x_i,x)+b \\ E_i=g(x_i)-y_i=\left(\sum_{j=1}^Na_jy_jK(x_j,x_i)+b\right)-y_i,i=1,2
g(x)=i=1∑NaiyiK(xi,x)+bEi=g(xi)−yi=(j=1∑NajyjK(xj,xi)+b)−yi,i=1,2
其中
E
i
E_i
Ei表示函数g(x)对输入
x
i
x_i
xi的预测值与真实输出
y
i
y_i
yi的差。
对
W
(
a
2
)
W(a_2)
W(a2)求导并令其为0,且
a
1
o
l
d
y
1
+
a
2
o
l
d
y
2
=
ξ
a_1^{old}y_1+a_2^{old}y_2=\xi
a1oldy1+a2oldy2=ξ,
η
=
K
11
−
2
K
12
+
K
22
=
(
ϕ
(
x
1
)
−
ϕ
(
x
2
)
)
2
\eta=K_{11}-2K_{12}+K_{22}=(\phi(x_1)-\phi(x_2))^2
η=K11−2K12+K22=(ϕ(x1)−ϕ(x2))2,于是得到
a
2
n
e
w
,
u
n
c
=
a
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
a_2^{new,unc}=a_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
a2new,unc=a2old+ηy2(E1−E2)
我们的目标是求在正方形内的线段上的最优值,令线段的左端点为L,右端点为H,则有
a
1
,
a
2
a_1,a_2
a1,a2的更新值如下
a
2
n
e
w
=
{
H
,
a
2
n
e
w
,
u
n
c
>
H
a
2
n
e
w
,
u
n
c
,
L
≤
a
2
n
e
w
,
u
n
c
≤
H
L
,
a
2
n
e
w
,
u
n
c
<
L
a
1
n
e
w
=
a
1
o
l
d
+
y
1
y
2
(
a
2
o
l
d
−
a
2
n
e
w
)
a_2^{new}= \begin{cases} H,a_2^{new,unc} > H \\ a_2^{new,unc} ,L \le a_2^{new,unc} \le H \\ L, a_2^{new,unc} < L \end{cases} \\ a_1^{new}=a_1^{old}+y_1y_2(a_2^{old}-a_2^{new})
a2new=⎩⎪⎨⎪⎧H,a2new,unc>Ha2new,unc,L≤a2new,unc≤HL,a2new,unc<La1new=a1old+y1y2(a2old−a2new)
关于
a
1
,
a
2
a_1,a_2
a1,a2变量的选择,SMO采用启发式选择,选择的a应该满足KKT条件,并且更新时应该最大限度地它包含三个步骤:
- 扫描所有拉格朗日乘子,把第一个违反KKT条件的作为更新对象,令其为 a j a_j aj;
- 在所有不违反KKT条件的乘子中,选择使 ∣ E i − E j ∣ |E_i-E_j| ∣Ei−Ej∣最大的 a i a_i ai。
- 重新计算 b 、 E i , E j b、E_i,E_j b、Ei,Ej。
SMO算法的主要步骤总结如下:
- 选择接下来要更新的一对 a i a_i ai和 a j a_j aj;采用启发式的方式进行选择,使目标函数最大程度接近全局最优值。
- 将 a i a_i ai和 a j a_j aj进行优化,保持其他所有的 a k ( k ≠ i , j ) a_k(k \ne i,j) ak(k̸=i,j)不变。
合页损失函数
对于线性支持向量机来说,还有另外一种解释就是最小化以下目标函数:
∑
i
=
1
N
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
\sum_{i=1}^N[1-y_i(w·x_i+b)]_++\lambda||w||^2
i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
其中第一项是经验损失,函数
L
(
y
(
w
⋅
x
+
b
)
)
=
[
1
−
y
i
(
w
⋅
x
i
+
b
)
]
+
L(y(w·x+b))=[1-y_i(w·x_i+b)]_+
L(y(w⋅x+b))=[1−yi(w⋅xi+b)]+被称为合页损失函数。下标“+”表示以下函数
[
z
]
+
=
{
z
,
z
>
0
0
,
z
≤
0
[z]_+= \begin{cases} z, & z \gt 0\\ 0, & z \le 0 \end{cases}
[z]+={z,0,z>0z≤0
当样本点被正确分类时且函数间隔
y
i
(
w
⋅
x
i
+
b
)
y_i(w·x_i+b)
yi(w⋅xi+b)大于1时,损失是0,否则损失是
1
−
y
i
(
w
⋅
x
i
+
b
)
1-y_i(w·x_i+b)
1−yi(w⋅xi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。