前言
此文中我们介绍了支持向量机用到的一些概念以及求解方法,接下来我们将分别介绍线性可分支持向量机、线性支持向量机以及非线性支持向量机。
首先,我们考虑一个二类分类问题,假设输入空间与特征空间为两个不同的空间。输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。线性可分支持向量机、线性支持向量机假设这两个空间的元素一一对应,并将输入空间中的输入映射为特征空间中的特征向量。非线性支持向量机利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量。所以,输入都由输入空间转换到特征空间,支持向量机的学习是在特征空间进行的。
线性可分支持向量机
我们知道,支持向量机的学习目标是在特征空间找到一个分离超平面,能将实例分到不同的类。
当训练数据集线性可分时(线性可分数据集这里有提到),存在无穷个分离超平面(这在感知机中我们介绍过)将两类数据正确分开。感知机利用误分类最小化的撤率,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求最优分离超平面,并且解是唯一的。
那么我们如何使得间隔最大化并求得分离超平面呢?
间隔最大化(硬间隔)
间隔最大化的直观解释是:对训练数据集找到几何间隔(此文有介绍)最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而求对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开,这样的超平面对于未知的新实例有很好的分类预测能力。
下面我们考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。我们可以将这个问题表示为下面的约束最优化问题:
即我们希望最大化超平面 (w,b) ( w , b ) 关于训练数据集的几何间隔 γ γ ;
约束条件表示:超平面关于每个样本点的几何间隔至少是 γ γ
进一步地,我们考虑几何间隔和函数间隔的关系。
此处: δ δ 为函数间隔 yi(w⋅xi+b) y i ( w ⋅ x i + b )
这是可将上面的约束问题改为:
这是我们需要注意到,函数间隔 δ δ 的取值并不影响最优化问题的解。
这里,假设我们将 w,b w , b 按比例改为 λw,λb λ w , λ b ,这是函数间隔变为 yi(λw⋅xi+λb)=λδ y i ( λ w ⋅ x i + λ b ) = λ δ ;
此时,函数间隔的改变并没有改变上面的约束,对目标函数的优化也没用影响,也就是说,它产生一个等价的最优化问题;
这样,我们就可以把函数间隔 δ δ 特殊化,取 δ=1 δ = 1
将上面 δ=1 δ = 1 ,带入原来最优化问题中,注意到最大化 1||w|| 1 | | w | | 和最小化 12||w||2 1 2 | | w | | 2 是等价的。
我们将得到线性支持向量机学习的最优化问题:
上面这个约束最优化问题是一个凸二次规划的问题。
如果求出了约束最优化问题的解 (w∗,b∗) ( w ∗ , b ∗ ) ,那么就可以得到最大间隔分离超平面 w∗⋅x+b∗=0 w ∗ ⋅ x + b ∗ = 0 及分类决策函数 f(x)=sign(w∗⋅x+b∗) f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) ,即线性可分支持向量机。
线性可分支持向量机学习算法——最大间隔法如下:
输入:线性可分训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
,其中,
xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
+
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
求得最优解 w∗,b∗ w ∗ , b ∗ ;
(2)由此得到分离超平面:
分类决策函数:
若训练数据集线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。证明过程可参考《统计学习方法》李航
在之前博客中,我们介绍过,支持向量就是距离分离超平面最近的实例点。注意到上面约束问题,支持向量便是使约束条件等号成立的点,即:
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用,如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。
对偶算法
为了求解线性可分支持向量机的最优化问题,将原来的约束最优化问题作为原始问题,应用拉格朗日对偶性(此文有介绍),通过求解对偶问题得到原始问题的最优解。
这样做的有点:
对偶问题往往更容易求解
自然引入核函数,进而推广到非线性分类问题(这在后面会介绍)
现在我们就开始构建原始问题的对偶问题:
(1)首先构建拉格朗日函数
其中, αi⩾0,α=(α1,α2,...,αN)T α i ⩾ 0 , α = ( α 1 , α 2 , . . . , α N ) T 为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题。
即,需要先求 L(w,b,α) L ( w , b , α ) 对 w,b w , b 的极小,再求对 α α 的极大。
(2)求 minw,bL(w,b,α) min w , b L ( w , b , α )
将拉格朗日函数
L(w,b,α)
L
(
w
,
b
,
α
)
分别对
w,b
w
,
b
求偏导并令其等于0
得:
代入拉格朗日函数中,即得:
即:
(3)求 minw,bL(w,b,α) min w , b L ( w , b , α ) 对 α α 的极大,即是对偶问题:
将上式的目标函数由求极大转换为求极小,得到等价的对偶最优化问题:
对于线性可分训练数据集,假设对偶最优化问题对 α α 的解为 α∗=(α∗1,α∗2,...,α∗N)T α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T ,可以由 α∗ α ∗ 求得原始最优化问题对 (w,b) ( w , b ) 的解 w∗,b∗ w ∗ , b ∗
存在一下定理:
假设
α∗=(α∗1,α∗2,...,α∗N)T
α
∗
=
(
α
1
∗
,
α
2
∗
,
.
.
.
,
α
N
∗
)
T
是对偶最优化问题的解,则存在下标
j
j
,使得 ,并可求得原始最优化问题的解
w∗,b∗
w
∗
,
b
∗
:
至此,分离超平面可以写成:
分类决策函数可以写为:
这就是说,分类决策函数只依赖于输入 x x 和训练数据集样本输入的内积。
线性可分支持向量机学习算法——对偶算法:
输入:线性可分训练数据集,其中,
xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
+
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
求得最优解 α∗=(α∗1,α∗2,...,α∗N)T α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T ;
(2)计算:
并选择 α∗ α ∗ 的一个正分量 α∗j>0 α j ∗ > 0 ,计算:
(3)求得分离超平面:
分类决策函数:
下面通过具体的数据,比较两个算法的计算:
数据如下图:正例点是 x1=(3,3)T,x2=(4,3)T,负例点是x3=(1,1)T x 1 = ( 3 , 3 ) T , x 2 = ( 4 , 3 ) T , 负 例 点 是 x 3 = ( 1 , 1 ) T
问题:试求最大间隔分离超平面?
1.最大间隔法求解:
解:按照最大间隔法,根据训练数据集构造约束最优化问题:
求得此最优化问题的解为: w1=w2=12,b=−2 w 1 = w 2 = 1 2 , b = − 2 。于是最大间隔分离超平面为:
其中, x1=(3,3)T与x3=(1,1)T x 1 = ( 3 , 3 ) T 与 x 3 = ( 1 , 1 ) T 是支持向量。
2.对偶算法求解:
解:根据所给数据,对偶问题是:
解这一最优化问题,将 α3=α1+α2 α 3 = α 1 + α 2 代入目标函数并记为:
对 α1,α2 α 1 , α 2 求偏导数并令其为0,易知 s(α1,α2) s ( α 1 , α 2 ) 在点 (32,−1)T ( 3 2 , − 1 ) T 取极值,但该点不满足约束条件 α2⩾0 α 2 ⩾ 0 ,所以极小值应在边界上达到。
当 α1=0 α 1 = 0 时,最小值 s(0,213)=−213 s ( 0 , 2 13 ) = − 2 13 ;当 α2=0 α 2 = 0 时,最小值 s(14,0)=−14 s ( 1 4 , 0 ) = − 1 4 。于是, s(α1,α2) s ( α 1 , α 2 ) 在 α1=14,α2=0 α 1 = 1 4 , α 2 = 0 达到最小,此时 α3=α1+α2=14 α 3 = α 1 + α 2 = 1 4
这样,
α∗1=α∗3=14
α
1
∗
=
α
3
∗
=
1
4
对应的实例点
x1,x3
x
1
,
x
3
是支持向量,根据:
计算得:
取点 x1=(3,3)T求b∗,此时j=1,yj=1 x 1 = ( 3 , 3 ) T 求 b ∗ , 此 时 j = 1 , y j = 1
于是分离超平面为:
分类决策函数为:
至此,我们已经介绍了线性可分支持向量机的间隔最大化和对偶算法,要想真的理解这些,真的需要较好的数学基础,尤其是凸优化
参考书籍
《机器学习》西瓜书
《统计学习方法》李航