支持向量机SVM
SVM有三宝,间隔、对偶、核技巧
- SVM:
- hard-margin SVM
- soft-margin SVM
- kernel SVM
1. 间隔和支持向量
基于训练集
D
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
,
y
i
∈
−
1
,
+
1
D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},y_i \in {-1,+1}
D=(x1,y1),(x2,y2),...,(xm,ym),yi∈−1,+1在样本空间中找到一个划分超平面,将不同的样本分开。
SVM本质上是一个判别模型,跟概率无关。
可以将样本点分开的线有无线条,SVM从几何意义上就是找到最好的一条。
上图中靠经样本点的线收到噪声的干扰影响很大,鲁棒性很差,泛化误差大。
我们就是要找到最中间的一条线,它距离点的值之和最大。
-
超平面: ω T x + b = 0 \omega^Tx+b=0 ωTx+b=0
- ω = ( ω 1 ; ω 2 ; . . . ; ω d ) \omega=(\omega_1;\omega_2;...;\omega_d) ω=(ω1;ω2;...;ωd)为法向量,决定了超平面的方向
- b b b为位移项,决定了超平面与远点之间的位置。
-
距离
- r = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ r=\frac{|\omega^Tx+b|}{||\omega||} r=∣∣ω∣∣∣ωTx+b∣
-
分类——对于 ( x i , y i ) ∈ D (x_i,y_i)\in D (xi,yi)∈D
- ω T x i + b ⩾ 0 \omega^Tx_i+b\geqslant0 ωTxi+b⩾0时, y i = + 1 y_i=+1 yi=+1
- ω T x i + b ⩽ 0 \omega^Tx_i+b\leqslant0 ωTxi+b⩽0时, y i = − 1 y_i=-1 yi=−1
-
间隔(margin)
-
距离超平面最近的训练样本使上式等号成立,他们被称为“支持向量”(support vector),两个一类支持向量到超平面的距离之和为 γ = 2 ∣ ∣ ω ∣ ∣ \gamma=\frac{2}{||\omega||} γ=∣∣ω∣∣2,他被称为间隔。
要找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到能满足上式约束的参数
ω
,
b
\omega,b
ω,b使得
γ
\gamma
γ最大:
为了最大化间隔,仅需要最大化
∣
∣
ω
∣
∣
−
1
||\omega||^{-1}
∣∣ω∣∣−1,等价于最小化
∣
∣
ω
∣
∣
2
||\omega||^{2}
∣∣ω∣∣2,于是有:
2.对偶
希望求解上式得到最大间隔划分超平面所对应的模型: f ( x ) = ω T x + b f(x)=\omega^Tx+b f(x)=ωTx+b.
(6.6)本身是一个凸二次规划(convex quadratic programming)问题,我们可以对其使用拉格朗日乘子法得到其对应的“对偶问题”(dual problem).对(6.6)的每条约束添加拉格朗日乘子
α
i
⩾
0
\alpha_i\geqslant0
αi⩾0,则该问题的拉格朗日函数可以写成:
其中
α
=
(
α
1
;
α
2
;
.
.
.
;
α
m
)
\alpha=(\alpha_1;\alpha_2;...;\alpha_m)
α=(α1;α2;...;αm).令
L
(
ω
,
b
,
α
)
L(\omega,b,\alpha)
L(ω,b,α)对
ω
和
b
\omega和b
ω和b的偏导值为0:
3.核函数
我们之前假设样本是线性可分的,即存在一个划分超平面能将样本正确分类。限时任务重,原始样本点可能不是线性可分,即不存在超平面,如“异或”。
可将样本从原始空间映射到一个更高维的特征空间 ,使得样本在这个特征空间内线性可分.上图就是将原始的二维空间映射到一个合适的三维空间,这样就获得了一个合适的划分超平面。
令
ϕ
(
x
)
\phi(x)
ϕ(x)表示将
x
x
x映射后的特征向量,特征空间中的划分超平面对应的模型为
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
f(x)=\omega^T\phi(x)+b
f(x)=ωTϕ(x)+b.
求解(6.21)涉及到计算
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi(x_i)^T\phi(x_j)
ϕ(xi)Tϕ(xj),这是样本
x
i
x_i
xi与
x
j
x_j
xj映射到特征空间之后的内积。特征空间可能是无穷维,计算很困难。因此我们设计这样一个函数:
这里的
k
(
⋅
,
⋅
)
k(·,·)
k(⋅,⋅)就是核函数(kernel function).上式显示出模型最优解可以通过训练样本的核函数展开,这一展开式称为“支持向量展式”(support vector expansion).
若已知合适映射
ϕ
(
⋅
)
\phi(·)
ϕ(⋅)的具体形式,则可以写出核函数
k
(
⋅
,
⋅
)
k(·,·)
k(⋅,⋅).但是一般不知道,我们有以下定理:
- 若 k 1 k_1 k1和 k 2 k_2 k2为核函数,则对于任意正数 γ 1 、 γ 2 \gamma_1、\gamma_2 γ1、γ2,其线性组合 γ 1 k 1 + γ 2 k 2 \gamma_1k_1+\gamma_2k_2 γ1k1+γ2k2也是核函数。
- 若 k 1 k_1 k1和 k 2 k_2 k2为核函数,则核函数的直积 k 1 ⨂ k 2 ( ) x , z = k 1 ( x , z ) k 2 ( x , z ) k_1\bigotimes k_2()x,z=k_1(x,z)k_2(x,z) k1⨂k2()x,z=k1(x,z)k2(x,z)也是核函数。
- 若 k 1 k_1 k1为核函数,则对于任意函数 g ( x ) g(x) g(x), k ( x , z ) = g ( x , z ) g ( z ) k(x,z)=g(x,z)g(z) k(x,z)=g(x,z)g(z)也是核函数。