1、概述
\quad \quad
支持向量机(support vector machines,SVM)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是 间隔最大化, 可以形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法。。由简至繁的模型包括:
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机,又称为硬间隔支持向量机;
- 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机,又称为硬软间隔支持向量机;
- 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
2、基本概念
2.1 线性可分
\quad \quad
可以很容易就在数据中给出一条直线将两组数据点分开。
\quad \quad
在二维空间上,两类点被一条直线完全分开叫做线性可分。具体定义可见感知机那一篇文章。
2.2 函数间隔和几何间隔
【函数间隔定义】:
\quad \quad
对于给定的训练数据集T和超平面(w,b)[
w
x
+
b
=
0
wx+b=0
wx+b=0]:
- 定义超平面(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔为:
γ
i
^
=
y
i
(
w
x
i
+
b
)
\hat{\gamma_i}=y_i(wx_i+b)
γi^=yi(wxi+b)
- 定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔之最小值,即
γ
^
=
m
i
n
i
=
1
,
.
.
,
N
γ
i
^
\hat{\gamma}=\mathop{\mathbb{min}}\limits_{i=1,..,N}\hat{\gamma_i}
γ^=i=1,..,Nminγi^
【函数间隔意义】:
\quad \quad
函数间隔可以表示分类预测的正确性及确信度,在超平面
w
x
+
b
=
0
wx+b=0
wx+b=0确定的情况下,
∣
w
⋅
x
+
b
∣
\left | w\cdot x+b \right |
∣w⋅x+b∣能够相对地表示点x距离超平面的远近,而
w
⋅
x
+
b
w\cdot x+b
w⋅x+b的符号与类标记y的符号是否一致能够表示分类是否正确,所以可以用
y
(
w
⋅
x
+
b
)
y(w\cdot x+b)
y(w⋅x+b)来表示分类的正确性及确信度,这就是函数间隔。
【函数间隔缺陷】:
\quad \quad
分离超平面
w
x
+
b
=
0
wx+b=0
wx+b=0,只要成比例的改变法向量
w
w
w和b,例如将他们改变
2
w
2w
2w和2b,超平面并没有改变,但函数间隔却变为原来的2倍。这一事实,可以对分离超平面的法向量
w
w
w加某些约束,如规范化,
∣
∣
w
∣
∣
=
1
||w||=1
∣∣w∣∣=1,使得间隔是确定的,这时函数间隔就变为几何间隔(见下文)。
【几何间隔定义】:
\quad \quad
对于给定的训练数据集T和超平面(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(\frac{w}{||w||}x_i+\frac{b}{||w||})
γi=yi(∣∣w∣∣wxi+∣∣w∣∣b)
- 定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的几何间隔之最小值,即
γ
=
m
i
n
i
=
1
,
.
.
,
N
γ
i
\gamma=\mathop{\mathbb{min}}\limits_{i=1,..,N}\gamma_i
γ=i=1,..,Nminγi
其中
∣
∣
w
∣
∣
||w||
∣∣w∣∣是
L
2
L_2
L2范数。
【函数间隔与几何间隔的关系】:
γ
i
=
γ
^
i
∣
∣
w
∣
∣
\gamma_i=\frac{\hat\gamma_i}{||w||}
γi=∣∣w∣∣γ^i
γ
=
γ
^
∣
∣
w
∣
∣
\gamma=\frac{\hat\gamma}{||w||}
γ=∣∣w∣∣γ^
如果
∣
∣
w
∣
∣
=
1
||w||=1
∣∣w∣∣=1,那么函数间隔和几何间隔相等。如果超参数w和b成比例的变化(超平面没有改变),函数间隔也按比例变化,而几何间隔不变。
2.3 间隔最大化(硬间隔最大化)
\quad \quad
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分的数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。
\quad \quad
间隔最大化的直观解释是:对训练数据集找到几何间隔最大化的超平面意味着以充分大的确信度对训练数据进行分类。
也就是说,不仅能够将正负实例点分开,而且对于离超平面最近的点也以尽可能大的确信度将它们分开,这样的超平面会有很好的泛化能力。
1、最大间隔分离超平面
- 两类样本分别分割在该超平面的两侧;
- 两侧距离超平面最近的样本点到超平面的距离被最大化了。
如何求几何间隔最大的分离超平面,可以表示为约束最优化问题:
即我们希望最大化超平面(w,b)关于训练数据集的几何间隔
γ
\gamma
γ,约束条件表示是超平面(w,b)关于每个训练样本点的几何间隔至少是
γ
\gamma
γ。
考虑几何间隔和函数间隔的关系以及最优化问题与常数无关的情况,目标函数可以转换为:
\quad \quad
函数间隔
γ
^
\hat{\gamma}
γ^的取值并不影响最优化问题的解。事实上,假设将w和b按比例改变为
λ
w
\lambda w
λw和
λ
b
\lambda b
λb,这时函数间隔变为
λ
γ
^
\lambda\hat{\gamma}
λγ^。函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题。这样,就可以取
γ
^
=
1
\hat{\gamma}=1
γ^=1。将
γ
^
=
1
\hat{\gamma}=1
γ^=1代入上面的最优化问题,注意到最大化
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1和最小化
1
2
∣
∣
w
∣
∣
2
\frac12||w||^2
21∣∣w∣∣2是等价的,于是就得到下面的线性可分支持向量机学习的最优化问题:
上述是一个凸二次规划问题。
这便是 支持向量机的基本型。
2、线性可分训练数据集的最大间隔分离超平面是存在且唯一的
2.4 凸优化问题
\quad \quad
凸优化问题是指约束最优化问题
\quad \quad
其中,目标函数
f
(
w
)
f(w)
f(w)和约束函数
g
i
(
w
)
g_i(w)
gi(w)都是
R
n
R^n
Rn上的连续可微的凸函数,约束函数
h
i
(
w
)
h_i(w)
hi(w)是
R
n
R^n
Rn上的仿射函数。
\quad \quad
当目标函数
f
(
w
)
f(w)
f(w)是二次函数且约束函数
g
i
(
w
)
g_i(w)
gi(w)是仿射函数时,上述凸最优化问题成为凸二次规划问题。
2.5 支持向量和间隔边界
【支持向量】
\quad \quad
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。支持向量是满足上述约束条件等号成立即
y
i
(
w
x
i
+
b
)
−
1
=
0
y_i(wx_i+b)-1=0
yi(wxi+b)−1=0的点。
\quad \quad
如图7.3 所示,在
H
1
H_1
H1和
H
2
H_2
H2上的点就是支持向量
【间隔边界】
\quad \quad
超平面
H
1
:
w
x
+
b
=
1
H_1:wx+b=1
H1:wx+b=1、
H
2
:
w
x
+
b
=
−
1
H_2:wx+b=-1
H2:wx+b=−1称为间隔边界。
【间隔】
\quad \quad
H
1
H_1
H1、
H
2
H_2
H2之间的距离称为间隔即两个异类支持向量到超平面的距离之和:
2
∣
∣
w
∣
∣
\frac{2}{||w||}
∣∣w∣∣2
2.6 对偶问题
\quad \quad
式(1)是一个 带约束的凸二次规划(convex quadratic programming)问题(凸问题就意味着必定能求到全局最优解,而不会陷入局部最优)。对这样一个问题,可以直接用现成的优化计算包求解,但这一小节介绍的是一种更高效的方法。
\quad \quad
首先为式(1)的每条约束添加拉格朗日乘子
a
i
≥
0
a_i \geq 0
ai≥0 (对应m个样本的m条约束),得到该问题的拉格朗日函数:
L
(
w
,
b
,
a
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
a
i
(
1
−
y
i
(
w
x
i
+
b
)
)
L(w,b,a)= \frac{1}{2}∥w∥^2+\sum_{i=1}^ma_i(1-y_i(wx_i+b))
L(w,b,a)=21∥w∥2+i=1∑mai(1−yi(wxi+b))
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
m
a
x
a
m
i
n
w
,
b
L
(
w
,
b
,
a
)
max_amin_{w,b}L(w,b,a)
maxaminw,bL(w,b,a)
详情
3、线性可分支持向量机
3.1定义
\quad \quad
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w
∗
x
+
b
∗
=
0
w^* x+b^*=0
w∗x+b∗=0
以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
∗
)
f(x)=sign(w^*x+b^*)
f(x)=sign(w∗x+b∗)
称为线性可分支持向量机
3.2 优化目标
1、线性可分支持向量机原始的最优化目标
推导:
如图所示,根据支持向量的定义(离超平面最近的点)我们知道,支持向量到超平面的距离为 d,其他点到超平面的距离大于 d。
2、线性可分支持向量机的对偶最优化目标:
其中,
α
i
\alpha_i
αi为拉格朗日乘子。
算法:
推导:
将步骤三的目标函数由极大转换成极小,就得到对偶最优化目标:
4、线性支持向量机
4.1定义
\quad \quad
对于给定的线性不可分的训练数据集,通过求解相应的凸二次规划问题,即软间隔最大化问题(7.32)~(7.34),得到的分离超平面为
w
∗
x
+
b
∗
=
0
w^* x+b^*=0
w∗x+b∗=0
以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
∗
)
f(x)=sign(w^*x+b^*)
f(x)=sign(w∗x+b∗)
称为线性支持向量机
\quad \quad
线性不可分的线性支持向量机的学习问题即凸二次规划问题(原问题):
其中,
ξ
i
\xi_i
ξi为松弛变量
5、非线性支持向量机
\quad \quad
事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。
\quad \quad
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:
\quad \quad
用线性分类方法求解非线性分类问题一般分为两步:
- 首先使用一个变换将原空间的数据映射到新空间;
- 然后在新空间里用线性分类方法从训练数据中学习分类模型。
\quad \quad
核技巧就属于这样的方法。
5.1 核函数
5.1.1 定义
\quad \quad
设
χ
\chi
χ是输入空间(欧式空间
R
n
R^n
Rn的子集或离散集合),又设
H
H
H为特征空间(希尔伯特空间),如果存在一个从
χ
\chi
χ到
H
H
H的映射
ϕ
(
x
)
:
χ
→
H
\phi(x):\chi\rightarrow{}H
ϕ(x):χ→H
使得对所有
x
,
z
∈
χ
x,z\in\chi
x,z∈χ,函数
K
(
X
,
Z
)
K(X,Z)
K(X,Z)满足条件
K
(
X
,
Z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(X,Z)=\phi(x)\cdot\phi(z)
K(X,Z)=ϕ(x)⋅ϕ(z)
则称
K
(
X
,
Z
)
K(X,Z)
K(X,Z)为核函数,
ϕ
(
x
)
\phi(x)
ϕ(x)为映射函数,式中
ϕ
(
x
)
⋅
ϕ
(
z
)
\phi(x)\cdot\phi(z)
ϕ(x)⋅ϕ(z)为
ϕ
(
x
)
\phi(x)
ϕ(x)和
ϕ
(
z
)
\phi(z)
ϕ(z)的内积。
5.1.2 核技巧
\quad \quad
核技巧的想法是:在学习与预测中只定义核函数K(x,z),而不显式定义映射函数
ϕ
(
x
)
\phi(x)
ϕ(x)。
为什么定义核函数,而不显式的定义映射函数?
1)要求解的目标函数里面是输入实例
x
i
x_i
xi与
x
j
x_j
xj的内积形式,而核函数的定义形式就是将原始输入空间的实例映射到高纬的特征空间后的实例的内积。所以可以直接定义核函数不用定义映射函数。
2)映射后的特征空间一般是高维的,在其空间内求内积不太容易。并且对于给定的核函数K(x,z),特征空间与映射函数的取法并不唯一。
核技巧在支持向量机中的应用
\quad \quad
在线性支持向量机的对偶问题中,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积。在对偶问题的目标函数中的内积
x
i
⋅
x
j
x_i \cdot x_j
xi⋅xj 可以用核函数
K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
⋅
(
x
j
)
K(x_i,x_j)=\phi(x_i) \cdot( x_j)
K(xi,xj)=ϕ(xi)⋅(xj)来代替。此时对偶问题的目标函数成为:
W
(
α
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
α
i
W(\alpha)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i
W(α)=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
同样分类决策函数中的内积也可以用核函数代替,而分类决策函数式成为:
\quad \quad
这等价于经过映射函数
ϕ
\phi
ϕ将原来的输入空间变换到一个新的特征空间,将输入空间中的内积
x
i
⋅
x
j
x_i \cdot x_j
xi⋅xj 变换为特征空间中的内积
ϕ
(
x
i
)
⋅
(
x
j
)
\phi(x_i) \cdot( x_j)
ϕ(xi)⋅(xj),在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。
\quad \quad
在核函数K(x,z)给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间进行的,不需要显式的定义特征空间和映射函数。这样的技巧称作核技巧。
5.1.3 常用核函数
5.2 非线性支持向量分类机
5.2.1 定义
从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划(7.95)~(7.97),学习得到的分类决策函数:
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
,
x
i
)
+
b
∗
)
f(x)=sign(\sum_{i=1}^N\alpha_i^*y_iK(x,x_i)+b^*)
f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)
称为非线性支持向量,
K
(
x
,
z
)
K(x,z)
K(x,z)是正定核函数。
5.2.2 算法
参考资料:
1、https://zhuanlan.zhihu.com/p/77750026
2、https://blog.csdn.net/c406495762/article/details/78072313
3、https://blog.csdn.net/TeFuirnever/article/details/99458334
4、