支持向量机(Support Vector Machine简称SVM)感觉是一个很难理解的方面,他的过程重点是在数学建模的过程。我在这次笔记中对概念性的知识大概描述,对数学推导的过程着重学习。
SVM简介
支持向量机SVM是Cortes和Vapnik与1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,比那个能够推广到函数拟合等其他机器学习问题中。
支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力)。 [1]
总结:支持向量机其实就是寻找一个平面划分(在二位平面就是找界限;在三位空间就是找面),可以以这个为界限把训练的样本划分开来。
1.间隔与支持向量
在样本空间中,我们用线性方程来描述超平面划分:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
那么我们如何来寻找最适合的超平面划分呢?他首先要符合的条件是这条线要在两类训练样本的“正中间”。在中学我们学习过线性方程的位置是由
w
,
b
w,b
w,b决定的,那么要找到最合适的一组
w
,
b
w,b
w,b(且平行),使他们的距离最大(容错率最大),中间的平面就是我们所要的超平面划分。(说的也许有些啰嗦。。。可以看着下面的图进行理解)
我们先将
w
T
x
+
b
≥
1
w^Tx+b≥1
wTx+b≥1的部分记为正例(+1);
w
T
x
+
b
≤
1
w^Tx+b≤1
wTx+b≤1的称为负例(-1)。为了方便表示,我们引入了
y
i
y_i
yi来表示+1、-1。
y
i
(
w
T
x
i
+
b
)
−
1
≥
0
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
①
y_i(w^Tx_i+b)-1≥0·················①
yi(wTxi+b)−1≥0⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅①
注:当为正例时,
y
i
=
+
1
y_i=+1
yi=+1;当为负例时,
y
i
=
−
1
y_i=-1
yi=−1
我们开始计算正负例子到超平面的距离:
w
i
d
t
h
=
(
x
+
−
x
−
)
w
∣
∣
w
∣
∣
width=(x_+-x_-)\frac{w}{||w||}
width=(x+−x−)∣∣w∣∣w
→
w
i
d
t
h
=
w
x
+
−
w
x
−
∣
∣
w
∣
∣
→width=\frac{wx_+-wx_-}{||w||}
→width=∣∣w∣∣wx+−wx−
∵
当
w
x
+
时
y
i
=
+
1
由
①
得
w
T
x
+
+
b
≥
1
即
w
T
x
+
≥
1
−
b
∵当wx_+时 y_i=+1 由①得w^Tx_++b≥1即w^Tx_+≥1-b
∵当wx+时yi=+1由①得wTx++b≥1即wTx+≥1−b
∵
当
w
x
−
时
y
i
=
−
1
由
①
得
w
T
x
−
+
b
≤
−
1
即
−
(
w
T
x
−
)
≥
1
+
b
∵当wx_-时 y_i=-1 由①得w^Tx_-+b≤-1 即-(w^Tx_-)≥1+b
∵当wx−时yi=−1由①得wTx−+b≤−1即−(wTx−)≥1+b
∴
w
i
d
t
h
=
w
x
+
−
w
x
−
∣
∣
w
∣
∣
≥
1
−
b
+
(
1
+
b
)
∣
∣
w
∣
∣
=
2
∣
∣
w
∣
∣
∴width=\frac{wx_+-wx_-}{||w||}≥\frac{1-b+(1+b)}{||w||}=\frac{2}{||w||}
∴width=∣∣w∣∣wx+−wx−≥∣∣w∣∣1−b+(1+b)=∣∣w∣∣2
我们称上式中的width为间隔,设为
r
r
r
即
r
=
2
∣
∣
w
∣
∣
即r=\frac{2}{||w||}
即r=∣∣w∣∣2
r = 2 ∣ ∣ w ∣ ∣ r=\frac{2}{||w||} r=∣∣w∣∣2
我们要寻找最大的间隔(margin),就是寻找 w , b w,b w,b使得 r r r最大。欲使 r r r最大,就要让 w w w最小或 r = ∣ ∣ w ∣ ∣ 2 2 r=\frac{||w||^2}{2} r=2∣∣w∣∣2最大。(为什么是 ∣ ∣ w ∣ ∣ 2 呢 ? 是 因 为 方 便 进 行 求 导 ||w||^2呢?是因为方便进行求导 ∣∣w∣∣2呢?是因为方便进行求导)
对偶问题
对偶问题就是用来解决大间隔划分超平面所对应的模型。在刚才的式子中添加拉格朗日乘子
a
i
≥
0
a_i≥0
ai≥0,则该问题的拉格朗日函数可写为:
L
(
w
,
b
,
a
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
a
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^ma_i(1-y_i(w^Tx_i+b))
L(w,b,a)=21∣∣w∣∣2+i=1∑mai(1−yi(wTxi+b))
首先对拉格朗日函数
L
(
w
,
b
,
a
)
L(w,b,a)
L(w,b,a)求偏导数:
α
L
α
w
=
∣
∣
w
∣
∣
+
∑
i
=
1
m
a
i
y
i
x
i
\frac{\alpha L}{\alpha w}=||w||+\sum_{i=1}^ma_iy_ix_i
αwαL=∣∣w∣∣+i=1∑maiyixi
令
α
L
α
w
=
0
\frac{\alpha L}{\alpha w}=0
αwαL=0则
∣
∣
w
∣
∣
=
∑
i
=
1
m
a
i
y
i
x
i
||w||=\sum_{i=1}^ma_iy_ix_i
∣∣w∣∣=∑i=1maiyixi
α
L
α
b
=
∑
i
=
1
m
a
i
y
i
\frac{\alpha L}{\alpha b}=\sum_{i=1}^ma_iy_i
αbαL=i=1∑maiyi
令
α
L
α
b
=
0
\frac{\alpha L}{\alpha b}=0
αbαL=0则
∑
i
=
1
m
a
i
y
i
=
0
\sum_{i=1}^ma_iy_i=0
∑i=1maiyi=0
将上面的两个式子带回拉格朗日函数:
L
(
w
,
b
,
a
)
=
1
2
w
T
w
+
∑
i
=
1
m
[
a
i
−
a
i
y
i
(
w
T
x
i
+
b
)
]
L(w,b,a)=\frac{1}{2}w^Tw+\sum_{i=1}^m [ a_i -a_iy_i(w^Tx_i+b)]
L(w,b,a)=21wTw+∑i=1m[ai−aiyi(wTxi+b)]
=
1
2
w
T
w
+
∑
i
=
1
m
a
i
−
∑
i
=
1
m
a
i
y
i
w
T
x
i
−
∑
i
=
1
m
a
i
y
i
b
=\frac{1}{2}w^Tw+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_iw^Tx_i-\sum_{i=1}^ma_iy_ib
=21wTw+∑i=1mai−∑i=1maiyiwTxi−∑i=1maiyib
=
1
2
w
T
∑
i
=
1
m
a
i
y
i
x
i
+
∑
i
=
1
m
a
i
−
∑
i
=
1
m
a
i
y
i
w
T
x
i
−
∑
i
=
1
m
a
i
y
i
b
= \frac{1}{2}w^T\sum_{i=1}^ma_iy_ix_i+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_iw^Tx_i-\sum_{i=1}^ma_iy_ib
=21wT∑i=1maiyixi+∑i=1mai−∑i=1maiyiwTxi−∑i=1maiyib
=
−
1
2
w
T
∑
i
=
1
m
a
i
y
i
x
i
−
b
∑
i
=
1
m
a
i
y
i
+
∑
i
=
1
m
a
i
=- \frac{1}{2}w^T\sum_{i=1}^ma_iy_ix_i-b\sum_{i=1}^ma_iy_i+\sum_{i=1}^ma_i
=−21wT∑i=1maiyixi−b∑i=1maiyi+∑i=1mai
=
∑
i
=
1
m
a
i
−
1
2
w
T
∑
i
=
1
m
a
i
y
i
x
i
=\sum_{i=1}^ma_i- \frac{1}{2}w^T\sum_{i=1}^ma_iy_ix_i
=∑i=1mai−21wT∑i=1maiyixi
=
∑
i
=
1
m
a
i
−
1
2
∑
i
,
j
=
1
m
a
i
a
j
y
i
y
j
x
i
T
x
j
=\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i,j=1}^ma_ia_jy_iy_jx_i^Tx_j
=∑i=1mai−21∑i,j=1maiajyiyjxiTxj
这样就推出了对偶问题的相关性问题:
m
a
x
α
∑
i
=
1
m
a
i
−
1
2
∑
i
,
j
=
1
m
a
i
a
j
y
i
y
j
x
i
T
x
j
max_{\alpha}\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i,j=1}^ma_ia_jy_iy_jx_i^Tx_j
maxαi=1∑mai−21i,j=1∑maiajyiyjxiTxj