阅读提示:文章中的斜体符号表示单个元素,加粗斜体表示向量。
1.前言
支持向量机(support vector machines, SVM)也是一种二类分类模型,在前一篇文章中讲到,感知机的目标是求得一个能够将数据正确分类的分离超平面,而SVM则是要找到一个能将数据正确分类且间隔最大的分离超平面,即SVM不仅要找到一个分离超平面,而且要求以尽可能大的确信度将数据正确分类。SVM与感知机的另一个区别在于,当数据是线性可分的时候,感知机求得的分离超平面可能有无穷多个,而SVM有了间隔最大化的约束,最后求得的分离超平面解是唯一的。
支持向量机可以分为3类,由简至繁分别为:线性可分支持向量机、线性支持向量机和非线性支持向量机,分别对应着数据线性可分、数据近似线性可分和数据线性不可分的情况。本文主要介绍第一种,即线性可分支持向量机,另外两种将在后续两篇文章中一一介绍。
2.函数间隔与几何间隔
首先来说一下上文提到的间隔最大的含义。一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。假设分离超平面为
w
⋅
x
+
b
\boldsymbol{w} \cdot \boldsymbol{x}+b
w⋅x+b,则
∣
w
⋅
x
i
+
b
∣
|\boldsymbol{w} \cdot \boldsymbol{x}_i+b|
∣w⋅xi+b∣可以相对的表示为点
x
i
\boldsymbol{x}_i
xi距离分离超平面的远近,而通过
w
⋅
x
i
+
b
\boldsymbol{w} \cdot \boldsymbol{x}_i+b
w⋅xi+b的符号与类标签
y
i
y_i
yi是否一致可以判断分类是否正确。所以可用
γ
^
i
=
y
i
(
w
⋅
x
i
+
b
)
\hat{\gamma}_i = y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i+b)
γ^i=yi(w⋅xi+b)来表示分类的正确性与确信度,这里的
γ
^
i
\hat{\gamma}_i
γ^i就是分离超平面关于样本点
(
x
i
,
y
i
)
(\boldsymbol{x}_i,y_i)
(xi,yi)的函数间隔,关于训练数据集
T
T
T的函数间隔为
γ
^
=
m
i
n
γ
^
i
\hat{\gamma}=min\ \hat{\gamma}_i
γ^=min γ^i。
函数间隔可以表示分类的正确性与确信度,但是SVM使用的间隔最大并不是函数间隔最大,因为对于分离超平面
w
⋅
x
+
b
\boldsymbol{w} \cdot \boldsymbol{x}+b
w⋅x+b,如果同比例地改变
w
\boldsymbol{w}
w和
b
b
b,比如改为
2
w
2\boldsymbol{w}
2w和
2
b
2b
2b,此时分离超平面并未改变,而函数间隔却变成了原来的2倍。为了解决这个问题,就有了几何间隔的概念。几何间隔在函数间隔的基础上对分离超平面加了个
∣
∣
w
∣
∣
||\boldsymbol{w}||
∣∣w∣∣的约束,分离超平面关于样本点
(
x
i
,
y
i
)
(\boldsymbol{x}_i,y_i)
(xi,yi)几何间隔数学表达式为:
γ
i
=
y
i
(
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
)
\gamma_i=y_i(\frac{\boldsymbol{w}}{||\boldsymbol{w}||} \cdot \boldsymbol{x}_i+\frac{b}{||\boldsymbol{w}||})
γi=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b),关于训练数据集
T
T
T的几何间隔为
γ
=
m
i
n
γ
i
\gamma=min\ \gamma_i
γ=min γi。SVM所使用的正是几何间隔最大化。
3.线性可分支持向量机
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对于线性可分的数据,这里的间隔最大也叫硬间隔最大,与接下来的文章中将要讨论的数据近似线性可分时的软间隔最大相对应。
3.1 间隔最大化
间隔最大化的直观解释:不仅要将正负实例点分开,而且对于最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。
求间隔最大分离超平面的问题可以表示为下面的约束最优化问题:
w
,
b
m
a
x
γ
s
.
t
.
y
i
(
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
)
≥
γ
{_{\boldsymbol{w},b}^{max}\ \ \gamma}\\ s.t.\ y_i(\frac{\boldsymbol{w}}{||\boldsymbol{w}||} \cdot \boldsymbol{x}_i+\frac{b}{||\boldsymbol{w}||}) \ge \gamma
w,bmax γs.t. yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)≥γ
考虑到函数间隔与几何间隔的关系:
γ
=
γ
^
∣
∣
w
∣
∣
\gamma=\frac{\hat{\gamma}}{||\boldsymbol{w}||}
γ=∣∣w∣∣γ^,所以可以将上面的最优化问题改写为:
w
,
b
m
a
x
γ
^
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
{_{\boldsymbol{w},b}^{max}\ \ \frac{\hat{\gamma}}{||\boldsymbol{w}||}}\\s.t.\ y_i({\boldsymbol{w}} \cdot \boldsymbol{x}_i+{b}) \ge \hat{\gamma}
w,bmax ∣∣w∣∣γ^s.t. yi(w⋅xi+b)≥γ^
如果将
w
和
b
\boldsymbol{w}和b
w和b按比例改变为
λ
w
和
λ
b
\lambda\boldsymbol{w}和\lambda b
λw和λb时,虽然这时的函数间隔也相应的会变成
λ
γ
^
\lambda \hat{\gamma}
λγ^,但是这个改变对上式的约束条件并没有影响,对上式的目标函数也没有影响,也就是说函数间隔
γ
^
\hat{\gamma}
γ^的取值并不影响最优化问题的解。这样,我们就可以取
γ
^
=
1
\hat{\gamma}=1
γ^=1,目标函数就变为了
w
,
b
m
a
x
1
∣
∣
w
∣
∣
{_{\boldsymbol{w},b}^{max}}\frac{1}{||\boldsymbol{w}||}
w,bmax∣∣w∣∣1,又由于最大化
1
∣
∣
w
∣
∣
\frac{1}{||\boldsymbol{w}||}
∣∣w∣∣1与最小化
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||\boldsymbol{w}||^2
21∣∣w∣∣2是等价的,所以就可对上面的约束问题再进行改写,这就得到了线性可分支持向量机学习的原始最优化问题:
w
,
b
m
i
n
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
{_{\boldsymbol{w},b}^{min}}\ \frac{1}{2}||\boldsymbol{w}||^2\\s.t.\ y_i({\boldsymbol{w}} \cdot \boldsymbol{x}_i+{b})-1\ge 0
w,bmin 21∣∣w∣∣2s.t. yi(w⋅xi+b)−1≥0
对这个最优化问题求解,可以求得最优的
w
∗
和
b
∗
\boldsymbol{w}^*和b^*
w∗和b∗,这样就得到了线性可分支持向量机模型。
3.2 支持向量
在线性可分的情况下,训练数据的样本点中与分离超平面距离最近的样本点称为支持向量。如图1所示,实线即为分离超平面, x 1 = ( 3 , 3 ) T 和 x 3 = ( 1 , 1 ) T \boldsymbol{x}_1=(3,3)^T和\boldsymbol{x}_3=(1,1)^T x1=(3,3)T和x3=(1,1)T即为支持向量, x 1 和 x 3 \boldsymbol{x}_1和\boldsymbol{x}_3 x1和x3所在的虚线为间隔边界。
在决定分离超平面时只有支持向量起作用,其他实例点并不起作用。如果移动支持向量将改变所求的解;但是移动甚至去掉不是支持向量的实例点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以这类模型才叫做支持向量机。
4.学习的对偶算法
我们将第3.1节给出的最优化问题称为原始最优化问题,在实际应用过程中,一般不直接对原始问题进行求解,而是通过拉格朗日对偶性,先求解对偶问题的解,进而求得原始问题的解,这便是线性可分SVM的对偶算法。这样做的原因有两个:
- 对偶问题往往更容易求解;
- 方便后面引入核函数,进而推广到非线性分类问题。
4.1 对偶问题的推导
首先根据3.1节的原始最优化问题构建拉格朗日函数:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
N
α
i
y
i
(
w
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
L(\boldsymbol{w},b,\boldsymbol{\alpha})=\frac{1}{2}||\boldsymbol{w}||^2-\sum_{i=1}^{N}\alpha_i y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i+b)+\sum_{i=1}^{N}\alpha_i
L(w,b,α)=21∣∣w∣∣2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi
其中,
α
=
(
α
1
,
α
2
,
.
.
.
,
α
N
)
T
\boldsymbol{\alpha}=(\alpha_1,\alpha_2,...,\alpha_N)^T
α=(α1,α2,...,αN)T为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
α
m
a
x
w
,
b
m
i
n
L
(
w
,
b
,
α
)
{_\boldsymbol{\alpha}^{max}}\ {_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})
αmax w,bmin L(w,b,α)所以,为了得到对偶问题的解,需要先求
L
(
w
,
b
,
α
)
L(\boldsymbol{w},b,\boldsymbol{\alpha})
L(w,b,α)对
w
,
b
{\boldsymbol{w},b}
w,b的极小,再求对
α
\boldsymbol{\alpha}
α的极大。
(1)求
w
,
b
m
i
n
L
(
w
,
b
,
α
)
{_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})
w,bmin L(w,b,α)
将拉格朗日函数
L
(
w
,
b
,
α
)
L(\boldsymbol{w},b,\boldsymbol{\alpha})
L(w,b,α)分别对
w
,
b
{\boldsymbol{w},b}
w,b求偏导并令其等于0:
∇
w
L
(
w
,
b
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
∇
b
L
(
w
,
b
,
α
)
=
−
∑
i
=
1
N
α
i
y
i
=
0
\nabla_{\boldsymbol{w}}L(\boldsymbol{w},b,\boldsymbol{\alpha})=\boldsymbol{w}-\sum_{i=1}^{N}\alpha_i y_i \boldsymbol{x}_i=0 \\\nabla_bL(\boldsymbol{w},b,\boldsymbol{\alpha})=-\sum_{i=1}^{N}\alpha_i y_i=0
∇wL(w,b,α)=w−i=1∑Nαiyixi=0∇bL(w,b,α)=−i=1∑Nαiyi=0 可以得到:
w
=
∑
i
=
1
N
α
i
y
i
x
i
∑
i
=
1
N
α
i
y
i
=
0
\boldsymbol{w}=\sum_{i=1}^{N}\alpha_i y_i \boldsymbol{x}_i \\ \sum_{i=1}^{N}\alpha_i y_i=0
w=i=1∑Nαiyixii=1∑Nαiyi=0
将这两个式子带入拉格朗日函数可以得到:
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
y
i
(
(
∑
j
=
1
N
α
j
y
j
x
j
)
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
b
∑
i
=
1
N
α
i
y
i
+
∑
i
=
1
N
α
i
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
L(\boldsymbol{w},b,\boldsymbol{\alpha})=\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)- \sum_{i=1}^{N}\alpha_i y_i \big((\sum_{j=1}^{N}\alpha_j y_j \boldsymbol{x}_j) \cdot \boldsymbol{x}_i+b\big)+\sum_{i=1}^{N}\alpha_i \\ =\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-b\sum_{i=1}^{N}\alpha_i y_i +\sum_{i=1}^{N}\alpha_i \\ =-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i
L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−bi=1∑Nαiyi+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi 即
w
,
b
m
i
n
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
{_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})=-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i
w,bmin L(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi (2)求
w
,
b
m
i
n
L
(
w
,
b
,
α
)
{_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})
w,bmin L(w,b,α)对
α
\boldsymbol{\alpha}
α的极大,即:
α
m
a
x
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
{_\boldsymbol{\alpha}^{max}}\ -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i \\ s.t.\ \sum_{i=1}^{N}\alpha_i y_i =0\ \ \ \alpha_i \ge 0
αmax −21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαis.t. i=1∑Nαiyi=0 αi≥0 再将目标函数的求极大转换为求极小,就得到了线性可分支持向量机的对偶最优化问题表达式:
α
m
i
n
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
{_\boldsymbol{\alpha}^{min}}\ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-\sum_{i=1}^{N}\alpha_i \\ s.t.\ \sum_{i=1}^{N}\alpha_i y_i =0\ \ \ \alpha_i \ge 0
αmin 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t. i=1∑Nαiyi=0 αi≥0
4.2 模型求解
求解上面所推出的对偶问题,可以得到对偶问题的最优解
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
T
\boldsymbol{\alpha}^*=({\alpha}^*_1,{\alpha}^*_2,...,{\alpha}^*_N)^T
α∗=(α1∗,α2∗,...,αN∗)T。有了
α
∗
\boldsymbol{\alpha}^*
α∗之后,就可以进一步求得3.1节的原始最优化问题的解
w
∗
和
b
∗
\boldsymbol{w}^*和b^*
w∗和b∗。
w
∗
\boldsymbol{w}^*
w∗的求解在4.1节已经给出,即:
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
\boldsymbol{w}^*=\sum_{i=1}^{N}\alpha^*_i y_i \boldsymbol{x}_i
w∗=i=1∑Nαi∗yixi 下面来说一下
b
∗
b^*
b∗的求解。上式中的
α
i
∗
\alpha^*_i
αi∗必然不可能全是0,即至少有一个
α
j
∗
>
0
\alpha^*_j>0
αj∗>0。可以用反证法来证明,假设
α
∗
=
0
\boldsymbol{\alpha}^*=0
α∗=0,则根据上式可得
w
∗
=
0
\boldsymbol{w}^*=0
w∗=0,这显然不是原始问题的解,产生矛盾。根据KKT条件(具体可参考李航《统计学习方法》附录部分,需要pdf版的可以私聊获取),对于所有的
α
i
∗
\alpha^*_i
αi∗有:
α
i
∗
(
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
)
=
0
\alpha^*_i(y_i({\boldsymbol{w}^*} \cdot \boldsymbol{x}_i+{b^*})-1)=0
αi∗(yi(w∗⋅xi+b∗)−1)=0则对于
α
j
∗
>
0
\alpha^*_j>0
αj∗>0所对应的实例点
(
x
j
,
y
j
)
(\boldsymbol{x}_j,y_j)
(xj,yj)有:
y
j
(
w
∗
⋅
x
j
+
b
∗
)
−
1
=
0
y_j({\boldsymbol{w}^*} \cdot \boldsymbol{x}_j+{b^*})-1=0
yj(w∗⋅xj+b∗)−1=0由于
y
j
∈
{
+
1
,
−
1
}
y_j \in \{+1,-1\}
yj∈{+1,−1},则有
y
j
2
=
1
{y_j}^2=1
yj2=1,所以对上式两边同时
y
j
y_j
yj可得:
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^*=y_j-\sum_{i=1}^{N}\alpha^*_i y_i(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)至此,线性可分支持向量机的模型求解就完成了。分离超平面可以写为:
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
)
+
b
∗
=
0
\sum_{i=1}^{N}\alpha^*_i y_i (\boldsymbol{x}_i \cdot \boldsymbol{x})+b^*=0
i=1∑Nαi∗yi(xi⋅x)+b∗=0分离决策函数可以写为:
f
(
x
)
=
sign
(
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
)
+
b
∗
)
f(\boldsymbol{x})=\text{sign}(\sum_{i=1}^{N}\alpha^*_i y_i (\boldsymbol{x}_i \cdot \boldsymbol{x})+b^*)
f(x)=sign(i=1∑Nαi∗yi(xi⋅x)+b∗)
4.3 求解示例
5.参考资料
李航《统计学习方法》