支持向量机-《统计学习方法》学习笔记
1 概述
支持向量机(support vector machine,SVM)是一种用于二分类的模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,因此与感知机有所区别。SVM的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题。SVM的学习算法是凸二次规划的最优化算法。
支持向量机的学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机、非线性支持向量机。下面来一一介绍。
2 线性可分支持向量机
2.1 线性可分支持向量机简介
假设给定一个特征空间上的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
,
(
x
N
,
y
N
)
}
T = \lbrace(x_1,y_1),(x_2,y_2),....,(x_N,y_N)\rbrace
T={(x1,y1),(x2,y2),....,(xN,yN)}
其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
3
,
.
.
.
,
N
。
x_i \in X = R^n,y_i\in Y = \lbrace+1,-1\rbrace, i=1,2,3,...,N。
xi∈X=Rn,yi∈Y={+1,−1},i=1,2,3,...,N。
x
i
x_i
xi 成为第 i 个特征向量,也称为实例,
y
i
y_i
yi 为
x
i
x_i
xi 的类标记。当
y
i
=
+
1
y_i = +1
yi=+1 时,称
x
i
x_i
xi 为正例,当
y
i
=
−
1
y_i = -1
yi=−1 时,称
x
i
x_i
xi 为负例,
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 称为样本点。再假设训练数据集的数据是线性可分的。
SVM的目标是在特征空间中找出一个分离超平面,能够将实例分到不同类。分离超平面是由
w
⋅
x
+
b
=
0
w · x + b = 0
w⋅x+b=0 来决定。这个方程是由法向量
w
w
w 和
b
b
b 来决定。分离超平面将数据集组成的特征空间划分为两个部分,一部分是正类,另一部分是负类。
2.2 寻找最优分离超平面
当训练数据集线性可分时,会存在着无数个分离超平面能够将特征空间划分开来。观察上图,如果中间的红线稍稍微偏斜一点,一样可以正确的分类。所以,线性支持向量机寻求的是一个最优分离超平面。使得分离的效果最好。
定义1:
给定线性可分数据集。通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
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)
那么问题依然回到如果寻找最优分类超平面上。为什么最优超平面的分离效果最好。
2.3 函数间隔
图中A,B,C三个点表示三个实例。他们都在分离超平面的正类一侧。如果来预测他们的类,其中,点A距离分离超平面最远,若超平面预测其为正类,就比较确信预测是对的,点C距离分离超平面最近,若对其进行预测,可能就没有那么确信,点B在A和C之间,预测其为正类的确信度在A和C之间。
一般的话,若某个点距离分离超平面越远,则越能确信该点被分类正确。如果在超平面
w
⋅
x
+
b
=
0
w·x+b=0
w⋅x+b=0 确定的情况下。
∣
w
⋅
x
+
b
∣
|w·x+b|
∣w⋅x+b∣ 就表示为某个点到超平面的距离。若
w
⋅
x
+
b
w·x+b
w⋅x+b 与其类y的标记一致,则表示分类正确。所以可以用
y
(
w
⋅
x
+
b
)
y (w·x+b)
y(w⋅x+b) 来表示分类的正确以及确信度。这就是函数间隔。
定义2:
对于给定的训练数据集 T T T 和超平面 ( w , b ) (w,b) (w,b) ,其函数间隔为
γ i ^ = y i ( w ⋅ x i + b ) \hat{\gamma_i} = y_i(w · x_i + b) γi^=yi(w⋅xi+b)
定义数据集中所有实例距离超平面最小的函数间隔为
γ ^ = m i n γ i ^ \hat{\gamma} = min \space \space\space\hat{\gamma_i} γ^=min γi^
虽然有了函数间隔的定义,但是我们无法仅仅根据最小函数间隔来确定我们的超平面,只要成比例的改变 w w w 和 b b b 超平面不会因此改变,但是函数间隔会成比例的改变。所以我们要求超平面的法向量 w w w 加以约束,如规范化,使得 ∣ ∣ w ∣ ∣ = 1 ||w|| = 1 ∣∣w∣∣=1 ,使得间隔是确定的,这时函数间隔就称为了几何间隔。
2.4 几何间隔
定义3:
对于给定的训练数据集 T T T 和超平面 ( w , b ) (w,b) (w,b) ,其几何间隔为
γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) \gamma_i = y_i( \frac{w}{||w||} · x_i + \frac{b}{||w||}) γi=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)
定义数据集中所有实例距离超平面最小的几何间隔为
γ = m i n γ i \gamma = min \space \space\space\gamma_i γ=min γi
因此,函数间隔和几何间隔一般有着以下的关系
γ
=
γ
i
^
∣
∣
w
∣
∣
\gamma = \frac{\hat{\gamma_i}}{||w||}
γ=∣∣w∣∣γi^
如果 $||w||= 1 $,则函数间隔与几何间隔相同,若 w w w 和 b b b 成比例的改变,函数间隔会成比例改变,但是几何间隔不会变。超平面也不会变。
2.5 (硬)间隔最大化
支持向量机的学习策略是学习到一个能够正确的划分训练数据集并且使得几何间隔最大的分离超平面。因为对于线性可分数据集来说,存在着无数个分离超平面,但是有且只有一个分离超平面使得几个间隔最大。这里的间隔最大化又称为硬间隔最大化。
间隔最大化:对于训练数据集来说,几何间隔最大的超平面意味着能够以充分大的确信度来对每个实例进行划分,也就是说,不仅能够将所有的实例正确划分,而且对于最接近超平面的点来说,也有足够大的确信度来将其分开,这样做的好处是对于新的实例来说有着更强的分类能力。
2.6 求最优超平面的方法
现在理论依据已经有了,我们要来求解出最优超平面。
根据上面的式子,我们可以把这个问题看作为一个约束最优化问题:
m
a
x
w
,
b
γ
\underset{w,b}{max} \space\space\space\space\space\space\space\space\gamma
w,bmax γ
s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ≥ γ s.t. \space\space\space\space y_i\bigg(\frac{w}{||w||} · x_i + \frac{b}{||w||} \bigg)\geq \gamma s.t. yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)≥γ
表示的是我们希望最大化超平面
(
w
,
b
)
(w,b)
(w,b) 关于训练数据的几何间隔
γ
\gamma
γ ,约束条件是每个实例点的几何间隔都需要至少是
γ
\gamma
γ。下面是函数间隔的式子
m
a
x
w
,
b
γ
^
∣
∣
w
∣
∣
\underset{w,b}{max} \space\space\space\space\space\space\space\space \frac{\hat{\gamma}}{||w||}
w,bmax ∣∣w∣∣γ^
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
s.t. \space\space\space\space y_i\bigg(w · x_i + b \bigg)\geq \hat{\gamma}
s.t. yi(w⋅xi+b)≥γ^
因为函数间隔并不影响最优化问题的解,所以我们可以将
γ
^
=
1
\hat{\gamma} = 1
γ^=1 带入上式,同时,最大化的
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1 和最小化的
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2 是等价的,所以得到了下面的最优化问题:
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
\underset{w,b}{min} \space\space\space\space\space\space\space\space \frac{1}{2}||w||^2
w,bmin 21∣∣w∣∣2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
s.t. \space\space\space\space y_i\bigg(w · x_i + b \bigg) - 1\geq 0
s.t. yi(w⋅xi+b)−1≥0
这是一个凸二次规划问题。我们可以解这个凸二次规划来求得
w
,
b
w,b
w,b
凸优化问题:
m i n w f ( w ) \underset{w}{min} \space\space\space f(w) wmin f(w)
s . t . g i ( w ) ≤ 0 s.t. \space\space\space g_i(w) \leq 0 s.t. gi(w)≤0
h i ( w ) = 0 \space\space\space\space\space\space\space\space h_i(w) = 0 hi(w)=0
目标函数 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 上的仿射函数。
当目标函数 f ( w ) f(w) f(w) 是二次函数且约束函数 g i ( w ) g_i(w) gi(w) 是仿射函数时,上述凸优化问题就变成了凸二次规划问题。
综上所述,就有了下面的线性可分支持向量机的学习算法——最大间隔法。
2.7 求最优超平面——最大间隔法
输入:
T
T
T
输出:最大间隔分离超平面
- 构造并求解约束最优化问题:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 \underset{w,b}{min} \space\space\space\space\space\space\space\space \frac{1}{2}||w||^2 w,bmin 21∣∣w∣∣2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
s.t. \space\space\space\space y_i\bigg(w · x_i + b \bigg) - 1\geq 0
s.t. yi(w⋅xi+b)−1≥0
2. 得到分离超平面:
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∗)
最大分离超平面具有唯一性。
2.8支持向量与最大间隔法例题
在线性可分的情况下,距离超平面最近的点称为支持向量,支持向量符合以下的式子:
y
i
(
w
⋅
x
i
+
b
)
−
1
=
0
y_i(w·x_i + b) - 1 = 0
yi(w⋅xi+b)−1=0
支持向量在分离超平面的过程中起着重要的作用,其他的实例点并没有作用,所以支持向量机是由很少的支持向量来确定的。
解:构造约束最优化问题:
m i n w , b 1 2 ( w 1 2 + w 2 2 ) \underset{w,b}{min} \space\space\space\space\space\space\space\space \frac{1}{2}(w_1^2 + w_2^2) w,bmin 21(w12+w22)
s . t . 3 w 1 + 3 w 2 + b ≥ 1 s.t. \space\space\space\space 3w_1 + 3w_2 + b \geq 1 s.t. 3w1+3w2+b≥1
4 w 1 + 3 w 2 + b ≥ 1 \space\space\space\space 4w_1 + 3w_2 + b \geq 1 4w1+3w2+b≥1
−
w
1
−
w
2
−
b
≥
1
\space\space\space\space -w_1 -w_2 - b \geq 1
−w1−w2−b≥1
解得
w
1
=
w
2
=
1
/
2
,
b
=
−
2
w_1 = w_2 = 1/2 ,b = -2
w1=w2=1/2,b=−2。 于是最大间隔分离超平面为
1
2
x
(
1
)
+
1
2
x
(
2
)
−
2
=
0
\frac{1}{2}x^{(1)} + \frac{1}{2}x^{(2)} -2 = 0
21x(1)+21x(2)−2=0
x1 和x3 为支持向量。
3. 支持向量机的对偶算法
应用拉格朗日对偶性得到原始问题的最优解 这就是线性可分支持向量机的对偶算法,这样的优点,一是对偶问题往往更容易求解,二是自然引入核函数,进而推广到非线性分类问题。
3.1对偶算法公式
首先构建拉格朗日函数,为此对每一个不等式约束引进拉格朗日乘子,得到了以下的拉格朗日函数
L
(
w
,
b
,
a
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
N
a
i
y
i
(
w
⋅
x
i
+
b
)
+
∑
i
=
1
N
a
i
L(w,b,a) = \frac{1}{2}||w||^2 - \sum_{i=1}^Na_iy_i(w·x_i + b) + \sum_{i=1}^Na_i
L(w,b,a)=21∣∣w∣∣2−i=1∑Naiyi(w⋅xi+b)+i=1∑Nai
其中
a
=
(
a
1
,
a
2
,
a
3
,
.
.
.
.
.
,
a
N
)
T
a = (a_1,a_2,a_3,.....,a_N)^T
a=(a1,a2,a3,.....,aN)T为拉格朗日乘子向量。根据拉格朗日对偶算法的求解过程,原始问题的对偶问题是极大极小问题。经过一系列操作可以得到以下的对偶最优化问题:
m
i
n
a
1
2
∑
i
=
1
N
∑
j
=
1
N
a
i
a
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
a
i
\underset{a}{min} \space\space \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i·x_j)-\sum_{i=1}^Na_i
amin 21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
s . t . ∑ i = 1 N a i y i = 0 s.t. \sum_{i=1}^Na_iy_i = 0 s.t.i=1∑Naiyi=0
a i ≥ 0 , i = 1 , 2 , . . . , N \space\space\space\space\space a_i \geq 0 , i = 1,2,...,N ai≥0,i=1,2,...,N
定义4:
设 a ∗ = ( a 1 ∗ , a 2 ∗ , . . . , a l ∗ ) T a^* = (a_1^*,a_2^*,...,a_l^*)^T a∗=(a1∗,a2∗,...,al∗)T 是对偶最优化问题的解,那么存在下标j,使得 a j ∗ > 0 a_j^*>0 aj∗>0,并且按照下式可求得 w ∗ , b ∗ w^*,b^* w∗,b∗的解
w ∗ = ∑ i = 1 N a i ∗ y i x i w^* = \sum_{i=1}^N a_i^*y_ix_i w∗=i=1∑Nai∗yixi
b ∗ = y i − ∑ i = 1 N a i ∗ y i ( x i ⋅ j i ) b^* =y_i - \sum_{i=1}^N a_i^*y_i(x_i·j_i) b∗=yi−i=1∑Nai∗yi(xi⋅ji)
3.2对偶算法步骤
输入:
T
T
T
输出:最大间隔分离超平面
- 构造并求解约束最优化问题:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) − ∑ i = 1 N a i \underset{a}{min} \space\space \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i·x_j)-\sum_{i=1}^Na_i amin 21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 s.t. \space\space\space\space y_i\bigg(w · x_i + b \bigg) - 1\geq 0 s.t. yi(w⋅xi+b)−1≥0
s . t . ∑ i = 1 N a i y i = 0 s.t. \sum_{i=1}^Na_iy_i = 0 s.t.i=1∑Naiyi=0
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\space\space\space\space\space a_i \geq 0 , i = 1,2,...,N
ai≥0,i=1,2,...,N
求得最优解
a
∗
=
(
a
1
∗
,
a
2
∗
,
.
.
.
,
a
l
∗
)
T
a^* = (a_1^*,a_2^*,...,a_l^*)^T
a∗=(a1∗,a2∗,...,al∗)T
2. 计算
w
∗
=
∑
i
=
1
N
a
i
∗
y
i
x
i
(
7.25
)
w^* = \sum_{i=1}^N a_i^*y_ix_i \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space(7.25)
w∗=i=1∑Nai∗yixi (7.25)
b
∗
=
y
i
−
∑
i
=
1
N
a
i
∗
y
i
(
x
i
⋅
j
i
)
(
7.26
)
b^* =y_i - \sum_{i=1}^N a_i^*y_i(x_i·j_i)\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space(7.26)
b∗=yi−i=1∑Nai∗yi(xi⋅ji) (7.26)
3. 求得分离超平面
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对偶算法例题
4 线性支持向量机
以上我们讨论的都是线性可分的数据集,对线性不可分数据是不适用的,因为上述方法的不等式约束并不都能成立,我们需要将硬间隔最大化变为软间隔最大化。在一个训练数据集中通常会有某些特异点不符合线性可分,如果将这些特异点去掉,那么这个数据将会是线性可分的。
4.1 软间隔最大化
线性不可分意味着某些样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 不能满足函数间隔大于等于一的约束条件,为了解决这个问题,可以对每一个样本点引进一个松弛变量
ξ
i
\xi_i
ξi,使函数间隔加上松弛变量大于等于1,这样,我们的约束条件就变为了:
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
y_i(w·x_i + b) \geq 1 - \xi_i
yi(w⋅xi+b)≥1−ξi
同时,对每个松弛变量
ξ
i
\xi_i
ξi,支付一个代价
ξ
i
\xi_i
ξi,原来的目标函数就变为了:
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
\frac{1}{2}||w||^2 + C\sum_{i=1}^N\xi_i
21∣∣w∣∣2+Ci=1∑Nξi
C为惩罚参数 (C>0),C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。通过上面的方法,我们就可以将线性不可分的数据用支持向量机来学习,相对于硬间隔最大化,它被称为软间隔最大化。
4.2 线性不可分的凸二次规划问题
有了软间隔最大化的方法,线性不可分的线性支持向量机的学习问题就变成了凸二次规划问题:
m i n w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i \underset{w,b,\xi}{min} \space\space\space\space\space\space\space\space \frac{1}{2}||w||^2 + C\sum_{i=1}^N\xi_i w,b,ξmin 21∣∣w∣∣2+Ci=1∑Nξi
s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i i = 1 , 2 , 3 , . . . , N s.t. \space\space\space\space y_i\bigg(w · x_i + b \bigg) \geq 1-\xi_i\space\space\space\space\space\space\space\space\space\space\space\space i=1,2,3,...,N s.t. yi(w⋅xi+b)≥1−ξi i=1,2,3,...,N
ξ i ≥ 0 i = 1 , 2 , 3 , . . . , N \xi_i \geq 0 \space\space\space\space\space\space\space\space\space\space\space\space i=1,2,3,...,N ξi≥0 i=1,2,3,...,N
定义5:
对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题得到的分离超平面为
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∗)
称为线性支持向量机
4.3 线性支持向量机的对偶算法
通过对上述约束问题构造拉格朗日函数,得到了以下的式子
L
(
w
,
b
,
ξ
,
a
,
u
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
N
ξ
i
−
∑
i
=
1
N
a
i
(
y
i
(
w
⋅
x
i
+
b
)
−
1
+
ξ
i
)
−
∑
i
=
1
N
u
i
ξ
i
(
a
i
≥
0
,
u
i
≥
0
)
L(w,b,\xi,a,u) = \frac{1}{2}||w||^2 + C\sum_{i=1}^N\xi_i - \sum_{i=1}^Na_i(y_i(w·x_i+b)-1+\xi_i)-\sum_{i=1}^Nu_i\xi_i\space\space\space\space\space\space (a_i \geq 0 ,u_i \geq 0)
L(w,b,ξ,a,u)=21∣∣w∣∣2+Ci=1∑Nξi−i=1∑Nai(yi(w⋅xi+b)−1+ξi)−i=1∑Nuiξi (ai≥0,ui≥0)
对偶问题是拉格朗日的极大极小问题,通过求偏导求极大极小值可得对偶问题:
m
a
x
a
−
1
2
∑
i
=
1
N
∑
j
=
1
N
a
i
a
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
a
i
\underset{a}{max} \space\space\space\space -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i·x_j)+\sum_{i=1}^Na_i
amax −21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)+i=1∑Nai
s . t . ∑ i = 1 N a i y i = 0 s.t.\space\space\space \sum_{i=1}^Na_iy_i = 0 s.t. i=1∑Naiyi=0
C − a i − u i = 0 \space\space\space\space\space\space\space\space\space\space\space\space \space\space\space C - a_i - u_i = 0 C−ai−ui=0
a i ≥ 0 a_i \geq 0 ai≥0
u i ≥ 0 u_i \geq 0 ui≥0
定义6:
设 a ∗ = ( a 1 ∗ , a 2 ∗ , . . . , a l ∗ ) T a^* = (a_1^*,a_2^*,...,a_l^*)^T a∗=(a1∗,a2∗,...,al∗)T 是对偶最优化问题的解,那么存在下标j,使得 C > a j ∗ > 0 C>a_j^*>0 C>aj∗>0,并且按照下式可求得 w ∗ , b ∗ w^*,b^* w∗,b∗的解
w ∗ = ∑ i = 1 N a i ∗ y i x i w^* = \sum_{i=1}^N a_i^*y_ix_i w∗=i=1∑Nai∗yixi
b ∗ = y i − ∑ i = 1 N a i ∗ y i ( x i ⋅ j i ) b^* =y_i - \sum_{i=1}^N a_i^*y_i(x_i·j_i) b∗=yi−i=1∑Nai∗yi(xi⋅ji)
4.4 线性支持向量机对偶算法流程
输入:
T
T
T
输出:最大间隔分离超平面
- 选择惩罚参数C>0,构造并求凸二次规划问题:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) − ∑ i = 1 N a i \underset{a}{min} \space\space \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i·x_j)-\sum_{i=1}^Na_i amin 21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
s . t . ∑ i = 1 N a i y i = 0 s.t. \sum_{i=1}^Na_iy_i = 0 s.t.i=1∑Naiyi=0
C
≥
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\space\space\space\space\space C\geq a_i \geq 0 , i = 1,2,...,N
C≥ai≥0,i=1,2,...,N
求得最优解
a
∗
=
(
a
1
∗
,
a
2
∗
,
.
.
.
,
a
l
∗
)
T
a^* = (a_1^*,a_2^*,...,a_l^*)^T
a∗=(a1∗,a2∗,...,al∗)T
2. 计算
w
∗
=
∑
i
=
1
N
a
i
∗
y
i
x
i
(
7.25
)
w^* = \sum_{i=1}^N a_i^*y_ix_i \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space(7.25)
w∗=i=1∑Nai∗yixi (7.25)
\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space
选择
a
∗
a^*
a∗ 的一个分量
a
j
∗
a_j^*
aj∗ 适合条件
0
<
a
j
∗
<
C
0<a_j^*<C
0<aj∗<C,来计算
b
∗
=
y
i
−
∑
i
=
1
N
a
i
∗
y
i
(
x
i
⋅
j
i
)
(
7.26
)
b^* =y_i - \sum_{i=1}^N a_i^*y_i(x_i·j_i)\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space(7.26)
b∗=yi−i=1∑Nai∗yi(xi⋅ji) (7.26)
3. 求得分离超平面
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∗)
5 非线性支持向量机
对于线性分类问题,线性分类支持向量机是一种非常有效的办法,但是有时分类问题是非线性的,这时可以使用非线性支持向量机,其主要特点是利用核技巧,下面来分别讲解一下非线性支持向量机与核函数。
5.1 核技巧
如图所示,我们无法通过一条直线将正例和负例分割开来,但是我们可以通过一条椭圆曲线(非线性模型),将正例和负例分割开。
一般来说,对于给定的数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
,
(
x
N
,
y
N
)
}
T = \lbrace(x_1,y_1),(x_2,y_2),....,(x_N,y_N)\rbrace
T={(x1,y1),(x2,y2),....,(xN,yN)} ,其中实例
x
i
x_i
xi 属于输入空间,
x
i
∈
R
n
x_i \in R^n
xi∈Rn, 对应的标记有两中
y
i
∈
{
−
1
,
+
1
}
y_i \in \lbrace -1,+1\rbrace
yi∈{−1,+1}。 如果能用一个
R
n
R^n
Rn 中的超曲面将正例负例正确分类,那么称这个问题为非线性可分。
非线性问题往往不好求解,所以希望能够用解线性问题的方法来解决这个非线性问题,所采取的方法是进行一个非线性变换,将非线性问题变化为线性问题,通过解变换后的线性问题来求解到原来的非线性问题。
通过上面的例子就可以说明用线性分类的方法求解非线性分类问题分为两步,首先使用一个变换,将原空间的数据映射到新空间,然后在新空间里面用线性分类学习的方法,从训练数据中学习分类模型。核技巧就是这样的方法。
5.2 核函数
定义7:
设 X X X是输入空间,又设 H H H为特征空间,如果存在从 X X X到 H H H的映射
∅ ( x ) : X → H \varnothing(x): X \rightarrow H ∅(x):X→H
使得对所有的 x , z ∈ X x,z \in X x,z∈X ,函数 K ( x , z ) K(x,z) K(x,z) 满足
K ( x , z ) = ∅ ( x ) ⋅ ∅ ( z ) K(x,z) = \varnothing(x)·\varnothing(z) K(x,z)=∅(x)⋅∅(z)
则称 K ( x , z ) K(x,z) K(x,z) 为核函数, ∅ ( x ) \varnothing(x) ∅(x) 为映射函数, ∅ ( x ) ⋅ ∅ ( z ) \varnothing(x)·\varnothing(z) ∅(x)⋅∅(z)为内积。
核技巧的想法是:在计算的过程中,只定义 K ( x , z ) K(x,z) K(x,z)核函数,通过直接计算核函数来进行求解。因为如果使用 ∅ ( x ) ⋅ ∅ ( z ) \varnothing(x)·\varnothing(z) ∅(x)⋅∅(z) 来计算并不容易。 ∅ \varnothing ∅是输入空间到特征空间的映射。特征空间 H H H一般是高维的,甚至可能是无穷维的。并且对于给定的 K ( x , z ) K(x,z) K(x,z),特征空间 H H H和映射函数 ∅ \varnothing ∅的取值往往有很多种。所以并不好进行处理。
5.3 核函数例子
5.4 核技巧在支持向量机的应用
在对偶问题的目标函数中
我们可以用核函数
K
(
x
i
,
x
j
)
=
∅
(
x
i
)
⋅
∅
(
x
j
)
K(x_i,x_j) = \varnothing(x_i)·\varnothing(x_j)
K(xi,xj)=∅(xi)⋅∅(xj) 来代替。此时目标函数变为了
W
(
a
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
a
i
a
j
y
i
y
j
K
(
x
i
,
x
j
)
−
∑
i
=
1
N
a
i
W(a) = \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i,x_j)-\sum_{i=1}^Na_i
W(a)=21i=1∑Nj=1∑NaiajyiyjK(xi,xj)−i=1∑Nai
与此同时,分类决策函数变为了
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
a
i
∗
y
i
K
(
x
i
,
x
j
)
+
b
∗
)
f(x) = sign(\sum_{i=1}^Na_i^*y_iK(x_i,x_j)+ b^*)
f(x)=sign(i=1∑Nai∗yiK(xi,xj)+b∗)
这么做的目的是将原来的输入空间换位另一个新的特征空间,在新的特征空间中,数据是线性的,所以我们可以根据线性支持向量机的方法来求解得到非线性支持向量机的解。它巧妙的利用核技巧来达到了简化运算的效果。在实际应用中,我们往往需要选择合适的核函数。
5.5 常用核函数
5.6 非线性支持向量机的核技巧算法
正如5.4的做法那样,利用核技巧,我们可以在线性支持向量机当中求解非线性的分类问题,将线性支持向量机扩展到非线性支持向量机,做法就是将对偶目标函数里面的内积换成核函数
定义8:
非线性分类训练集进行求解过程中,我们可以得到以下的分类决策函数
f ( x ) = s i g n ( ∑ i = 1 N a i ∗ y i K ( x i , x j ) + b ∗ ) f(x) = sign(\sum_{i=1}^Na_i^*y_iK(x_i,x_j)+ b^*) f(x)=sign(i=1∑Nai∗yiK(xi,xj)+b∗)
下面讲述非线性支持向量机的学习算法
输入:
T
T
T
输出:分类决策函数
- 寻找适当的核函数
K
K
K和参数
C
C
C来构造求解最优化问题
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N a i \underset{a}{min} \space\space \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i·x_j)-\sum_{i=1}^Na_i amin 21i=1∑Nj=1∑NaiajyiyjK(xi⋅xj)−i=1∑Nai
s . t . ∑ i = 1 N a i y i = 0 s.t. \sum_{i=1}^Na_iy_i = 0 s.t.i=1∑Naiyi=0
C
≥
a
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
N
\space\space\space\space\space C\geq a_i \geq 0 , i = 1,2,...,N
C≥ai≥0,i=1,2,...,N
\space \space \space \space \space \space\space\space
求得最优解
a
∗
=
(
a
1
∗
,
a
2
∗
,
.
.
.
,
a
l
∗
)
T
a^* = (a_1^*,a_2^*,...,a_l^*)^T
a∗=(a1∗,a2∗,...,al∗)T
\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space
选择
a
∗
a^*
a∗ 的一个分量
a
j
∗
a_j^*
aj∗ 适合条件
0
<
a
j
∗
<
C
0<a_j^*<C
0<aj∗<C,来计算
b
∗
=
y
i
−
∑
i
=
1
N
a
i
∗
y
i
K
(
x
i
⋅
j
i
)
b^* =y_i - \sum_{i=1}^N a_i^*y_iK(x_i·j_i)\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space
b∗=yi−i=1∑Nai∗yiK(xi⋅ji)
\space \space \space \space \space \space\space \space \space \space \space \space\space \space \space \space \space \space
求得分类决策函数
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
a
i
∗
y
i
K
(
x
i
,
x
j
)
+
b
∗
)
f(x) = sign(\sum_{i=1}^Na_i^*y_iK(x_i,x_j)+ b^*)
f(x)=sign(i=1∑Nai∗yiK(xi,xj)+b∗)
6 序列最小最优化算法
SMO算法是支持向量机学习的一种快速算法,其特点是不断的将原二次规划问题分解为只有两个变量的二次规划子问题,并对此问题进行解析求解,直到所有变量满足kkt条件为止,这样通过启发式的方法得到原二次规划的最优解,因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。
6.1 凸二次规划问题的缺陷
支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,但是当训练样本容量很大时,这些算法往往变得非常低效,以至于无法使用 ,所以如何高效的实现支持向量机学习又成了一个重要的问题。在1998年由platt提出的SMO(序列最小最优化算法)算法解决了这样的问题。
6.2 SMO算法思想
SMO算法的基本思路是,如果所有变量的解都满足此最优化问题的kkt条件,那么这个最优化问题的解就得到了,因为kkt条件是最优化问题的充要条件,否则选择两个变量固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该是最接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小,重要的是这时子问题可以通过解析方法求解,这样就大大提高了整个算法的计算速度,此问题有两个变量,一个是违反kkt条件最严重的那一个,另一个由约束条件自动确定,由如此SMO算法将原问题不断分解为子问题,并对子问题求解,进而达到求解原问题的目的。