简介
支持向量机是一种二分类模型,其基本模型是定义在特征空间上的间隔最大化的线性分类器。它的学习算法是求解凸二次规划的最优化算法。
线性可分支持向量机与硬间隔最大化
上面的图是一组典型的二分类模型,使用一条直线将两个线性可分的类分开,这样的直线可以有无数条,但是使间隔最大的只有一条。支持向量机寻找的就是这一条直线。
首先定义间隔:
给定一个特征空间上的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T = \left\{ {\left( {{x_1},{y_1}} \right),\left( {{x_2},{y_2}} \right), \cdots ,({x_N},{y_N})} \right\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)}其中
y
i
y_i
yi的值为±1,这个数据集是一个二类线性可分得数据集。
对于一个给定的数据集和超平面
(
ω
,
b
)
\left( {\omega ,b} \right)
(ω,b),其函数间隔为
γ
^
=
min
i
=
1
,
⋯
,
N
y
i
(
ω
x
i
+
b
)
\hat \gamma = \mathop {\min }\limits_{i = 1, \cdots ,N} {y_i}\left( {\omega {x_i} + b} \right)
γ^=i=1,⋯,Nminyi(ωxi+b)对其中
ω
\omega
ω规范化,
∥
ω
∥
=
1
\left\| \omega \right\| = 1
∥ω∥=1,这时得到我们需要的几何间隔。
γ
=
min
i
=
1
,
⋯
,
N
y
i
(
ω
∥
ω
∥
⋅
x
i
+
b
∥
ω
∥
)
\gamma = \mathop {\min }\limits_{i = 1, \cdots ,N} {y_i}\left( {{\omega \over {\left\| \omega \right\|}} \cdot {x_i} + {b \over {\left\| \omega \right\|}}} \right)
γ=i=1,⋯,Nminyi(∥ω∥ω⋅xi+∥ω∥b)
间隔最大化
支持向量机学习就是求解一个间隔最大的分离面,这可以表示为以下的一个规划问题
max
ω
,
b
γ
\mathop {\max }\limits_{\omega ,b} \gamma
ω,bmaxγ
s
.
t
.
y
i
(
ω
∥
ω
∥
⋅
x
i
+
b
∥
ω
∥
)
≥
γ
,
i
=
1
,
⋯
,
N
s.t.{y_i}\left( {{\omega \over {\left\| \omega \right\|}} \cdot {x_i} + {b \over {\left\| \omega \right\|}}} \right) \ge \gamma ,i = 1, \cdots ,N
s.t.yi(∥ω∥ω⋅xi+∥ω∥b)≥γ,i=1,⋯,N即希望最大化超平面
(
ω
,
b
)
\left( {\omega ,b} \right)
(ω,b)关于训练集的几何间隔,约束条件表示为超平面
(
ω
,
b
)
\left( {\omega ,b} \right)
(ω,b)关于每个训练样本点的几何间隔至少是
γ
\gamma
γ。
又因为函数间隔跟几何间隔有如下关系:
γ
=
γ
^
∥
ω
∥
\gamma = {{\hat \gamma } \over {\left\| \omega \right\|}}
γ=∥ω∥γ^所以上述规划问题可以写成如下形式
max
ω
,
b
γ
^
∥
ω
∥
\mathop {\max }\limits_{\omega ,b} {{\hat \gamma } \over {\left\| \omega \right\|}}
ω,bmax∥ω∥γ^
s
.
t
.
y
i
(
ω
⋅
x
i
+
b
)
≥
γ
^
,
i
=
1
,
⋯
,
N
s.t.{y_i}\left( {\omega \cdot {x_i} + b} \right) \ge \hat \gamma ,i = 1, \cdots ,N
s.t.yi(ω⋅xi+b)≥γ^,i=1,⋯,N函数间隔的取值不影响优化问题的解,假设
ω
\omega
ω和
b
b
b按比例改变为
λ
ω
\lambda \omega
λω和
λ
b
\lambda b
λb,函数间隔变为
λ
γ
^
\lambda \hat \gamma
λγ^,而函数间隔这一改变对优化问的没有任何影响,所以我们取
γ
^
=
1
\hat \gamma = 1
γ^=1。最大化
1
∥
ω
∥
{1 \over {\left\| \omega \right\|}}
∥ω∥1和最小化
1
2
∥
ω
∥
2
{1 \over 2}{\left\| \omega \right\|^2}
21∥ω∥2是等价的,于是就得到了线性可分支持向量机学习的最优化模型
min
ω
,
b
1
2
∥
ω
∥
2
\mathop {\min }\limits_{\omega ,b} {1 \over 2}{\left\| \omega \right\|^2}
ω,bmin21∥ω∥2
s
.
t
.
y
i
(
ω
⋅
x
i
+
b
)
−
1
≥
0
,
i
=
1
,
⋯
,
N
s.t.{y_i}\left( {\omega \cdot {x_i} + b} \right) - 1 \ge 0,i = 1, \cdots ,N
s.t.yi(ω⋅xi+b)−1≥0,i=1,⋯,N
对偶问题
上述的最优化问题是一个凸二次规划问题,可以将它作为原始问题,利用拉格朗日对偶性,通过求解对偶问题的解得到原始问题的解。
首先构造拉格朗日函数,为每个不等式约束引入拉格朗日乘子
α
i
≥
0
,
i
=
1
,
⋯
,
N
{\alpha _i} \ge 0,i = 1, \cdots ,N
αi≥0,i=1,⋯,N,定义拉格朗日函数:
L
(
ω
,
b
,
α
)
=
1
2
∥
ω
∥
2
−
∑
i
=
1
N
α
i
y
i
(
ω
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
L\left( {\omega ,b,\alpha } \right) = {1 \over 2}{\left\| \omega \right\|^2} - \sum\limits_{i = 1}^N {{\alpha _i}{y_i}\left( {\omega \cdot {x_i} + b} \right)} + \sum\limits_{i = 1}^N {{\alpha _i}}
L(ω,b,α)=21∥ω∥2−i=1∑Nαiyi(ω⋅xi+b)+i=1∑Nαi为了得到对偶问题的解,需要先求
L
(
ω
,
b
,
α
)
L\left( {\omega ,b,\alpha } \right)
L(ω,b,α)对
ω
,
b
{\omega ,b}
ω,b的极小,再求对
α
\alpha
α的极大。
求 min ω , b L ( ω , b , α ) \mathop {\min }\limits_{\omega ,b} L\left( {\omega ,b,\alpha } \right) ω,bminL(ω,b,α)
将拉格朗日函数
L
(
ω
,
b
,
α
)
L\left( {\omega ,b,\alpha } \right)
L(ω,b,α)分别对
ω
,
b
{\omega ,b}
ω,b求偏导并令其等于0
∇
ω
L
(
ω
,
b
,
α
)
=
ω
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
{\nabla _\omega }L\left( {\omega ,b,\alpha } \right) = \omega - \sum\limits_{i = 1}^N {{\alpha _i}{y_i}{x_i} = 0}
∇ωL(ω,b,α)=ω−i=1∑Nαiyixi=0
∇
b
L
(
ω
,
b
,
α
)
=
∑
i
=
1
N
α
i
y
i
=
0
{\nabla _b}L\left( {\omega ,b,\alpha } \right) = \sum\limits_{i = 1}^N {{\alpha _i}{y_i} = 0}
∇bL(ω,b,α)=i=1∑Nαiyi=0得
ω
=
∑
i
=
1
N
α
i
y
i
x
i
\omega = \sum\limits_{i = 1}^N {{\alpha _i}{y_i}{x_i}}
ω=i=1∑Nαiyixi
∑
i
=
1
N
α
i
y
i
=
0
\sum\limits_{i = 1}^N {{\alpha _i}{y_i}} = 0
i=1∑Nαiyi=0代入拉格朗日函数,得
min
ω
,
b
L
(
ω
,
b
,
α
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\mathop {\min }\limits_{\omega ,b} L\left( {\omega ,b,\alpha } \right) = - {1 \over 2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}\left( {{x_i} \cdot {x_j}} \right)} + } \sum\limits_{i = 1}^N {{\alpha _i}}
ω,bminL(ω,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
求 min ω , b L ( ω , b , α ) \mathop {\min }\limits_{\omega ,b} L\left( {\omega ,b,\alpha } \right) ω,bminL(ω,b,α)对 α \alpha α的极大
求 min ω , b L ( ω , b , α ) \mathop {\min }\limits_{\omega ,b} L\left( {\omega ,b,\alpha } \right) ω,bminL(ω,b,α)的极大可以转化为求 − min ω , b L ( ω , b , α ) - \mathop {\min }\limits_{\omega ,b} L\left( {\omega ,b,\alpha } \right) −ω,bminL(ω,b,α)的极小,可以得到下面这个对偶最优化问题: min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \mathop {\min }\limits_\alpha {1 \over 2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}\left( {{x_i} \cdot {x_j}} \right)} } - \sum\limits_{i = 1}^N {{\alpha _i}} αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi s . t . ∑ i = 1 N α i y i = 0 , α i ≥ 0 , i = 1 , ⋯ , N s.t.\sum\limits_{i = 1}^N {{\alpha _i}{y_i}} = 0,{\alpha _i} \ge 0,i = 1, \cdots ,N s.t.i=1∑Nαiyi=0,αi≥0,i=1,⋯,N当我们求得该问题的最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) T {\alpha ^*} = {\left( {\alpha _1^*,\alpha _2^*, \cdots ,\alpha _N^*} \right)^T} α∗=(α1∗,α2∗,⋯,αN∗)T后,就能求得原始问题的解 ω ∗ , b ∗ {\omega ^*},{b^*} ω∗,b∗ ω ∗ = ∑ i = 1 N α i ∗ y i x i {\omega ^*} = \sum\limits_{i = 1}^N {\alpha _i^*{y_i}{x_i}} ω∗=i=1∑Nαi∗yixi b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) {b^*} = {y_j} - \sum\limits_{i = 1}^N {\alpha _i^*{y_i}\left( {{x_i} \cdot {x_j}} \right)} b∗=yj−i=1∑Nαi∗yi(xi⋅xj)这样我们就能求得最终的分离超平面及分类决策函数了, ω ∗ ⋅ x + b ∗ = 0 {\omega ^*} \cdot x + {b^*} = 0 ω∗⋅x+b∗=0 f ( x ) = s i g n ( ω ∗ ⋅ x + b ∗ ) f(x) = sign\left( {{\omega ^*} \cdot x + {b^*}} \right) f(x)=sign(ω∗⋅x+b∗)
支持向量
在线性可分的支持向量机中,由原始问题解的公式可以看出, ω ∗ {\omega ^*} ω∗和 b ∗ {b^*} b∗只依赖与训练数据中对应于 α i ∗ > 0 \alpha _i^* > 0 αi∗>0的样本点 ( x i , y i ) \left( {{x_i},{y_i}} \right) (xi,yi),而其他样本对 ω ∗ {\omega ^*} ω∗和 b ∗ {b^*} b∗没有影响,而这样的点正好处于间隔边界上。我们管这种点叫支持向量。
线性支持向量机与软间隔最大化
通常情况下数据不是严格的线性可分,会有一些特异点。如下这种情况
由于这些特异点的影响,原来模型所求的分离超平面达不到最佳的分离效果。所以我们为每个样本点
(
x
i
,
y
i
)
\left( {{x_i},{y_i}} \right)
(xi,yi)引入一个松弛变量
ξ
i
≥
0
{\xi _i} \ge 0
ξi≥0,使函数间隔加上松弛变量大于等于1,这样原始问题就变为:
min
ω
,
b
,
ξ
1
2
∥
ω
∥
2
+
C
∑
i
=
1
N
ξ
i
\mathop {\min }\limits_{\omega ,b,\xi } {1 \over 2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^N {{\xi _i}}
ω,b,ξmin21∥ω∥2+Ci=1∑Nξi
s
.
t
.
y
i
(
ω
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
⋯
,
N
s.t.{y_i}\left( {\omega \cdot {x_i} + b} \right) \ge 1 - {\xi _i},i = 1, \cdots ,N
s.t.yi(ω⋅xi+b)≥1−ξi,i=1,⋯,N
ξ
i
≥
0
,
i
=
1
,
⋯
,
N
{\xi _i} \ge 0,i = 1, \cdots ,N
ξi≥0,i=1,⋯,N其对偶问题为:
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
\mathop {\min }\limits_\alpha {1 \over 2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}\left( {{x_i} \cdot {x_j}} \right)} } - \sum\limits_{i = 1}^N {{\alpha _i}}
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
s.t.\sum\limits_{i = 1}^N {{\alpha _i}{y_i}} = 0
s.t.i=1∑Nαiyi=0
0
≤
α
i
≤
C
,
i
=
1
,
⋯
,
N
0 \le {\alpha _i} \le C,i = 1, \cdots ,N
0≤αi≤C,i=1,⋯,N其解与硬间隔最大化的解一样。
支持向量
把训练集中对应于 α i ∗ > 0 \alpha _i^* > 0 αi∗>0的样本点 ( x i , y i ) \left( {{x_i},{y_i}} \right) (xi,yi)的实例 x i x_i xi称为支持向量。若 α i ∗ < C \alpha _i^*<C αi∗<C,则 ξ i = 0 {\xi _i} = 0 ξi=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位于分离超平面误分一侧。
非线性支持向量机与核函数
在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及到输入实例与输入实例之间的点积,因此我们可以用核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K({x_i},{x_j}) = \phi ({x_i}) \cdot \phi ({x_j}) K(xi,xj)=ϕ(xi)⋅ϕ(xj)来代替内积 ( x i ⋅ x j ) {\left( {{x_i} \cdot {x_j}} \right)} (xi⋅xj)。这样就可以把在原空间中非线性可分得数据集映射到一个特征空间(数据集在这个空间是线性可分得),从而在特征空间中使用线性可分支持向量机完成非线性可分数据集的分类。
常用的核函数
线性核:
K
(
x
i
,
x
j
)
=
x
i
⋅
x
j
K({x_i},{x_j}) = {x_i} \cdot {x_j}
K(xi,xj)=xi⋅xj
多项式核:
K
(
x
i
,
x
j
)
=
(
x
i
⋅
x
j
+
1
)
p
K({x_i},{x_j}) = {\left( {{x_i} \cdot {x_j} + 1} \right)^p}
K(xi,xj)=(xi⋅xj+1)p
高斯核(径向基核):
K
(
x
i
,
x
j
)
=
exp
(
−
∥
x
i
−
x
j
∥
2
2
σ
2
)
K({x_i},{x_j}) = \exp \left( { - {{{{\left\| {{x_i} - {x_j}} \right\|}^2}} \over {2{\sigma ^2}}}} \right)
K(xi,xj)=exp(−2σ2∥xi−xj∥2)
序列最小最优化算法(SMO)
smo算法可以快速求解凸二次规划问题,其基本思路是:如果所有变量的解都满足最优化问题的KKT条件,那么问题就得到了解决。否则,选两个变量,固定其他变量,针对这两个变量构建二次规划问题求解。如此反复,直到所有变量的解满足KKT条件。选择子问题变量的时候,第一个变量是违反KKT条件最严重的一个,另一个由约束条件自动确定。