支持向量机(二)
线性可分支持向量机
引言
对于一个二类分类问题,假设输入空间与特征空间不同,输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。线性可分支持向量机和线性支持向量机均假设这两个空间的元素一一对应(线性映射),并将输入空间的输入映射为特征空间中的特征向量,而非线性支持向量机利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量。所以,输入都由输入空间映射到特征空间,支持向量机的学习就是在特征空间进行的。
假设给定一个特征空间上的训练数据集
T = {(x1, y1), ..., (xN, yN)}, i = 1, 2, ... , N
其中,
xi为第i个特征向量,也称为实例,yi为xi的类标记,当yi=1时称为正例,否则为负例,(xi,yi)称为样本点。
假设训练数据集线性可分,则学习目标为在特征空间找到一个分离超平面,将实例分为不同的类。分离超平面对应的方程为
(1)
其中w和x为向量,b为标量,w为法向量,b为截距。法向量指向的一侧表示正类(wx+b>0),另一侧表示负类(wx+b<0),为了方便,超平面就用(w, b)表示。
当训练数据集线性可分时,存在无穷个分离超平面(想一想前一篇文章中的那个图)。感知机模型利用误分类点最少学习所得到的分离超平面是这无穷多中的一个,具体是哪一个并不确定,而支持向量机利用间隔最大化学习得到的分离超平面则是唯一的。
定义
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
(2)
以及相应的决策函数
(3)
称为线性可分支持向量机
二次规划问题后面再具体介绍,这里简单的说就是这类问题的目标函数是二次函数,约束条件是线性的。
既然定义中说了要求间隔最大化势必需要知道如何表征间隔。
函数间隔和几何间隔
一般而言,点距离超平面的远近可以表示分类预测的可信程度,距离超平面越远越可信,越近则越不可信。超平面有方程(1)确定,|wx+b|可以表示x与超平面的远近(其实要计算 x 距离超平面的距离,还需要乘以一个系数,中学几何题)。而 wx+b 的符号与类标记y的符号是否一致能够表示分类是否正确(感知机就是这么做的),而y的绝对值为1,所以用 y(wx+b)是否大于0 来表示分类是否正确, y(wx+b)的值大小来表示可信度。
给定训练数据集T 和超平面 (w, b),定义超平面关于样本点(x, y)的函数间隔为
(4)
定义超平面关于训练数据集T的函数间隔为超平面关于T中所有样本点的函数间隔最小值
(5)
函数间隔可以表示分类预测正确的可信度,但是选择超平面时,光有函数间隔还不够,前面也提过,|wx+b|乘以一个系数同样能表示数据点与超平面的远近,然而此时函数间隔却变了,所以要通过函数间隔最小化来确定 w 和 b 的值就很难办了,此时如果给w加一个约束(比如||w||=1),也就是说将w归一化,使得间隔确定,此时函数间隔变为几何间隔,其中 ||w||为向量w的L2范数( (w,b)变成了(w/||w||, b/||w||) ),
所以数据点与超平面的几何距离为
(6)
样本集T与超平面的几何间隔为
(7)
如何理解(6)式?
根据上文介绍,超平面由(w, b)确定,但并非由(w, b)唯一确定,事实上,(2w, 2b)也表示同一超平面,或者更一般地,这个超平面可由(kw, kb)(其中k为任意非0值)确定,然而函数距离|wx+b|却变了,所以我们用函数距离除以||w||(因为b跟随w变换且变换系数一样,故这里只需要除以w的L2范数),将得到的结果来唯一确定,并将其定义为几何间隔,如果||w||=1,表示w已经是归一化的了,此时函数间隔等于几何间隔。
直接给出函数间隔和几何间隔之间的关系:
(8)
(9)
从上面的定义可知,超平面的参数(w, b)成比例的变化(此时超平面没有改变),函数间隔也按此比例变化,而几何间隔不变。
有了间隔的定义,下面就讨论如何使间隔最大化。
间隔最大化
根据上面有关间隔的介绍,不难理解我们需要使样本集T 与 超平面的间隔(比如几何间隔)最大,这样就能以充分大的确信度对训练数据进行分类,且对新实例有很好的分类预测能力。具体来说,就是解决下面的约束优化问题:
(10)
(11)
可以看出,要求满足约束条件(11)式下的γ (几何间隔)的最大值。
既然函数间隔和几何间隔有(8)和(9)式的关系,那么约束最优化问题转换为,
(12)
(13)
根据前面的讨论不难知道函数间隔的值具体是多少并不会影响这个约束最优化问题(只要不是0即可),试想一下,(w, b) 与 (kw, kb)表示的是同一超平面,其中k是不为0的系数,而函数间隔却从变成了,那如果令
此时函数间隔为1(注意这是样本集T与超平面的距离),(kw, kb)仍然与(w, b)表示同一超平面,那既然是同一超平面,自然不影响约束最优化问题。所以为简单起见,我们直接令等于1,再者,由于||w||大于0,
随着||w||增大而变化趋势相反(这里使用 ||w||2/2的原因是为了下文的求导计算方便),所以最大化 就等价于最小化 ,于是约束最优化问题转换为,
(14)
(15)
(15')
其中(14)为目标函数, (15)为约束条件,这是一个凸二次规划问题,即目标函数是二次函数且约束条件是线性的,求解即得 w*和b*。
下面从另一个角度来分析
在数据集线性可分的条件下,我们可以选择两个平行的超平面将数据集分为两类,并使这两个超平面的距离尽可能的大,如下图所示,
位于H1和H2超平面上的实例就称为支持向量,对于y=1的正例点,有
H1: wx + b =1
对于y=-1的负例点,
H2: wx + b = -1
(同样地,这里的 1 和 -1 均在某个特定的(w, b)下,取 1 和 -1 也是为了方便起见)
位于H1和H2中间的那个超平面就是我们所要的分离超平面,H1和H2之间的距离称为间隔,这个间隔不难计算为 2/||w||,所以我们的目标是最大化这个间隔,即最小化||w||,另外对于任意样本点有,
wx+b>=1, if y = 1
wx+b <=-1, if y = -1
所以约束条件为,
y(wx+b)>=1
与上一小节分析吻合。
然而,上面这个约束最优化问题仍然不是很好求解,所以还需引入其他方法。
对偶算法
求解约束最优化问题,常利用拉格朗日对偶性,将原始问题转化为对偶问题,从而方便求解最优解。
这里简单的提一下拉格朗日乘子法,以防止不懂拉格朗日乘子法的人在这里顿住。
设目标函数f(x), 等式约束为 h(x),不等式约束为 g(x),则优化问题为,
其中θ表示参数,拉格朗日函数为,
(*)
首先根据(14)和(15)式,给出拉格朗日函数,注意(15)式两边乘以-1,使不等号反向(即(15')式),套用拉格朗日函数,则有
(16)
其中,
为拉格朗日乘子向量,其每个分量与样本实例一一对应。
现在,目标就变成了求L的极值,L关于α求极大值,L关于w, b求极小值
(17)
根据拉格朗日对偶性,问题转化为,
(18)
变成一个极大极小问题,先对w,b求极小,然后对α求极大。
(1)对w,b求偏导
所以,
(19)
(20)
将上两式带入拉格朗日函数有,
(21)
(2)对α求极大
将L 乘以 -1,转化为对α求极小,加上(20)的等式约束条件,则有
(22)
(23)
假设求得α为α*,那么如何求得w和b的值呢?
一般地,假设满足KKT条件(什么KKT条件,后面会有专题讲解),那么(*)式表示的拉格朗日函数最优解满足:
- L(x,λ,μ)对x求导为零 (a)
- h(x)=0 (b)
- μ*g(x)=0 (c)
根据(19)式可以求得w*,这也吻合上面(a)式,而根据上面(c)式,有
(24)
对于i=1,2,...,N,至少有一个αi>0,因为假设如果αi对任意的i全部为0,则根据(19)式,w为零向量,这显然不是我们所要的最优解,所以这个αi>0,再根据(24)式,可得
,其中 i 不是任意的,而是满足 αi>0
将(19)式代入上式,为了避免下标混淆,将 i 改记为 j,得
两边同时乘以yj,根据yj2=1,求得b,总结如下,
(25)
(26)
其中,由于xj对Sigma求和的 i 无关,是自由的,所以像上式那样也可以放入括号内,此时分类决策函数为,
(27)
上面三式中的j在求得α后,找一个分量不为0的αj,其下标j 对应的xj,yj的值可代入计算。
从上面(25)和(26)式可知,w和b的值只依赖于对应的αi>0的样本点(xi,yi),其他样本点则不产生影响,训练集中对应的αi>0的样本点称为支持向量,显然,支持向量为落在间隔边界上的样本点(这些点决定了间隔边界的唯一以及分离超平面的唯一)。
现在,剩下的就是如何求α*了,这个问题暂且先等一等。
ref
- 统计学习方法,李航