SVM
简介
支持向量机(support vector machines, SVM)是一种分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器;SVM的的学习策略就是最大化间隔,可化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM还包括核技巧、软间隔等,其基本的原理图如下。
正像图中展示的样子,SVM解决的是分类问题,就是寻找一个超平面(红色的线,原始的是线性的)将图中的圆圈和五角星分开,并且要求正负样本到超平面的几何间隔最大(增加鲁棒性),其中蓝色的圈或者五角星就是支持向量。
算法原理
以简单的二分类问题为例,假设训练集有N个样本数据,可以将其表示为:
T
=
{
(
x
i
,
y
i
)
N
}
T = \{(\boldsymbol{x_i,y_i})_N\}
T={(xi,yi)N}
其中
x
i
∈
R
n
\boldsymbol{x_i}\in \mathbb{R}^n
xi∈Rn,
y
i
∈
{
−
1
,
+
1
}
y_i \in \{-1,+1\}
yi∈{−1,+1},
x
i
\boldsymbol{x_i}
xi是第i个特征,
y
i
y_i
yi是类别种类。
再假设训练数据集是线性可分的
另外假设,代求的超平面方程为
w
T
x
+
b
=
0
\boldsymbol{w}^T \boldsymbol{x} + b = 0
wTx+b=0,
w
\boldsymbol{w}
w和b是代确定的系数(机器学习所学的东西)。
我们的目标是要找到一组
w
\boldsymbol{w}
w和b,使得训练集中所有的样本点到所求超平面的最小距离最大。因此我们首先要做的是表示点到超平面的距离。
D
i
=
∣
w
T
x
i
+
b
∣
∣
∣
w
∣
∣
D_i = \frac{|\boldsymbol{w}^T \boldsymbol{x_i} + b|}{||w||}
Di=∣∣w∣∣∣wTxi+b∣
为了方便运算和求导,我们结合
y
i
y_i
yi的二值特性,将上面的距离改写 为
γ
i
=
y
i
(
w
T
x
i
+
b
∣
∣
w
∣
∣
)
\gamma _i = y_i ( \frac{\boldsymbol{w}^T \boldsymbol{x_i} + b}{||w||})
γi=yi(∣∣w∣∣wTxi+b)
那么所有样本点到超平面的最小距离可以表示为
γ
=
min
i
=
1
,
2
,
.
.
.
N
γ
i
\gamma = \min_{i=1,2,...N} \gamma _i
γ=i=1,2,...Nminγi
所以我们求解的问题就可以用公式表示为
{
max
w
,
b
γ
s
.
t
.
y
i
(
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
≥
γ
)
\left \{ \begin{aligned} \max_{\boldsymbol{w},b} \gamma \\ s.t. \quad y_i ( \frac{(\boldsymbol{w}^T \boldsymbol{x_i} + b)}{||w||}\geq \gamma) \end{aligned} \right.
⎩⎪⎪⎨⎪⎪⎧w,bmaxγs.t.yi(∣∣w∣∣(wTxi+b)≥γ)
为了表示方便,将约束进行归一化,左右除以
γ
\gamma
γ,进一步可将问题转换为
{
max
w
,
b
γ
s
.
t
.
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
γ
≥
1
)
\left \{ \begin{aligned} \max_{\boldsymbol{w},b} \gamma \\ s.t. \quad y_i \frac{(\boldsymbol{w}^T \boldsymbol{x_i} + b)}{||w||\gamma}\geq 1) \end{aligned} \right.
⎩⎪⎪⎨⎪⎪⎧w,bmaxγs.t.yi∣∣w∣∣γ(wTxi+b)≥1)
进一步可以令
{
b
0
=
b
∣
∣
w
∣
∣
γ
w
0
=
w
∣
∣
w
∣
∣
γ
\left \{ \begin{aligned} b_0 = \frac{b}{||w||\gamma}\\ \boldsymbol{w_0} = \frac{\boldsymbol{w}}{||w||\gamma} \end{aligned} \right.
⎩⎪⎪⎨⎪⎪⎧b0=∣∣w∣∣γbw0=∣∣w∣∣γw
到这里,我们就可以将约束转换为
y
i
(
w
0
T
x
i
+
b
0
)
≥
1
y_i (\boldsymbol{w_0}^T \boldsymbol{x_i} + b_0)\geq 1
yi(w0Txi+b0)≥1
弄完了约束,回过头来看看优化目标
max
w
,
b
γ
=
max
w
,
b
min
i
=
1
,
2
,
.
.
.
N
y
i
(
w
T
x
i
+
b
∣
∣
w
∣
∣
)
\max_{\boldsymbol{w},b} \gamma =\max_{\boldsymbol{w},b} \min_{i=1,2,...N} y_i ( \frac{\boldsymbol{w}^T \boldsymbol{x_i} + b}{||w||})
w,bmaxγ=w,bmaxi=1,2,...Nminyi(∣∣w∣∣wTxi+b)
上面的式子中||w||是一个与i无关的变量,可以放在min的前面,
y
i
(
w
T
x
i
+
b
)
≥
γ
∣
∣
w
∣
∣
)
y_i (\boldsymbol{w}^T \boldsymbol{x_i}+ b) \geq \gamma ||w||)
yi(wTxi+b)≥γ∣∣w∣∣),我们可以假设存在一个数p,使得
y
i
(
w
T
x
i
+
b
)
y_i (\boldsymbol{w}^T \boldsymbol{x_i}+ b)
yi(wTxi+b)的最小值是p,这样就可以得到优化的目标为
max
w
,
b
γ
=
max
w
,
b
min
i
=
1
,
2
,
.
.
.
N
y
i
(
w
T
x
i
+
b
∣
∣
w
∣
∣
)
=
max
w
,
b
q
∣
∣
w
∣
∣
\max_{\boldsymbol{w},b} \gamma =\max_{\boldsymbol{w},b} \min_{i=1,2,...N} y_i ( \frac{\boldsymbol{w}^T \boldsymbol{x_i} + b}{||w||})=\max_{\boldsymbol{w},b} \frac{q}{||w||}
w,bmaxγ=w,bmaxi=1,2,...Nminyi(∣∣w∣∣wTxi+b)=w,bmax∣∣w∣∣q
根据
w
w
w和
w
0
w_0
w0的关系,并且q是常数,我们可以将上诉优化问题写成。
{
max
w
0
,
b
0
1
∣
∣
w
0
∣
∣
s
.
t
.
y
i
(
w
0
T
x
i
+
b
0
)
≥
1
\left \{ \begin{aligned} \max_{\boldsymbol{w_0},b_0} \frac{1}{||w_0||}\\ s.t. \quad y_i (\boldsymbol{w_0}^T \boldsymbol{x_i} + b_0)\geq 1 \end{aligned} \right.
⎩⎪⎨⎪⎧w0,b0max∣∣w0∣∣1s.t.yi(w0Txi+b0)≥1
而
w
w
w和
w
0
w_0
w0并没有取值范围的限制,所以,我们直接替换上面式子中的
w
0
w_0
w0为
w
w
w
{
max
w
,
b
1
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
\left \{ \begin{aligned} \max_{\boldsymbol{w},b} \frac{1}{||w||}\\ s.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b)\geq 1 \end{aligned} \right.
⎩⎪⎨⎪⎧w,bmax∣∣w∣∣1s.t.yi(wTxi+b)≥1
最大化
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1 ,也就等价于最小化
0.5
∣
∣
w
∣
∣
2
0.5||w||^2
0.5∣∣w∣∣2 ( 为了后面求导以后形式简洁,所以乘0.
5,不影响结果),因此SVM模型的求解最大分割超平面问题又可以表示为以下约束最优化问题
{
min
w
,
b
∣
∣
w
∣
∣
2
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
\left \{ \begin{aligned} \min_{\boldsymbol{w},b} \frac{||w|| ^ 2}{2}\\ s.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b)\geq 1 \end{aligned} \right.
⎩⎪⎨⎪⎧w,bmin2∣∣w∣∣2s.t.yi(wTxi+b)≥1
这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。
首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
L
(
w
,
b
,
α
)
=
∣
∣
w
∣
∣
2
2
−
∑
i
N
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
L(w,b,\alpha) = \frac{||w||^2}{2} - \sum_i^N{\alpha_i[y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b)-1]}
L(w,b,α)=2∣∣w∣∣2−i∑Nαi[yi(wTxi+b)−1]
其中
α
i
\alpha_i
αi为拉格朗日乘子,且
α
i
≥
0
\alpha_i \geq0
αi≥0 。现在我们令
θ
(
w
)
=
max
α
i
≥
0
L
(
w
,
b
,
α
)
\theta(\boldsymbol{w}) = \max_{\alpha_i \geq0} L(w,b,\alpha)
θ(w)=αi≥0maxL(w,b,α)
当样本点不满足约束条件时,即在可行解区域外:
y
i
(
w
T
x
i
+
b
)
<
1
y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) < 1
yi(wTxi+b)<1
此时,将
θ
(
w
)
\theta(\boldsymbol{w})
θ(w)为无穷大.
当满本点满足约束条件时,即在可行解区域内:
y
i
(
w
T
x
i
+
b
)
≥
1
y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) \geq 1
yi(wTxi+b)≥1
此时,
θ
(
w
)
\theta(\boldsymbol{w})
θ(w)为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数
θ
(
w
)
=
{
∣
∣
w
∣
∣
2
2
,
x
∈
可
行
区
域
+
∞
,
x
∉
可
行
区
域
\theta(\boldsymbol{w})= \left \{ \begin{aligned} \frac{||w|| ^ 2}{2} ,\boldsymbol{x} \in 可行区域\\ +\infty ,\boldsymbol{x} \notin 可行区域 \end{aligned} \right.
θ(w)=⎩⎨⎧2∣∣w∣∣2,x∈可行区域+∞,x∈/可行区域
于是原约束问题就等价于
min
w
,
b
θ
(
w
)
=
min
w
,
b
max
α
i
≥
0
L
(
w
,
b
,
α
)
=
p
∗
\min_{\boldsymbol{w},b}\theta(\boldsymbol{w}) = \min_{\boldsymbol{w},b}\max_{\alpha_i \geq0} L(w,b,\alpha) = p ^ *
w,bminθ(w)=w,bminαi≥0maxL(w,b,α)=p∗
新的目标函数,需要先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数
w
\boldsymbol{w}
w和b 的方程,而
α
i
\alpha_i
αi又是不等式约束,这个求解过程不好做。所以,可以使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:
max
α
i
≥
0
min
w
,
b
L
(
w
,
b
,
α
)
=
d
∗
\max_{\alpha_i \geq0} \min_{\boldsymbol{w},b} L(w,b,\alpha) = d ^ *
αi≥0maxw,bminL(w,b,α)=d∗
要想 ,需要满足两个条件:① 优化问题是凸优化问题 ② 满足KKT条件
本优化问题显然是一个凸优化问题,所以条件一满足,而要满足条件二,即要求
{
α
i
≥
0
y
i
(
w
T
x
i
+
b
)
≥
1
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
=
0
\left \{ \begin{aligned} \alpha_i \geq 0\\ y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) \geq 1 \\ \alpha_i[y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) - 1] = 0 \end{aligned} \right.
⎩⎪⎨⎪⎧αi≥0yi(wTxi+b)≥1αi[yi(wTxi+b)−1]=0
为了得到求解对偶问题的具体形式,需要先求
min
w
,
b
L
(
w
,
b
,
α
)
\min_{\boldsymbol{w},b} L(w,b,\alpha)
minw,bL(w,b,α),这需要分别对
w
\boldsymbol{w}
w和b求偏导,其结果为
∂
L
∂
w
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
\frac{\partial L}{\partial \boldsymbol{w}} = \boldsymbol{w} - \sum_{i=1}^N{\alpha_iy_i \boldsymbol{x_i}}
∂w∂L=w−i=1∑Nαiyixi
∂
L
∂
b
=
−
∑
i
=
1
N
α
i
y
i
\frac{\partial L}{\partial b} = - \sum_{i=1}^N{\alpha_iy_i}
∂b∂L=−i=1∑Nαiyi
令偏导为0,得到结果为
w
=
∑
i
=
1
N
α
i
y
i
x
i
\boldsymbol{w} = \sum_{i=1}^N{\alpha_iy_i \boldsymbol{x_i}}
w=i=1∑Nαiyixi
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N{\alpha_iy_i}=0
i=1∑Nαiyi=0
把这两个结果分别代入L中,整理便可以得到
min
w
,
b
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
=
1
N
∑
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
+
∑
i
=
1
N
α
i
\min_{\boldsymbol{w},b} L(w,b,\alpha)= - \frac{1}{2}\sum_{i=1}^N\sum_{1}^N\alpha_i\alpha_jy_iy_j(\boldsymbol{x_i}\boldsymbol{x_j}) + \sum_{i=1}^N\alpha_i
w,bminL(w,b,α)=−21i=1∑N1∑Nαiαjyiyj(xixj)+i=1∑Nαi
于是乎求
min
w
,
b
L
(
w
,
b
,
α
)
\min_{\boldsymbol{w},b} L(w,b,\alpha)
minw,bL(w,b,α)对
α
\alpha
α的极大值就是下面的优化问题
{
max
α
−
1
2
∑
i
=
1
N
∑
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
+
∑
i
=
1
N
α
i
s
.
t
.
α
i
≥
0
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
\left \{ \begin{aligned}{} \max_\alpha \quad-\frac{1}{2}\sum_{i=1}^N\sum_{1}^N\alpha_i\alpha_jy_iy_j(\boldsymbol{x_i}\boldsymbol{x_j}) + \sum_{i=1}^N\alpha_i\\ s.t. \quad \alpha_i \geq 0\\ s.t.\quad \sum_{i=1}^N{\alpha_iy_i}=0 \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧αmax−21i=1∑N1∑Nαiαjyiyj(xixj)+i=1∑Nαis.t.αi≥0s.t.i=1∑Nαiyi=0
为了方便表示,把最大优化问题,转化为最小优化问题
{
min
α
1
2
∑
i
=
1
N
∑
1
N
α
i
α
j
y
i
y
j
(
x
i
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
α
i
≥
0
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
\left \{ \begin{aligned}{} \min_\alpha \quad \frac{1}{2}\sum_{i=1}^N\sum_{1}^N\alpha_i\alpha_jy_iy_j(\boldsymbol{x_i}\boldsymbol{x_j}) - \sum_{i=1}^N\alpha_i\\ s.t. \quad \alpha_i \geq 0\\ s.t.\quad \sum_{i=1}^N{\alpha_iy_i}=0 \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧αmin21i=1∑N1∑Nαiαjyiyj(xixj)−i=1∑Nαis.t.αi≥0s.t.i=1∑Nαiyi=0
现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。这里暂时不展开关于使用SMO算法求解以上优化问题的细节。
前面的推导都是假设满足KKT条件下成立的,KKT条件如下
{
α
i
≥
0
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
=
0
y
i
(
w
T
x
i
+
b
)
≥
1
\left \{ \begin{aligned}{} \alpha_i \geq 0\\ \alpha_i[y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) - 1] = 0\\ y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) \geq 1 \end{aligned} \right.
⎩⎪⎨⎪⎧αi≥0αi[yi(wTxi+b)−1]=0yi(wTxi+b)≥1
我们通过这个优化算法能得到
α
∗
\alpha^*
α∗ ,再根据
α
∗
\alpha^*
α∗,我们就可以求解出 和
w
\boldsymbol{w}
w和b,进而求得我们最初的目的:找到超平面,即”决策平面”。
到这里也就说明了怎么通过数据求
w
\boldsymbol{w}
w和b,如果进行编码的话,到这里就基本上可以实现算法了。但是这里为了完整的证明,还需要进行下面的工作。
上面的过程中我们得到了
w
=
∑
i
=
1
N
α
i
y
i
x
i
\boldsymbol{w} = \sum_{i=1}^N{\alpha_iy_i \boldsymbol{x_i}}
w=i=1∑Nαiyixi
b
=
y
j
−
∑
i
=
1
N
α
i
y
i
(
x
i
x
j
)
b = y_j - \sum_{i=1}^N\alpha_iy_i( \boldsymbol{x_i} \boldsymbol{x_j})
b=yj−i=1∑Nαiyi(xixj)
由kkt条件看出, 当
y
i
(
w
T
x
i
+
b
)
−
1
=
0
y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) - 1 = 0
yi(wTxi+b)−1=0时,
α
i
\alpha_i
αi的取值才有效,否则就是0,所以对
w
\boldsymbol{w}
w和b起作用的向量只有在最大间隔边界上的点,其余的向量都不起作用
松弛变量
到这里都是基于训练集数据线性可分的假设下进行的,但是实际情况下几乎不存在完全线性可分的数据,为了避免过拟合,解决部分线性不可分问题,引入了“软间隔”的概念(松弛变量),即允许某些点不满足约束。
采用hinge损失,将原问题改写为
min
w
,
b
,
ξ
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
M
ξ
i
\min_{\boldsymbol{w},b,\xi} \quad \frac{1}{2} ||\boldsymbol{w}|| ^ 2 + C \sum_{i=1}^M\xi_i
w,b,ξmin21∣∣w∣∣2+Ci=1∑Mξi
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
s.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b) \geq 1 - \xi_i \\ \\ \xi_i \geq 0
s.t.yi(wTxi+b)≥1−ξiξi≥0
其中
ξ
i
\xi_i
ξi为“松弛变量”,
ξ
i
=
m
a
x
(
0
,
1
−
y
i
(
w
T
x
i
+
b
)
)
\xi_i = max(0,1-y_i (\boldsymbol{w}^T \boldsymbol{x_i} + b))
ξi=max(0,1−yi(wTxi+b)) ,即一个hinge损失函数。每一个样本都有一个对应的松弛变量,表征该样本不满足约束的程度。C称为惩罚参数, C 值越大,对分类的惩罚越大。跟线性可分求解的思路一致,同样这里先用拉格朗日乘子法得到拉格朗日函数,再求其对偶问题。
核函数
对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数替换当中的内积。核函数表示,通过一个非线性转换后的两个实例间的内积。具体地,
K
(
x
,
z
)
=
ϕ
(
x
)
ϕ
(
z
)
K(x,z) = \phi(x) \phi(z)
K(x,z)=ϕ(x)ϕ(z)
在线性支持向量机学习的对偶问题中,用核函数 K ( x , z ) K(x,z) K(x,z)替代内积,求解得到的就是非线性支持向量机