您的位置:首页 > 其它

支持向量机(Support Vector Machine,SVM)详解

2017-05-31 11:21 387 查看

支持向量机(Support Vector Machine,SVM)详解

主要内容

支持向量机简介

数据线性可分的情况

间隔与支持向量

对偶问题

SMO算法

数据非线性可分的情况

1、支持向量机简介

  支持向量机(support vector machine)是一种二分类模型,其基本模型定义是特征空间上的间隔最大的线性分类器,即支持向量机的学习策略是间隔最大化,最终可转化为一个凸二次规划问题的求解。

   支持向量机于1995年正式发表,由于在文本分类任务中显示出卓越性能,很快成为机器学习的主流技术,并直接掀起了“统计学习”在2000年前后的高潮。但实际上,支持向量的概念早在二十世纪六十年代就已出现,统计学习理论在七十年代就已成型。对核函数的研究更早,Mercer定理可追溯到1909年,RKHS则在四十年代就已被研究,但在统计学习兴起之后,核技巧才真正成为机器学习的通用基本技术。

  支持向量机的求解通常是借助于凸优化技术。如何提高效率,使SVM能适用于大规模数据一直是研究重点。对线性核SVM已有很多成果,例如基于割平面法的SVM具有线性复杂度,基于随机梯度下降的Pegasos速度甚至更快,而坐标下降法则在稀疏数据上有很高的效率。非线性核SVM的时间复杂度在理论上不可能低于O(m2),因此研究重点是设计快速近似算法,如基于采样的CVM、基于低秩逼近的Nyström方法、基于随机傅里叶特征的方法等。最近有研究显示,当核矩阵特征值有很大差别时,Nyström方法往往优于随机傅里叶特征方法。

  支持向量机是针对二分类任务设计的,对多分类任务要进行专门的推广,对带结构输出的任务也已有相应的算法。

  核函数直接决定了支持向量机与核方法的最终性能,但遗憾的是,核函数的选择是一个未决问题。多核学习使用多个核函数并通过学习获得其最优凸组合作为最终的核函数,这实际上是在借助集成学习机制。

  SVM已有很多软件包,比较著名的有LIBSVM [Chang and Lin,2011]和LIBLINEAR [Fan et al.,2008]等。

2、数据线性可分的情况

2.1 间隔与支持向量

  给定训练样本集D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1},分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开的划分超平面可能有很多,如图1所示,那么应该选取哪一个呢?



图 1

  直观上看,应该寻找位于两类训练样本“正中间”的划分超平面,即图1中红色的那个,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比图1中的训练样本更接近两个类的分隔界,这将使许多划分超平面出现错误,而红色的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。

  在样本空间中,划分超平面可通过如下线性方程来描述:

wTx+b=0 (1)其中,w=(w1;w2;...;wd)为法向量,决定了超平面的方向,d为样本属性个数;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量w和位移b确定,我们将其记为(w,b)。样本空间中任意点x到超平面(w,b)的距离可写为:

r=|wTx+b|||w|| (2)其中,||w||为欧几里得泛数,||w||=w∗w−−−−−√=w21+w22+...+w2d−−−−−−−−−−−−−−√。

  假设超平面(w,b)能将训练样本正确分类,即对于(xi,yi)∈D,若yi=+1,则有wTx+b>0;若yi=−1,则有wTx+b<0。令

