支持向量机
第一章 简介
1.1 支持向量机的发展史
支持向量机(Support Vector Machine, SVM)是一种强大的机器学习算法,具有广泛的应用和深厚的理论基础。以下是支持向量机的发展史概述:
- 发展初期
1960年代末至1970年代初,Vladimir Vapnik 和 Alexey Chervonenkis 开始研究模式识别理论,为支持向量机的理论奠定了基础。
1980年代,Vapnik 等人在苏联开发了结构风险最小化理论,这是支持向量机理论的关键组成部分。
1992年,Vapnik 和 Corinna Cortes 提出了现代支持向量机的基本算法。 - 理论建立与算法发展
1995年,Vapnik 和 Cortes 发表了经典的支持向量机论文,介绍了线性支持向量机和核方法。
这些年代是支持向量机理论和算法成熟的时期,包括间隔最大化、核方法以及正则化理论的进展。 - 广泛应用与优化技术
2000年后,随着计算机算力的增强和机器学习研究的兴起,支持向量机被广泛应用于模式识别、数据挖掘、生物信息学等领域。
2010年后,随着深度学习的兴起,支持向量机仍然是许多非线性分类和回归问题的重要工具,尤其在小样本学习和解释性强的场景中表现突出。
支持向量机的算法和理论在优化技术、核函数设计、并行计算等方面不断进行优化和拓展,以适应大规模数据和复杂模型的需求。
1.2 预备知识
1.2.1 向量的定义与几何表示
在数学中,我们把既有大小又有方向的量称为向量(矢量)(vector),而把只有大小没有方向的量称为数量(标量)。由于数量可以用实数表示,而实数与数轴上的点一一对应,所以数量可以用数轴上的点表示,不同点表示不同数量。有向线段 A B ⃗ \vec{AB} AB的长度可以表示向量的大小,有向线段的方向可以表示向量的方向,因此向量可以用有向线段来直观表示。一般向量的大小称为向量的模,记作 ∣ A B ⃗ ∣ |\vec{AB}| ∣AB∣。长度为0的向量称为零向量,长度为1的向量称为单位向量。
1.2.2 向量坐标与点坐标之间的关系
在平面直角坐标系中,设与x轴、y轴方向相同的两个单位向量分别为
i
⃗
\vec{i}
i,
j
⃗
\vec{j}
j,则对平面内任意一个向量,由平面向量基本定理可知,有且只有一对实数
x
x
x,
y
y
y,使得
a
⃗
=
x
i
⃗
+
y
j
⃗
\vec{a}=x\vec{i}+y\vec{j}
a=xi+yj
这样,平面内的任意向量
a
→
\overrightarrow{a}
a都可以用x,y唯一确定,我们把有序数对称为向量
a
⃗
\vec{a}
a的坐标,记为
a
⃗
=
(
x
,
y
)
\vec{a}=(x,y)
a=(x,y)
设
O
A
→
=
x
i
⃗
+
y
j
⃗
\overrightarrow{OA}=x\vec{i}+y\vec{j}
OA=xi+yj,其中O表示平面直角坐标系中的坐标原点,则向量
O
A
→
\overrightarrow{OA}
OA的坐标(x,y)就是终点A的坐标,反之,终点A的坐标就是向量
O
A
→
\overrightarrow{OA}
OA的坐标。这样就建立了向量坐标与点坐标之间的关系。
1.2.3 向量的模与方向
假设向量
a
⃗
T
=
(
x
,
y
)
\vec{a}^T=(x,y)
aT=(x,y),则向量
a
⃗
T
\vec{a}^T
aT的模为:
∣
∣
a
⃗
T
∣
∣
=
x
2
+
y
2
||\vec{a}^T||=\sqrt{x^2+y^2}
∣∣aT∣∣=x2+y2
a
⃗
T
\vec{a}^T
aT的方向为:
z
⃗
T
=
(
x
∣
∣
a
⃗
∣
∣
,
y
∣
∣
a
⃗
∣
∣
)
\vec{z}^T=(\frac{x}{||\vec{a}||},\frac{y}{||\vec{a}||})
zT=(∣∣a∣∣x,∣∣a∣∣y)
1.2.4 超平面定义
在几何数学中,超平面是指n维空间中一个n−1维的子空间。通常用如下方程表达:
w
1
x
1
+
w
2
x
2
+
⋯
+
w
n
x
n
+
b
=
w
⃗
T
x
⃗
+
b
=
0
w_1x_1 + w_2x_2 + \cdots + w_nx_n + b = \vec{w}^T\vec{x} + b = 0
w1x1+w2x2+⋯+wnxn+b=wTx+b=0
其中,
w
⃗
T
=
(
w
1
,
w
2
,
⋯
,
w
n
)
\vec{w}^T=(w_1,w_2,\cdots,w_n)
wT=(w1,w2,⋯,wn) 表示超平面的法向量,
b
b
b 表示超平面偏移量,
x
⃗
T
=
(
x
1
,
x
2
,
⋯
,
x
n
)
\vec{x}^T=(x_1,x_2,\cdots,x_n)
xT=(x1,x2,⋯,xn) 表示空间中的数据点。
1.2.5 点与超平面的关系
点与超平面的关系有三种:点在超平面上,点在超平面正侧和点在超平面负侧。点与超平面的关系可以通过计算将点带入平面方程来确定,该值的符号可以表示点相对超平面的位置。
- 点在超平面上:如果 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0,则点 x ⃗ \vec{x} x位于超平面上。
- 点在超平面正侧:如果 w ⃗ T x ⃗ + b > 0 \vec{w}^T\vec{x} + b > 0 wTx+b>0,则点 x ⃗ \vec{x} x位于超平面法向量 w ⃗ T \vec{w}^T wT指向的一侧。
- 点在超平面负侧:如果 w ⃗ T x ⃗ + b < 0 \vec{w}^T\vec{x} + b < 0 wTx+b<0,则点 x ⃗ \vec{x} x位于超平面法向量 w ⃗ T \vec{w}^T wT指向的反方向一侧。
例 1.2.1 在平面直角坐标系中,假定一个 w ⃗ T = ( 0.625 , 1 ) \vec{w}^T=(0.625,1) wT=(0.625,1) 和 b = − 8.25 b=-8.25 b=−8.25 的超平面,即 0.625 x + y − 8.25 = 0 0.625x + y - 8.25 = 0 0.625x+y−8.25=0 该超平面如图 1-1 所示。
图1-1 超平面分离数据
将点
(
2
,
7
)
(2,7)
(2,7)代入直线方程,可得
0.625
×
2
+
7
−
8.25
=
0
0.625 \times 2 + 7 - 8.25 = 0
0.625×2+7−8.25=0,因此点在直线上。
将点
(
7
,
9
)
(7,9)
(7,9)代入直线方程,可得
0.625
×
7
+
9
−
8.25
=
5.125
>
0
0.625 \times 7 + 9 - 8.25 = 5.125 > 0
0.625×7+9−8.25=5.125>0,因此点在直线正侧。
将点
(
3
,
3
)
(3,3)
(3,3)代入直线方程,可得
0.625
×
3
+
3
−
8.25
=
−
3.375
<
0
0.625 \times 3 + 3 - 8.25 = -3.375 < 0
0.625×3+3−8.25=−3.375<0,因此点在直线负侧。
1.2.6 最优化分析方法
1.2.6.1 凸集定义
如果
∀
x
1
,
x
2
∈
A
⊂
R
n
\forall{\pmb{x}_1,\pmb{x}_2} \in A \subset {\mathbb{R}^n}
∀x1,x2∈A⊂Rn,并对任意的
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1],都有
θ
x
1
+
(
1
−
θ
)
x
2
∈
A
\theta{\pmb{x}_1} + (1-\theta)\pmb{x}_2 \in A
θx1+(1−θ)x2∈A
则称集合
A
A
A 是凸集。
1.2.6.2 凸函数定义
设一个
n
n
n 元实函数
f
(
x
)
f(\pmb{x})
f(x),
x
∈
A
⊂
R
n
\pmb{x}\in{A}\subset{\mathbb{R}^n}
x∈A⊂Rn,
A
A
A 是非空凸集,如果
∀
x
1
,
x
2
∈
A
\forall{\pmb{x}_1,\pmb{x}_2} \in A
∀x1,x2∈A,并对任意的
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1],有
f
(
θ
x
1
+
(
1
−
θ
x
2
)
)
≤
θ
f
(
x
1
)
+
(
1
−
θ
)
f
(
x
2
)
f(\theta{\pmb{x}_1}+(1-\theta{\pmb{x}_2})) \leq \theta{f(\pmb{x}_1)} + (1-\theta){f(\pmb{x}_2)}
f(θx1+(1−θx2))≤θf(x1)+(1−θ)f(x2)
则称函数
f
(
x
)
f(x)
f(x) 是凸函数。若上式严格不等,则称函数
f
(
x
)
f(x)
f(x) 是严格凸函数。
1.2.6.3 无约束极值的分析方法
求解最优化问题的第一个一般性的分析方法是Fermat提出的,他给出了无约束优化问题的极值点应满足的必要条件。
定理 1.2.1(Fermat定理) 设
f
(
x
)
f(\pmb{x})
f(x) 为一个
n
n
n 元函数,
x
=
(
x
1
,
x
2
,
⋯
,
x
n
)
T
∈
A
⊆
R
n
\pmb{x}=(x_1,x_2,\cdots,x_n)^T \in A \subseteq{\mathbb{R}^n}
x=(x1,x2,⋯,xn)T∈A⊆Rn,如果
x
∗
\pmb{x}^*
x∗ 是函数
f
f
f 的一个极值点,且函数在
x
∗
\pmb{x}^*
x∗ 处连续可微,则在
x
∗
\pmb{x}^*
x∗ 上有
f
x
′
(
x
∗
)
=
0
(1-1)
f_{\pmb{x}}^{'}(\pmb{x}^*) = 0 \tag{1-1}
fx′(x∗)=0(1-1)
分析:该定理证明可以使用反证法,首先假设
x
∗
\pmb{x}^*
x∗ 是局部极小值,但梯度
f
x
′
(
x
∗
)
≠
0
f_{\pmb{x}}^{'}(\pmb{x}^*) \neq 0
fx′(x∗)=0,如果能找到一个方向
d
\pmb{d}
d,使得在这个方向上,函数值是下降。很显然,函数在负梯度方向是下降的,那么我们就证明了
x
∗
\pmb{x}^*
x∗ 不是局部极小值。
证明:
假定
f
x
′
(
x
∗
)
≠
0
f_{\pmb{x}}^{'}(\pmb{x}^*) \neq 0
fx′(x∗)=0,则
∃
d
∈
R
n
\exists{\pmb{d}} \in \R^n
∃d∈Rn,使得
d
T
f
x
′
(
x
∗
)
<
0
\pmb{d}^Tf_{\pmb{x}}^{'}(\pmb{x}^*) < 0
dTfx′(x∗)<0,例如,
d
=
−
f
x
′
(
x
∗
)
\pmb{d} = -f_{\pmb{x}}^{'}(\pmb{x}^*)
d=−fx′(x∗)。由
f
x
′
(
x
)
f_{\pmb{x}}^{'}(\pmb{x})
fx′(x)的连续性可知,
∃
δ
>
0
\exists{\delta > 0}
∃δ>0,使得
d
T
f
x
′
(
x
∗
+
α
d
)
<
0
,
α
∈
(
0
,
δ
]
\pmb{d}^Tf_{\pmb{x}}^{'}(\pmb{x^* + \alpha{\pmb{d}}}) < 0,\alpha \in (0,\delta]
dTfx′(x∗+αd)<0,α∈(0,δ]
由中值定理1可知,对
∀
α
1
∈
(
0
,
δ
]
\forall \alpha_1 \in (0,\delta]
∀α1∈(0,δ],
∃
α
∈
(
0
,
α
1
)
\exists \alpha \in (0,\alpha_1)
∃α∈(0,α1),使
f
(
x
∗
+
α
1
d
)
=
f
(
x
∗
)
+
α
1
d
T
f
x
′
(
x
∗
+
α
d
)
f(\pmb{x}^* + \alpha_1\pmb{d}) = f(x^*) + \alpha_1\pmb{d}^Tf_{\pmb{x}}^{'}(\pmb{x^* + \alpha{\pmb{d}}})
f(x∗+α1d)=f(x∗)+α1dTfx′(x∗+αd)
因此,
f
(
x
∗
+
α
1
d
)
<
f
(
x
∗
)
f(\pmb{x}^* + \alpha_1\pmb{d}) < f(\pmb{x}^*)
f(x∗+α1d)<f(x∗),即
x
∗
\pmb{x}^*
x∗ 不是
f
(
x
)
f(\pmb{x})
f(x)的局部极小值点,与原命题矛盾。
这个定理给出了局部最优解的必要条件,运用这个定理须求解
n
n
n 个联立的方程:
∂
f
∂
x
i
=
0
,
i
=
1
,
2
,
…
,
n
\frac{\partial{f}}{\partial{x_i}} = 0,i=1,2,\dots,n
∂xi∂f=0,i=1,2,…,n
要求得全局最优解,应将所得的各极小值或极大值与函数奇异点2及边界点的值进行比较,取其最小或最大值对应的
x
\pmb{x}
x 作为全局最优解。
注1:
定理 1.2.2(Lagrange中值定理) 若函数
f
f
f 满足如下条件:
(i)
f
f
f 在闭区间
[
a
,
b
]
[a,b]
[a,b] 上连续;
(ii)
f
f
f 在开区间
(
a
,
b
)
(a,b)
(a,b) 上可导,
则在
(
a
,
b
)
(a,b)
(a,b) 上至少存在一点
ξ
\xi
ξ,使得
f
′
(
ξ
)
=
f
(
b
)
−
f
(
a
)
b
−
a
f^{'}(\xi) = \frac{f(b) - f(a)}{b - a}
f′(ξ)=b−af(b)−f(a)
注2:函数奇异点通常指函数在某些点处不连续、不可导或者函数值趋向无穷大的点。
1.2.6.4 等式约束条件极值的分析方法
Lagrange 给出了在等式约束下求解函数极值点的分析方法原理,它利用数学上的概念与技巧,将等式约束下的条件极值问题转化为无约束的极值问题。条件极值问题可以描述为:
{
f
(
x
)
s
.
t
.
h
k
(
x
)
=
0
,
k
=
1
,
2
,
…
,
l
\begin{cases} f(\pmb{x}) \\ s.t.\quad h_k(\pmb{x}) = 0, \quad k=1,2,\dots,l \end{cases}
{f(x)s.t.hk(x)=0,k=1,2,…,l
上述条件极值问题可以归结为求下面的辅助函数的极值:
L
(
x
,
λ
0
,
λ
)
=
λ
0
f
(
x
)
+
∑
k
=
1
l
λ
k
h
k
(
x
)
(1-2)
L(\pmb{x}, \lambda_0, \pmb{\lambda}) = \lambda_0f(\pmb{x}) + \sum_{k=1}^l{\lambda_k}h_k(\pmb{x}) \tag{1-2}
L(x,λ0,λ)=λ0f(x)+k=1∑lλkhk(x)(1-2)
式中,
L
(
⋅
)
L(\cdot)
L(⋅) 称为 Lagrange 函数,
λ
i
(
i
=
0
,
1
,
⋯
,
l
)
\lambda_i(i=0,1,\cdots,l)
λi(i=0,1,⋯,l) 称为 Lagrange 乘子。
定理 1.2.2(Lagrange定理) 对于上述优化问题 (1-2),令
x
=
(
x
1
,
x
2
,
⋯
,
x
n
)
T
∈
R
n
\pmb{x} = (x_1,x_2,\cdots,x_n)^T \in \mathbb{R}^n
x=(x1,x2,⋯,xn)T∈Rn,设函数
f
(
x
)
f(\pmb{x})
f(x),
h
k
(
x
)
(
k
=
1
,
⋯
,
l
)
h_k(\pmb{x})(k=1,\cdots,l)
hk(x)(k=1,⋯,l) 在点
x
∗
\pmb{x}^*
x∗ 处可微。若
x
∗
\pmb{x}^*
x∗ 是
f
(
x
)
f(\pmb{x})
f(x) 的一个条件极值点,则存在不全为零的 Lagrange 乘子3
λ
0
\lambda_0
λ0 和
λ
∗
=
(
λ
1
∗
,
λ
2
∗
,
⋯
,
λ
l
∗
)
\pmb{\lambda^*}=(\lambda_1^*,\lambda_2^*,\cdots,\lambda_l^*)
λ∗=(λ1∗,λ2∗,⋯,λl∗),使得下列条件成立:
L
x
i
′
(
x
∗
,
λ
0
∗
,
λ
∗
)
=
0
,
i
=
1
,
2
,
⋯
,
n
(1-3)
L_{x_i}^{'}(\pmb{x}^*, \lambda_0^*, \pmb{\lambda}^*) = 0,i=1,2,\cdots,n \tag{1-3}
Lxi′(x∗,λ0∗,λ∗)=0,i=1,2,⋯,n(1-3)
L
λ
i
′
(
x
∗
,
λ
0
∗
,
λ
∗
)
=
0
,
i
=
1
,
2
,
⋯
,
l
(1-4)
L_{\lambda_i}^{'}(\pmb{x}^*, \lambda_0^*, \pmb{\lambda}^*) = 0,i=1,2,\cdots,l \tag{1-4}
Lλi′(x∗,λ0∗,λ∗)=0,i=1,2,⋯,l(1-4)
为了使
λ
0
≠
0
\lambda_0 \neq 0
λ0=0,充要条件是
l
l
l 个矢量
∂
h
1
x
,
∂
h
2
x
,
⋯
,
∂
h
l
x
\frac{\partial{h_1}}{\pmb{x}},\frac{\partial{h_2}}{\pmb{x}},\cdots,\frac{\partial{h_l}}{\pmb{x}}
x∂h1,x∂h2,⋯,x∂hl
在点
f
(
x
)
f(\pmb{x})
f(x) 上是线性无关的。
由式(1-3)可以产生
n
n
n 个新方程,式(1-4)可以产生
l
l
l 个方程,显然运用上述定理,需要求解含
n
+
l
+
1
n+l+1
n+l+1 个未知数的方程。
在
λ
0
≠
0
\lambda_0 \neq 0
λ0=0 下,不妨取
λ
0
=
1
\lambda_0 = 1
λ0=1,这相当于其余的Lagrange乘子都要乘以一个银子,这不影响问题的解,在这种情况下,问题变为求解下面
n
+
l
n + l
n+l 个方程的方程组。
注3:这意味着目标函数的梯度可以表示为各个约束条件梯度的线性组合。
例 1.2.2 假设有以下约束优化问题:
min
x
,
y
f
(
x
,
y
)
=
x
2
+
y
2
s
.
t
.
g
(
x
,
y
)
=
x
+
y
−
1
=
0
\min_{x, y}{f(x, y) = x^2 + y^2} \\ s.t.\quad g(x, y) = x + y -1 = 0
x,yminf(x,y)=x2+y2s.t.g(x,y)=x+y−1=0
图1-2 约束优化问题的几何表示
从图1-2可以看出,目标函数和条件等式约束在极值点处梯度共线,即
∇
f
(
x
)
=
λ
∇
g
(
x
)
\nabla{f(x)} = \lambda{\nabla{g(x)}}
∇f(x)=λ∇g(x)。
解:
目标函数梯度为:
∇
f
(
x
,
y
)
=
(
∂
f
∂
x
,
∂
f
∂
y
)
=
(
2
x
,
2
y
)
\nabla{f(x, y)} = (\frac{\partial{f}}{\partial{x}},\frac{\partial{f}}{\partial{y}}) = (2x,2y)
∇f(x,y)=(∂x∂f,∂y∂f)=(2x,2y)
约束条件梯度为:
∇
g
(
x
,
y
)
=
(
∂
g
∂
x
,
∂
g
∂
y
)
=
(
1
,
1
)
\nabla{g(x, y)} = (\frac{\partial{g}}{\partial{x}},\frac{\partial{g}}{\partial{y}}) = (1,1)
∇g(x,y)=(∂x∂g,∂y∂g)=(1,1)
由于目标函数梯度与约束条件梯度在极值点处共线,则
{
2
x
=
λ
2
y
=
λ
x
+
y
−
1
=
0
\begin{cases} 2x = \lambda \\ 2y = \lambda \\ x + y -1 = 0 \\ \end{cases}
⎩
⎨
⎧2x=λ2y=λx+y−1=0
通过代入法可得,该约束函数的极值点在(0.5,0.5)。
1.2.6.5 不等式约束条件极值的分析方法
Lagrange乘数法是用于求解等式约束的最优化方法,下面给出不等式约束的条件极值问题的求解方法。同时给出不等式约束下凸函数条件极值的充分条件。
设
A
A
A 是线性空间的一个
n
n
n 维非空开集,
f
(
x
)
f(\pmb{x})
f(x),
g
k
(
x
)
(
k
=
1
,
2
,
…
,
m
)
g_k(\pmb{x})(k=1,2,\dots,m)
gk(x)(k=1,2,…,m)是定义在
A
A
A 上的
m
+
1
m+1
m+1 个函数。极小化函数
min
f
(
x
)
(1-5)
\min{f(\pmb{x})} \tag{1-5}
minf(x)(1-5)
约束条件为
s
.
t
.
x
∈
A
g
k
(
x
)
≤
0
,
k
=
1
,
2
,
…
,
m
(1-6)
s.t. \quad \pmb{x} \in A \\ g_k(\pmb{x}) \leq 0,k=1,2,\dots,m \tag{1-6}
s.t.x∈Agk(x)≤0,k=1,2,…,m(1-6)
这个优化问题的可行域是
S
=
{
x
∣
g
k
(
x
)
≤
0
,
k
=
1
,
2
,
…
,
m
}
⊆
A
S = \{\pmb{x} | g_k(\pmb{x}) \leq 0,k=1,2,\dots,m\} \subseteq {A}
S={x∣gk(x)≤0,k=1,2,…,m}⊆A
若上述优化问题的一个可行解
x
‾
\overline{\pmb{x}}
x 使某个不等式约束
g
k
(
x
)
≤
0
g_k(\pmb{x}) \leq 0
gk(x)≤0,即
g
k
(
x
‾
)
=
0
g_k(\overline{\pmb{x}}) = 0
gk(x)=0,则该不等式约束称为关于
x
‾
\overline{\pmb{x}}
x 的紧约束或者起作用约束,否则称其为松约束或不起作用约束。
对于不等式约束下函数的极小化问题,仍考虑Lagrange函数
L
(
x
,
λ
0
,
λ
)
=
λ
0
f
(
x
)
+
∑
k
=
1
m
λ
k
g
k
(
x
)
L(\pmb{x},\lambda_0,\lambda) = \lambda_0f(\pmb{x}) + \sum_{k=1}^{m}\lambda_kg_k(\pmb{x})
L(x,λ0,λ)=λ0f(x)+k=1∑mλkgk(x)
定理 1.2.3(Fritz John定理) 如果
x
∗
\pmb{x^*}
x∗ 在满足式 (1-6) 的条件下极小化函数
f
(
x
)
f(\pmb{x})
f(x),若
f
(
x
)
f(\pmb{x})
f(x),
g
k
(
x
)
g_k(\pmb{x})
gk(x),
k
=
1
,
2
,
⋯
,
m
k=1,2,\cdots,m
k=1,2,⋯,m,在点
x
∗
\pmb{x^*}
x∗ 处可微,则存在不全为零的Lagrange乘子
λ
k
∗
(
k
=
0
,
1
,
⋯
,
m
)
\lambda_k^*(k=0,1,\cdots,m)
λk∗(k=0,1,⋯,m),使下列三个条件成立:
(1)极值条件
λ
0
∗
∇
f
(
x
∗
)
+
∑
k
=
1
m
λ
k
∗
∇
g
k
(
x
∗
)
=
0
\lambda_0^*\nabla{f(\pmb{x}^*)} + \sum_{k=1}^m{\lambda_k^*}\nabla{g_k(\pmb{x}^*)} = 0
λ0∗∇f(x∗)+k=1∑mλk∗∇gk(x∗)=0
(2)非负条件
λ
k
∗
≥
0
,
k
=
0
,
1
,
⋯
,
m
\lambda_k^* \geq 0,k=0,1,\cdots,m
λk∗≥0,k=0,1,⋯,m
(3)互补松弛条件
λ
k
∗
g
k
(
x
∗
)
=
0
,
k
=
0
,
1
,
⋯
,
m
\lambda_k^*g_k(\pmb{x}^*) = 0,k=0,1,\cdots,m
λk∗gk(x∗)=0,k=0,1,⋯,m
λ
k
∗
(
k
=
0
,
1
,
⋯
,
m
)
\lambda_k^*(k=0,1,\cdots,m)
λk∗(k=0,1,⋯,m)不全为零及(2)、(3)表明:对于约束
g
k
(
x
)
≤
0
g_k(\pmb{x}) \leq 0
gk(x)≤0,若
g
k
(
x
)
<
0
g_k(\pmb{x}) < 0
gk(x)<0,则
λ
k
∗
=
0
\lambda_k^*=0
λk∗=0;若
g
k
(
x
)
=
0
g_k(\pmb{x}) = 0
gk(x)=0,则
λ
k
∗
≥
0
\lambda_k^* \geq 0
λk∗≥0。这表明,极值点只能在两类位置上,要么在松约束的可行区域的内部,要么在紧约束定义的边界上。
第二章 支持向量机
2.1 模型构建
2.2.1 分类问题提出
在为完全确诊某些疾病的检查中,有些检查可能是十分昂贵的,或者是创伤性的。因此,利用一些有关的容易获得的临床指标进行辅助性的推断是一项有意义的工作。美国Cleveland Heart Disease Database提供的数据(Heart Disease数据集下载地址)可以用作对心脏病进行辅助性诊断的基础。该数据包括了303个病人信息。事实上,该数据不仅记录了这些病人的血压(低压)、胆固醇等13项与心脏病有关的指标,而且还记录了这些病人是否患有心脏病的确证结论,这里的确诊并非完全根据13项指标做出的,而是利用其他手段。现在的问题是如何根据这一数据对新来的病人只通过检测这13项指标,就推断该病人是否患有心脏病。;很显然,推断病人是否患有心脏病是分类问题,也称模式识别问题,在统计学习中,称为判别分析问题。
为了叙述方便,我们对上述问题加以简化,得到下面示意性的例子:
例 2.1.1 假定是否患有心脏病与病人血压和胆固醇水平密切相关,表2-1列出了10个病人的临床数据,其中x1表示病人血压水平,x2表示病人胆固醇水平,y表示病人所属类别标记:y=1表示病人有心脏病;y=-1表示病人无心脏病。
病人编号 | 血压 x1 | 胆固醇水平 x2 | 是否有心脏病 y |
---|---|---|---|
1 | 73 | 150 | -1 |
2 | 85 | 165 | -1 |
... | ... | ... | ... |
10 | 110 | 190 | 1 |
现在的问题是,对新来的病人,已测得他的血压x1和胆固醇水平x2,试推断他是否患有心脏病,即y=1或y=-1?
2.2.2 分类问题分析
要解决上一节的问题,需将表2-1的数据绘制在平面直角坐标系中,用直角坐标系的点来表示每个病人,点的位置由病人的两个指标来确定,病人是否患有心脏病由点的形状来确定,当y=1时,用"+"形点;当y=-1时,用"o"形点,具体如图2-1所示。
图2-1 心脏病辅助诊断数据坐标表示
针对上述问题,一个很自然的思路是建立
x
⃗
\vec{x}
x与y的关系。通过分析问题的值域,可以发现符号函数的值域与问题的值域相符。符号函数的表达式如下:
s
g
n
(
t
)
=
{
1
,
t
>
0
0
,
t
=
0
−
1
,
t
<
0
sgn(t)= \begin{cases} 1,&t>0 \\ 0,&t=0 \\ -1,&t<0 \\ \end{cases}
sgn(t)=⎩
⎨
⎧1,0,−1,t>0t=0t<0
显然,仅凭符号函数无法完全建立
x
⃗
\vec{x}
x与y的关系,因此还需要引入另外一种关系来共同构建
x
⃗
\vec{x}
x与y的关系。通过分析符号函数的定义域可以发现,若再引入点与超平面的关系就可以完全解决该类问题,具体表达式如下:
y
=
s
g
n
(
w
⃗
T
x
⃗
+
b
)
=
{
1
,
w
⃗
T
x
⃗
+
b
>
0
0
,
w
⃗
T
x
⃗
+
b
=
0
−
1
,
w
⃗
T
x
⃗
+
b
<
0
y=sgn(\vec{w}^T\vec{x}+b)= \begin{cases} 1,& \vec{w}^T\vec{x}+b > 0 \\ 0,& \vec{w}^T\vec{x}+b = 0 \\ -1,& \vec{w}^T\vec{x}+b < 0 \\ \end{cases}
y=sgn(wTx+b)=⎩
⎨
⎧1,0,−1,wTx+b>0wTx+b=0wTx+b<0
2.2.3 分类问题分析
在上一小节中,我们讨论了如何找到一个可以对线性可分数据进行分类的超平面。在实际应用上,对于给定的训练数据,往往存在多个可以用来分类的超平面。因此,我们需要一个标准来选择这些超平面中最优的一个超平面。
由于最近点与超平面的距离和超平面是一一对应的,即一个超平面只有一个最近点,所以我们可以通过最近点到超平面的距离来给超平面排序。给定一个训练集
D
=
{
(
x
i
,
y
i
)
∣
x
i
∈
R
n
,
y
i
∈
{
−
1
,
1
}
}
\mathcal{D}=\{(x_i,y_i)|x_i \in \mathcal{R^n}, y_i \in \{-1,1\}\}
D={(xi,yi)∣xi∈Rn,yi∈{−1,1}},计算每个训练样本到超平面的距离
β
i
\beta_i
βi,定义
B
B
B 为这些距离中的最小值,即:
B
=
min
i
=
1
,
⋯
,
m
β
i
(2-1)
B=\min_{i=1, \cdots,m} \beta_i \tag{2-1}
B=i=1,⋯,mminβi(2-1)
假设有
k
k
k 个不同的超平面,我们希望选择一个最大的
B
B
B,即找到一个使得最小距离最大的超平面,具体表达式如下:
max
j
=
1
,
⋯
,
k
min
i
=
1
,
⋯
,
m
β
i
(2-2)
\max_{j=1,\cdots,k}\min_{i=1, \cdots,m} \beta_i \tag{2-2}
j=1,⋯,kmaxi=1,⋯,mminβi(2-2)
使用方程的返回值来定义点到超平面的距离有其局限性,特别是在返回值为负数的情况下。当超平面方程的返回值为负数时,选择最小值来表示最近点到划分超平面的距离会出现误差。例如,对于
β
=
−
5
\beta=-5
β=−5 和
β
=
−
1
\beta=-1
β=−1 的两个点,选择最小值
β
=
−
5
\beta=-5
β=−5 其实并不合适,因为
β
=
−
1
\beta=-1
β=−1 更接近超平面。为了修正这个问题,我们考虑取
β
\beta
β的绝对值,则表达式可表述为:
max
j
=
1
,
⋯
,
k
min
i
=
1
,
⋯
,
m
∣
β
i
∣
\max_{j=1,\cdots,k}\min_{i=1, \cdots,m} |\beta_i|
j=1,⋯,kmaxi=1,⋯,mmin∣βi∣
同样
B
B
B 的选择也有其局限性,具体情况如下图所示:
![]() | ![]() |
图 a 划分超平面1 | 图 b 划分超平面2 |
通过上图可以看出,这两个超平面的
B
B
B 值都是
2
2
2,现在的问题是我们不知道哪个超平面的划分结果是正确的。遇到这种情况,我们需要调整公式来选择最优的超平面。在训练数据
x
i
⃗
=
(
x
i
,
y
i
)
\vec{x_i}=(x_i,y_i)
xi=(xi,yi)中,我们没有使用
y
i
y_i
yi,如果我们用
β
i
\beta_i
βi 乘以
y
i
y_i
yi,则表达式如下:
γ
i
^
=
y
i
(
w
⃗
T
x
i
⃗
+
b
)
(2-3)
\hat{\gamma_i} = y_i(\vec{w}^T\vec{x_i} + b) \tag{2-3}
γi^=yi(wTxi+b)(2-3)
其中,
γ
i
^
\hat{\gamma_i}
γi^ 为函数间隔。
注意:对于线性可分训练集来说,函数间隔的值都是正值,这意味着点
x
i
⃗
\vec{x_i}
xi 被正确分类。
看起来这次我们找到了一个好的方法来比较两个超平面。然而,函数间隔存在一个很严重的问题:缺少比率不变性。例如,给定一个法向量
w
1
=
(
2
,
1
)
w_1=(2,1)
w1=(2,1) 和偏置
b
1
=
5
b_1=5
b1=5,如果我们用10乘以它们,则
w
1
=
(
2
,
1
)
w_1=(2,1)
w1=(2,1) 和偏置
b
1
=
5
b_1=5
b1=5。实际上这两个超平面是同一个超平面,因为它们的单位向量相同(超平面与向量
w
1
w_1
w1正交,不用关心它的长度,重要的是它的方法)。
解决上述问题,我们只需要做一个小小的调整,用单位向量代替向量
w
⃗
\vec{w}
w ,同时用
∣
∣
w
⃗
∣
∣
||\vec{w}||
∣∣w∣∣ 保持比率不变性,则表达式可写为:
γ
i
=
y
i
(
w
⃗
T
∣
∣
w
⃗
∣
∣
x
i
⃗
+
b
∣
∣
w
⃗
∣
∣
)
(2-4)
\gamma_i = y_i(\frac{\vec{w}^T}{||\vec{w}||}\vec{x_i} + \frac{b}{||\vec{w}||}) \tag{2-4}
γi=yi(∣∣w∣∣wTxi+∣∣w∣∣b)(2-4)
γ
i
\gamma_i
γi 的优点在于它能给我们一个相同的数,而不用考虑向量
w
⃗
\vec{w}
w 的取值,我们称
γ
i
\gamma_i
γi 为示例的几何间隔。
2.2.4 支持向量机模型
给定一个线性可分数据集
D
=
{
(
x
i
,
y
i
)
∣
x
i
∈
R
n
,
y
i
∈
{
−
1
,
1
}
}
\mathcal{D}=\{(x_i,y_i)|x_i \in \mathcal{R^n}, y_i \in \{-1,1\}\}
D={(xi,yi)∣xi∈Rn,yi∈{−1,1}},一个法向量
w
⃗
\vec{w}
w 和偏置
b
b
b ,则记
M
M
M 为示例的最小几何间隔。
M
=
min
i
=
1
,
…
,
m
γ
i
=
min
i
=
1
,
…
,
m
y
i
(
w
⃗
T
∣
∣
w
⃗
∣
∣
x
i
⃗
+
b
∣
∣
w
⃗
∣
∣
)
(2-5)
M=\min_{i=1,\dots,m}\gamma_i = \min_{i=1,\dots,m}y_i(\frac{\vec{w}^T}{||\vec{w}||}\vec{x_i} + \frac{b}{||\vec{w}||}) \tag{2-5}
M=i=1,…,mminγi=i=1,…,mminyi(∣∣w∣∣wTxi+∣∣w∣∣b)(2-5)
通过公式 2-2 可知,SVM 优化问题可以写成下面形式:
max
w
⃗
,
b
M
s
.
t
.
γ
i
≥
M
,
i
=
1
,
⋯
,
m
(2-6)
\max_{\vec{w},b} M \\ s.t. \gamma_i \geq M,i=1, \cdots, m \tag{2-6}
w,bmaxMs.t.γi≥M,i=1,⋯,m(2-6)
这个约束条件保证了每个样本点的几何间隔只少为
M
M
M,即数据集
D
\mathcal{D}
D 是线性可分的,具体来说:
- 正样本( y i = 1 y_i=1 yi=1):对于正样本,这个条件就变为 w ⃗ T x i ⃗ + b ≥ M ∣ ∣ w ⃗ ∣ ∣ \vec{w}^T\vec{x_i} + b \geq M||\vec{w}|| wTxi+b≥M∣∣w∣∣。这确保了正样本在超平面的正侧,并且距离超平面至少为 M M M。
- 负样本( y i = − 1 y_i=-1 yi=−1):对于负样本,这个条件就变为 w ⃗ T x i ⃗ + b ≤ − M ∣ ∣ w ⃗ ∣ ∣ \vec{w}^T\vec{x_i} + b \leq -M||\vec{w}|| wTxi+b≤−M∣∣w∣∣。这确保了负样本在超平面负侧,并且距离超平面至少为 M M M。
根据比率不变性,我们可以令
M
∣
∣
w
⃗
∣
∣
=
1
M||\vec{w}|| = 1
M∣∣w∣∣=1,原优化问题的约束条件依然不变(数据线性可分),简化后的方程如下:
max
w
⃗
,
b
1
∣
∣
w
⃗
∣
∣
s
.
t
.
y
i
(
w
⃗
T
x
i
⃗
+
b
)
≥
1
,
i
=
1
,
⋯
,
m
\max_{\vec{w},b}\frac{1}{{||\vec{w}||}} \\ s.t.\quad y_i(\vec{w}^T\vec{x_i} + b) \geq 1,i=1, \cdots, m
w,bmax∣∣w∣∣1s.t.yi(wTxi+b)≥1,i=1,⋯,m
在运筹学中,一般将最大值优化问题转化最小值优化问题,即
min
w
⃗
,
b
1
2
∣
∣
w
⃗
∣
∣
2
s
.
t
.
y
i
(
w
⃗
T
x
i
⃗
+
b
)
−
1
≥
0
,
i
=
1
,
⋯
,
m
(2-7)
\min_{\vec{w},b}\frac{1}{2}||\vec{w}||^2 \\ s.t.\quad y_i(\vec{w}^T\vec{x_i} + b) - 1 \geq 0,i=1, \cdots, m \tag{2-7}
w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)−1≥0,i=1,⋯,m(2-7)
其中,目标函数乘以
1
2
\frac{1}{2}
21 为了简化优化过程。