支持向量机学习笔记[1]
文章目录
写在前面
最近自己在学习支持向量机相关内容,阅读了一些资料和书籍。在这里做一个完整的梳理,以助于自己理清思路。
支持向量机
支持向量机是一个功能强大且全面的二分类模型。它能够解决线性和非线性问题、回归、甚至是异常值检测任务。具体分类如下
- 当训练数据线性可分时,可以通过硬间隔最大化学习一个分类器,该分类器称为线性可分支持向量机。
- 当训练数据近似线性可分时,通过软间隔最大化学习一个分类器,该分类器称为线性支持向量机。
- 当训练数据线性不可分时,通过核技巧以及软间隔最大化,学习支持向量机。
在本篇博客中,我主要梳理线性可分支持向量机部分,即通过硬间隔最大化来学习模型的过程。
线性可分支持向量机
假定定一个特征空间上的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
n
,
y
n
)
}
x
i
∈
X
=
R
n
y
i
∈
Y
=
{
+
1
,
−
1
}
\begin{aligned} &T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\} \\ &x_i \in \mathcal{X} = \mathbb{R}^n \\ &y_i \in \mathcal{Y} = \{+1,-1\} \end{aligned}
T={(x1,y1),(x2,y2),⋯,(xn,yn)}xi∈X=Rnyi∈Y={+1,−1}其中,
y
i
=
+
1
y_i = +1
yi=+1 称为正例,反之称为负例。
其学习目标是找到一个分离超平面,能将实例分类到不同的类。
左图和右图的实线代表了不同的分离超平面,但是很显然右图超平面的泛化能力更好。左图的决策边界和实例太过接近,导致面对新样本时,其分类往往不准确。右图为SVM的划分结果,实线表示分离超平面,而虚线上的点则表示了支持向量。
所以线性可分情况下的SVM就是要求出这样的分离超平面和分类决策函数。其数学表示如下:
- 分离超平面:
w ∗ ⋅ x + b = 0 w^*\cdot x + b = 0 w∗⋅x+b=0 - 分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = \mathrm{sign}(w^*\cdot x + b^*) f(x)=sign(w∗⋅x+b∗)
硬间隔
函数间隔
在支持向量机中,通过硬间隔最大化找到分离超平面。在本节中,我们讨论什么是硬间隔。这里的硬间隔包括函数间隔和几何间隔。它们的概念我们将一一阐述。
在分离超平面 w ⋅ x + b w\cdot x+b w⋅x+b 确定的情况下, ∣ w ⋅ x + b ∣ |w\cdot x+b| ∣w⋅x+b∣ 可以相对表示表示点 x x x到超平面的远近。并且超平面法向量朝向正类样本,所以 w ⋅ x + b w\cdot x+b w⋅x+b 和类标记 y y y 的符号是否一致可以决定分类是否正确。以正确分类为正类为例, w ⋅ x + b w\cdot x+b w⋅x+b 的值为正,且 y = 1 y=1 y=1。所以用 y ( w ⋅ x + b ) y(w\cdot x +b) y(w⋅x+b) 来表示分类正确性和确信度,这就是样本 ( x , y ) (x,y) (x,y) 的函数间隔。
此外,对于超平面 ( w , b ) (w,b) (w,b) 关于训练数据集 T T T 的函数间隔为超平面 ( w , b ) (w,b) (w,b) ,关于 T T T 中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 的函数间隔的最小值。
- 样本函数间隔:对于给定的训练数据集
T
T
T 和超平面
(
w
,
b
)
(w,b)
(w,b) ,定义超平面
(
w
,
b
)
(w,b)
(w,b) 关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) \hat\gamma_i = y_i(w\cdot x_i+b) γ^i=yi(w⋅xi+b) - 超平面函数间隔:
γ ^ = min i = 1 , … , n γ ^ i \hat\gamma = \min_{i = 1,\dots, n} \hat\gamma_i γ^=i=1,…,nminγ^i
几何间隔
只要成比例的改变 w , b w,b w,b 例如将它们同时乘以2变为 2 w , 2 b 2w,2b 2w,2b ,原先的分离超平面没有改变,但是函数间隔却变成原先的两倍。所以不同函数间隔可以对应同一个分离超平面。
所以得到上述启发后,我们可以对 w w w 进行规范化,从而得到统一的函数间隔,这就是几何间隔。
- 样本几何间隔:对于给定的训练数据集
T
T
T 和超平面
(
w
,
b
)
(w,b)
(w,b) ,定义超平面
(
w
,
b
)
(w,b)
(w,b) 关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 的几何间隔为
γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) \gamma_i = y_i\bigg(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||}\bigg) γi=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b) - 超平面几何间隔:
γ = min i = 1 , … , n γ i \gamma = \min_{i = 1,\dots, n} \gamma_i γ=i=1,…,nminγi - 函数间隔和几何间隔的关系
γ i = γ ^ ∣ ∣ w ∣ ∣ γ = γ ^ ∣ ∣ w ∣ ∣ \gamma_i = \frac{\hat\gamma}{||w||} \\ \gamma = \frac{\hat\gamma}{||w||} γi=∣∣w∣∣γ^γ=∣∣w∣∣γ^
因为几何间隔对函数间隔进行了规范化,所以不会出现前述的同一超平面对应不同的几何间隔的情况。接下来,我们通过几何间隔最大化的方法来学习模型。
间隔最大化
支持向量机是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。由于是要求几何间隔最大,所以最终的分离超平面也是惟一的。
最大化间隔分离超平面
最大化间隔分离超平面可以表示成下面的最优化约束问题
max
w
,
b
γ
s
.
t
.
y
i
(
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
)
≥
γ
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\max_{w,b} \quad \gamma \\ &\;\mathrm{s.t.}\quad y_i\bigg(\frac{w}{||w||}\cdot x_i+\frac{b} {||w||}\bigg) \ge \gamma \;,\quad i = 1,2,\dots,N \end{aligned}
w,bmaxγs.t.yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)≥γ,i=1,2,…,N
即在众多能满足在训练集上分类正确的超平面中,选择一个几何间隔最大的做为最终的分离超平面。
考虑函数间隔和几何间隔的关系,上述优化问题可以改写为
max
w
,
b
γ
^
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\max_{w,b} \quad \frac{\hat\gamma}{||w||} \\ &\;\mathrm{s.t.}\quad y_i(w\cdot x_i+b) \ge \hat\gamma \;,\quad i = 1,2,\dots,N \end{aligned}
w,bmax∣∣w∣∣γ^s.t.yi(w⋅xi+b)≥γ^,i=1,2,…,N
之前我们分析,不同的函数间隔不会影响最后的分离超平面,索性我们令
γ
^
=
1
\hat\gamma = 1
γ^=1 则上述优化问题的等价最优化问题为
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\min_{w,b} \quad\frac{1}{2}||w||^2\\ &\;\mathrm{s.t.}\quad y_i(w\cdot x_i+b) \ge \hat\gamma \;,\quad i = 1,2,\dots,N \end{aligned}
w,bmin21∣∣w∣∣2s.t.yi(w⋅xi+b)≥γ^,i=1,2,…,N
上述问题是一个凸二次规划问题。凸优化问题总能找到一个最优解,所以通过求解上述问题,我们可以得到一组最优模型参数 w ∗ , b ∗ w^*,b^* w∗,b∗,由此可得线性可分支持向量机模型。
- 线性可分支持向量机模型分离超平面
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x + b^* = 0 w∗⋅x+b∗=0 - 分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = \mathrm{sign}(w^*\cdot x + b^*) f(x)=sign(w∗⋅x+b∗)
间隔最大化对偶问题
为了求解线性可分支持向量机的最优化问题,将它做为原始问题,通过求解其对偶问题得到原始问题最优解。这样做是因为对偶问题更容易求解。
首先构造拉格朗日乘子函数。引入拉格朗日乘子
α
i
≥
0
,
i
=
1
,
2
,
…
N
\alpha_i \ge 0,\; i=1,2,\dots N
αi≥0,i=1,2,…N 定义拉格朗日函数
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
N
α
i
y
i
(
w
⋅
x
+
b
)
+
∑
i
=
1
N
α
i
L(w,b,\alpha) = \frac{1}{2} ||w||^2 -\sum_{i=1}^N \alpha_i y_i(w\cdot x + b)+\sum_{i=1}^N \alpha_i
L(w,b,α)=21∣∣w∣∣2−i=1∑Nαiyi(w⋅x+b)+i=1∑Nαi
根据拉格朗日对偶性,原始问题的对偶问题如下
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max_\alpha \min_{w,b} L(w,b,\alpha)
αmaxw,bminL(w,b,α)
可以看到求解上述问题,先优化模型参数再优化乘子,是相对简单的。反之,则不好求解。
求 min w , b L ( w , b , α ) \min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)
将拉格朗日函数
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α) 对模型参数求偏导并令其等于0可得到
∇
w
L
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
∇
b
L
=
−
∑
i
=
1
N
α
i
y
i
=
0
\begin{aligned} &\nabla_w L = w - \sum_{i=1}^{N} \alpha_i y_i x_i = 0 \\ &\nabla_b L = - \sum_{i=1}^N \alpha_i y_i = 0 \end{aligned}
∇wL=w−i=1∑Nαiyixi=0∇bL=−i=1∑Nαiyi=0
于是有
w
=
∑
i
=
1
N
α
i
y
i
x
i
∑
i
=
1
N
α
i
y
i
=
0
w = \sum_{i=1}^{N} \alpha_i y_i 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
L(w,b,\alpha) = -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_iy_j (x_i \cdot x_j)+\sum_{i=1}^N \alpha_i
L(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
求 max α min w , b L ( w , b , α ) \max_\alpha \min_{w,b} L(w,b,\alpha) maxαminw,bL(w,b,α)
带入上式,得到对偶问题
max
α
−
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
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\max_\alpha \quad -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_iy_j (x_i \cdot x_j)+\sum_{i=1}^N \alpha_i \\ & \ \mathrm{s.t.}\quad \sum_{i=1}^N \alpha_iy_i = 0 \\ & \qquad \quad \alpha_i \ge 0 ,i = 1,2,\dots,N \end{aligned}
αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi s.t.i=1∑Nαiyi=0αi≥0,i=1,2,…,N
将目标函数取反,则等价对偶最优化问题为
min
α
1
2
∑
i
=
1
N
−
s
u
m
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
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\min_\alpha \quad \frac{1}{2} \sum_{i=1}^N -sum_{j=1}^N \alpha_i \alpha_j y_iy_j (x_i \cdot x_j)-\sum_{i=1}^N \alpha_i \\ & \ \mathrm{s.t.}\quad \sum_{i=1}^N \alpha_iy_i = 0 \\ & \qquad \quad \alpha_i \ge 0 ,i = 1,2,\dots,N \end{aligned}
αmin21i=1∑N−sumj=1Nαiαjyiyj(xi⋅xj)−i=1∑Nαi s.t.i=1∑Nαiyi=0αi≥0,i=1,2,…,N
若要使对偶问题和原始问题同解,则满足以下
K
K
T
\mathrm{KKT}
KKT 条件:
∇
w
L
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
∇
b
L
=
−
∑
i
=
1
N
α
i
y
i
=
0
α
i
∗
(
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
)
=
0
,
i
=
1
,
2
,
…
,
N
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
)
≥
0
,
i
=
1
,
2
,
…
,
N
α
i
≥
0
,
i
=
1
,
2
,
…
,
N
\begin{aligned} &\nabla_w L = w - \sum_{i=1}^{N} \alpha_i y_i x_i = 0 \\ &\nabla_b L = - \sum_{i=1}^N \alpha_i y_i = 0 \\ &\alpha_i^*(y_i(w^*\cdot x_i+b^*)-1) = 0 ,\quad i = 1,2,\dots,N\\ &y_i(w^*\cdot x_i+b^*)-1) \ge 0 , \quad i = 1,2,\dots,N \\ &\alpha_i \ge 0 \quad,i = 1,2,\dots,N \end{aligned}
∇wL=w−i=1∑Nαiyixi=0∇bL=−i=1∑Nαiyi=0αi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,…,Nyi(w∗⋅xi+b∗)−1)≥0,i=1,2,…,Nαi≥0,i=1,2,…,N
由
K
K
T
\mathrm{KKT}
KKT 条件可得
w
∗
=
∑
i
α
i
∗
y
i
x
i
w^* = \sum_i \alpha_i^* y_i x_i
w∗=i∑αi∗yixi
值得注意的是,乘子向量
α
∗
\alpha^*
α∗ 不可能为零向量。若乘子向量为零向量,则
w
∗
w^*
w∗ 也为零向量,但此时的
w
∗
w^*
w∗ 不是原始问题最优解。
假设乘子向量中非零分量为
α
j
∗
\alpha^*_j
αj∗ ,根据
K
K
T
\mathrm{KKT}
KKT 条件,对此
j
j
j 有
y
j
(
w
∗
⋅
x
j
+
b
)
−
1
=
0
y_j(w^*\cdot x_j+b) -1 = 0
yj(w∗⋅xj+b)−1=0
又由于二分类问题,
y
j
2
=
1
y_j ^2 =1
yj2=1,可以推导出
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^* = y_j - \sum_{i=1}^N \alpha_i^* y_i(x_i \cdot x_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
由此可以得到对偶问题下分离超平面和分类决策函数的解
- 分离超平面
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^N \alpha^*_i y_i(x\cdot x_i)+b^* = 0 i=1∑Nαi∗yi(x⋅xi)+b∗=0 - 分类决策函数
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x) = \mathrm{sign}\bigg(\sum_{i=1}^N \alpha_i^* y_i (x\cdot x_i) +b^*\bigg) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
支持向量
支持向量定义为,在优化对偶问题中,将训练数据集中对应于
α
i
∗
>
0
\alpha_i^* > 0
αi∗>0 的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 的实例 $x_i $ 称为支持向量。
支持向量一定在决策边界上,由
K
K
T
\mathrm{KKT}
KKT 条件
α
i
∗
(
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
)
=
0
,
i
=
1
,
2
,
…
,
N
\alpha_i^*(y_i(w^*\cdot x_i+b^*)-1) = 0 ,\quad i = 1,2,\dots,N
αi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,…,N
对应于
α
i
∗
>
0
\alpha_i^* > 0
αi∗>0 的实例
x
i
x_i
xi ,有
y
i
(
w
∗
⋅
x
i
+
b
∗
)
−
1
=
0
,
i
=
1
,
2
,
…
,
N
y_i(w^*\cdot x_i+b^*)-1 = 0 ,\quad i = 1,2,\dots,N
yi(w∗⋅xi+b∗)−1=0,i=1,2,…,N
有
w
∗
⋅
x
i
+
b
∗
=
±
1
w^*\cdot x_i+b^* = \pm1
w∗⋅xi+b∗=±1
所以,
x
i
x_i
xi 一定在间隔边界上。
总结
线性可分支持向量机的局限性很大。若数据不是线性可分的,如下左图,则此模型不能进行分类。若样本有异常值,如下右图,若该异常值正好是支持向量,则模型的泛化能力大大下降。
之后我会整理线性支持向量机和非线性向量机模型。它们可以解决线性可分支持向量机的局限问题。