{wTxi+b≥+1,wTxi+b≤−1,yi=+1yi=−1 (3)

  如图2所示,距离超平面最近的这几个训练样本点使式(3)的等号成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为:

γ=2||w|| (4)它被称为“间隔”(margin)。



图 2

  欲找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到能够满足式(3)中约束的参数w和b,使得γ最大,即

maxw,b 2||w|| (5)s.t. yi(wTxi+b)≥1, i=1,2,...,m

  显然,为了最大化间隔,仅需最大化||w||−1,这等价于最小化||w||2。于是,式(5)可重写为:

minw,b 12||w||2 (6)s.t. yi(wTxi+b)≥1, i=1,2,...,m

这就是支持向量机(support vector machine,SVM)基本模型。

2.2 对偶问题

  我们希望求解式(6)来得到最大间隔划分超平面所对应的模型:

f(x)=wTx+b (7)其中,w和b是模型参数。注意到式(6)本身是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计划包求解,但我们可以有更高效的方法。

  对式(6)使用拉格朗日乘子法可得到其“对偶问题”(dual problem)。具体来说,对式(6)的每条约束添加拉格朗日乘子αi≥0,则该问题的拉格朗日函数可写为:

L(w,b,α)=12||w||2+∑i=1mαi(1−yi(wTxi+b)) (8)其中,α=(α1;α2;...;αm)。令L(w,b,α)对w和b的偏导为零,可得:

w=∑i=1mαiyixi (9)0=∑i=1mαiyi (10)将式(9)代入(8),即可将L(w,b,α)中的w和b消去,再考虑式(10)的约束,就得到式(6)的对偶问题:

maxα ∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxTixj (11)s.t. ∑i=1mαiyi=0, αi≥0, i=1,2,...,m解出α后,求出w与b即可得到模型:

f(x)=wTx+b=∑i=1mαiyixTix+b (12)

  从对偶问题(11)解出的αi是式(8)中的拉格朗日乘子,它恰对应着训练样本(xi,yi)。注意到式(6)中有不等式约束,因此上述过程需满足KKT(Karush-Kuhn-Tucker)条件,即要求

⎧⎩⎨⎪⎪αi≥0yif(xi)−1≥0αi(yif(xi)−1)=0 (13)于是,对任意训练样本(xi,yi),总有αi=0或yif(xi)=1。若αi=0,则该样本将不会在式(12)的求和中出现,也就不会对f(x)有任何影响;若αi>0,则必有yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。

2.3 SMO算法

  那么,如何求解式(11)呢?不难发现,这是一个二次规划问题,可使用通用的二次规划算法来求解;然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。为了避免这个障碍,人们通过利用问题本身的特性,提出了很多高效算法,SMO(Sequential Minimal Optimization)是其中一个著名的代表 [Platt, 1998]。

  SMO的基本思路是先固定αi之外的所有参数,然后求αi上的极值。由于存在约束∑mi=1αiyi=0,若固定αi之外的其他变量,则αi可由其他变量导出。于是,SMO每次选择两个变量αi和αj,并固定其他参数。这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:

选取一对需更新的变量αi和αj;

固定αi和αj以外的参数,求解式(11)获得更新后的αi和αj。

  注意到只需选取的αi和αj中有一个不满足KKT条件(13),目标函数就会在迭代后增大 [Osuna et al., 1997]。直观来看,KKT条件违背的程度越大,则变量更新后可能导致的目标函数值增幅越大。于是,SMO先选取违背KKT条件程度最大的变量。第二个变量应选择一个使目标函数值增长最快的变量,但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对他们进行更新会带给目标函数值更大的变化。

  SMO算法之所以高效,恰由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。具体来说,仅考虑αi和αj时,式(11)中的约束可重写为:

αiyi+αjyj=c, αi≥0, αj≥0 (14)其中

c=−∑k≠i,jαkyk (15)是使∑mi=1αiyi=0成立的常数。用

αiyi+αjyj=c (16)消去式(11)中的变量αj,则得到一个关于αi的单变量二次规划问题,仅有的约束是αi≥0。不难发现,这样的二次规划问题具有闭式解,于是不必调用数值优化算法即可高效地计算出更新后的αi和αj。

  如何确定偏移项b呢?注意到对任意支持向量(xs,ys)都有ysf(xs)=1,即

ys(∑i∈SαiyixTixs+b)=1 (17)其中,S={i|αi>0,i=1,2...,m}为所有支持向量的下标集。理论上,可选取任意支持向量并通过求解式(17)获得b,但现实任务中常采用一种更为鲁棒的做法:使用所有支持向量求解的均值:

b=1|S|∑s∈S(ys−∑i∈SαiyixTixs) (18)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: