一. SVM简介
支持向量机一般用于解决二分类问题,即给定数据集T={(
x
1
x_1
x1,
y
1
y_1
y1),(
x
2
x_2
x2,
y
2
y_2
y2),(
x
3
x_3
x3,
y
3
y_3
y3)…},找到一个可以分开数据集的超平面:
w
∗
⋅
x
+
b
∗
=
0
(
式
1.1
)
w^* \cdot x+b^*=0\qquad (式 \ 1.1)
w∗⋅x+b∗=0(式 1.1)此最优超平面应当使支持向量到超平面上的几何间隔d最大。
如上图所示,在向量空间中构造三个相互平行的超平面F,Fa,Fb。一般将离超平面F最近的一些样本点称之为支持向量(Support Vector),由支持向量约束构成的超平面Fa,Fb称为支持超平面。由于在超平面F与样本集均确定的条件下,所有支持向量也是确定的,在训练过程中需要计算所有支持向量到超平面F的几何间隔d。
二. 将几何间隔最大值问题转化为最小值问题
几何间隔
d
d
d与间隔
u
u
u可以用以下公式计算,其中
(
x
,
y
)
(x,y)
(x,y)为样本点:
d
=
y
⋅
(
w
∗
⋅
x
+
b
∗
)
⋅
1
∣
∣
w
∣
∣
(
式
2.1
)
d=y\cdot (w^* \cdot x+b^*)\cdot \frac{1}{||w||}\qquad (式 \ 2.1)
d=y⋅(w∗⋅x+b∗)⋅∣∣w∣∣1(式 2.1)
u
=
y
⋅
(
w
∗
⋅
x
+
b
∗
)
(
式
2.2
)
u=y\cdot (w^* \cdot x+b^*)\qquad (式 \ 2.2)
u=y⋅(w∗⋅x+b∗)(式 2.2)
y
y
y表示数据标签,在二分类问题中一般为1/-1,这样定义后,不论样本点在超平面的哪一侧,都能保证
u
u
u总为正数。在实际使用中,为了方便计算,通常固定间隔
u
=
1
u=1
u=1,这样,求
d
d
d的最大值问题变为求
∣
∣
w
∣
∣
||w||
∣∣w∣∣的最小值问题,于是可以转化为求解如下的二次规划问题:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
(
式
2.3
)
\min_{w,b}\frac{1}{2}||w||^2\qquad (式 \ 2.3)
w,bmin21∣∣w∣∣2(式 2.3)
条
件
:
y
i
⋅
(
w
⋅
x
i
+
b
)
−
1
=
0
,
i
=
1
,
2
,
.
.
.
,
N
条件:y_i\cdot (w\cdot x_i+b)-1=0,i=1,2,...,N
条件:yi⋅(w⋅xi+b)−1=0,i=1,2,...,N
对于线性可分数据集,这是一个凸二次规划问题,必有解。
三. 将二次规划问题转化为对偶优化问题
定义拉格朗日函数:
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
N
λ
i
y
i
(
w
⋅
x
i
+
b
)
+
∑
i
=
1
N
λ
i
(
式
3.1
)
L(w,b,\lambda)=\frac{1}{2}||w||^2-\sum_{i=1}^N\lambda_iy_i(w\cdot x_i+b)+\sum_{i=1}^N\lambda_i\qquad (式 \ 3.1)
L(w,b,λ)=21∣∣w∣∣2−i=1∑Nλiyi(w⋅xi+b)+i=1∑Nλi(式 3.1)
根据拉格朗日对偶性,(式 2.3)的对偶问题是以下极大极小值问题:
max
λ
min
w
,
b
L
(
w
,
b
,
λ
)
(
式
3.2
)
\max_\lambda\min_{w,b}L(w,b,\lambda)\qquad (式 \ 3.2)
λmaxw,bminL(w,b,λ)(式 3.2)
可以分两步解决:
- 求
min
w
,
b
L
(
w
,
b
,
λ
)
\min_{w,b}L(w,b,\lambda)
minw,bL(w,b,λ)
拉格朗日函数 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ)分别对 w , b w,b w,b求偏导,并令其等于0,整理后可得到: w = ∑ i = 1 N λ i y i x i ( 式 3.3 ) w=\sum_{i=1}^N\lambda_iy_ix_i\qquad (式 \ 3.3) w=i=1∑Nλiyixi(式 3.3) ∑ i = 1 N λ i y i = 0 ( 式 3.4 ) \sum_{i=1}^N\lambda_iy_i=0\qquad (式 \ 3.4) i=1∑Nλiyi=0(式 3.4)将(式 3.3)与(式 3.4)带入(式 3.1)中,即可得到: 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 ( 式 3.5 ) \min_{w,b}L(w,b,\lambda)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\lambda_i\qquad (式 \ 3.5) w,bminL(w,b,λ)=−21i=1∑Nj=1∑Nλiλjyiyj(xi⋅xj)+i=1∑Nλi(式 3.5) - 求
min
w
,
b
L
(
w
,
b
,
λ
)
\min_{w,b}L(w,b,\lambda)
minw,bL(w,b,λ)对
λ
\lambda
λ的极大值
在(式 3.5)前加负号将极大值问题转化为极小值问题: min λ 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x i ⋅ x j ) = ∑ i = 1 N λ i ( 式 3.6 ) \min_\lambda\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(x_i\cdot x_j)=\sum_{i=1}^N\lambda_i\qquad (式 \ 3.6) λmin21i=1∑Nj=1∑Nλiλjyiyj(xi⋅xj)=i=1∑Nλi(式 3.6) 条 件 : ∑ i = 1 N λ i y i = 0 λ i ≥ 0 , i = 1 , 2 , . . . , N 条件:\sum_{i=1}^N\lambda_iy_i=0\quad \lambda_i\geq0,i=1,2,...,N 条件:i=1∑Nλiyi=0λi≥0,i=1,2,...,N
由(式 3.6)可以求得拉格朗日乘子 λ \lambda λ,依据 λ \lambda λ带入(式 3.3)与(式 3.1)中可以求得 w , b w,b w,b,最终带入(式 1.1)即可得到最终超平面方程为: ∑ i = 1 N λ i y i ( x i ⋅ x ) + y i − ∑ i = 1 N λ i y i ( x i ⋅ x j ) = 0 ( 式 3.7 ) \sum_{i=1}^N\lambda_iy_i(x_i\cdot x)+y_i-\sum_{i=1}^N\lambda_iy_i(x_i\cdot x_j)=0\qquad (式 \ 3.7) i=1∑Nλiyi(xi⋅x)+yi−i=1∑Nλiyi(xi⋅xj)=0(式 3.7)
四. 核函数
核函数的标准定义:
设
X
X
X为输入空间,而
H
H
H为特征空间,设存在一个从
X
X
X到
H
H
H的映射
ϕ
(
x
)
:
X
→
H
\phi(x):X\rightarrow 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
)
\phi(x)
ϕ(x)为映射函数。式中
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi(x)\cdot \phi(z)
ϕ(x)⋅ϕ(z)为
ϕ
(
x
)
\phi(x)
ϕ(x)与
ϕ
(
z
)
\phi(z)
ϕ(z)的内积。
在上文的(式3.6)与(式3.7)中,可以注意到样本的输入x总是成对乘积的形式,在此可以将两个输入的欧式乘积定义为核函数
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj),利用此核函数就可求得最终解。
核函数可以将输入空间通过映射函数映射到特征空间中,一般来说从低维映射到高维。在低维空间中的线性不可分问题转化至高维空间中可能为线性可分问题,即在高维空间中使用
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi(x)\cdot \phi(z)
ϕ(x)⋅ϕ(z)求解优化问题。利用核函数不需要显性地给定映射,而只需定义一个低维空间中的运算使其值等于在高维空间中的乘积运算。
常用的核函数有以下几种:
- 线性核: K ( x 1 , x 2 ) = x 1 T x 2 + c K(x_1,x_2)=x_1^Tx_2+c K(x1,x2)=x1Tx2+c
- 多项式核: K ( x 1 , x 2 ) = ( a x 1 T x 2 + c ) d K(x_1,x_2)=(ax_1^Tx_2+c)^d K(x1,x2)=(ax1Tx2+c)d
- 径向基核函数: K ( x 1 , x 2 ) = exp ( − γ ∣ ∣ x 1 − x 2 ∣ ∣ 2 ) K(x_1,x_2)=\exp(-\gamma||x_1-x_2||^2) K(x1,x2)=exp(−γ∣∣x1−x2∣∣2)
- Sigmoid核函数: K ( x 1 , x 2 ) = tanh ( a ( x 1 T x 2 ) + c ) K(x_1,x_2)=\tanh(a(x_1^Tx_2)+c) K(x1,x2)=tanh(a(x1Tx2)+c)