5.5支持向量机支持向量机支持向量机(SupportVectorMachines,SVM)源于Vapnik和Chervonenkis的统计学习理论的早期工作第一篇论文是Boser,Guyon和Vapnik[BGV92]的文章优点对复杂的非线性边界的建模能力与其它模型相比,它们不太容易过分拟合支持向量机还提供了学习模型的紧凑表示广泛的使用范围SVM可以用来预测和分类它们已经用在许多领域,包括手写数字识别、对象识别、演说人识别,以及基准时间序列预测检验支持向量机两个线性可分的类找到这样一个超平面,使得所有的方块位于这个超平面的一侧,而所有的圆圈位于它的另一侧可能存在无穷多个那样的超平面“最大边缘”原理:即追求分类器的泛化能力最大化。即希望所找到的决策边界,在满足将两类数据点正确的分开的前提下,对应的分类器边缘最大。这样可以使得新的测试数据被错分的几率尽可能小。◇如下图所示的情况(b)就比情况(a)与(c)的泛化能力强,其原因在于其分界面与两类样本中的最近邻的样本的距离最大.Class1Class2Class1Class2Class1Class2(a)(b)(c)决策边界的边缘denotes+1denotes-1直观而言,如何分类这些样本?即给出一个决策超平面更多的例子:要考虑以下因素:◆经验风险最小(已知的样本错分最少)◆泛化能力最大(可能出现的新样本错分最少)决策边界的边缘denotes+1denotes-1更多的例子:决策边界的边缘denotes+1denotes-1更多的例子:决策边界的边缘denotes+1denotes-1更多的例子:决策边界的边缘denotes+1denotes-1所有的决策超平面都是可行的。但是应该选择哪一个为最优决策超平面呢?更多的例子:决策边界的边缘ClassifierMargindenotes+1denotes-1Definethemarginofalinearclassifierasthewidththattheboundarycouldbeincreasedbybeforehittingadatapoint.更多的例子:决策边界的边缘MaximumMargindenotes+1denotes-1Themaximummarginlinearclassifieristhelinearclassifierwiththe,um,maximummargin.ThisisthesimplestkindofSVM(CalledanLSVM)LinearSVM更多的例子:决策边界的边缘denotes+1denotes-1Themaximummarginlinearclassifieristhelinearclassifierwiththemaximummargin.ThisisthesimplestkindofSVM(CalledanLSVM)SupportVectorsLinearSVM更多的例子:决策边界的边缘SVM的决策边界和边缘一个线性分类器的决策边界可以写成如下形式:wx+b=0其中,w和b是模型的参数B1b11b120bxw1bxw1bxw边缘方块的类标号为+1,圆圈的类标号为1z的类标号y调整决策边界的参数w和b,两个平行的超平面bi1和bi2可以表示如下bi1:wx+b=1bi2:wx+b=1可以证明,边缘d0bif10bif1zwzwy||||2wd边缘推导w的方向垂直于决策边界如果xa和xb是任意两个位于决策边界上的点,则wxa+b=0,wxb+b=0于是w(xbxa)=0.由于xbxa是决策超平面中任意向量,于是w的方向必然垂直于决策边界令x1是bi1上的数据点,x2是bi2上的数据点.代入bi1和bi2相减得到w(x1x2)=2由令u=w,v=x1x2,得到||w||||x1x2||cos(w,x1x2)=2),cos(||||||||||||||||),cos(vuvuvuvuvuvu即边缘推导(续)||w||||x1x2||cos(w,x1x2)=2同时||x1x2||cos(w,x1x2)=d于是||w||d=2,即2||||dwSVMSVM的训练阶段从训练数据中估计决策边界的参数w和b最大化边缘d,并满足wxi+b≥1如果yi=1wxi+b≤1如果yi=1即yi(wxi+b)≥1最大化d等价于最小化这是一个凸二次优化问题,可以通过标准的拉格朗日乘子(Lagrangemultiplier)方法求解Nibyii,...,2,1,1)(||||21min2wxw约束条件SVM(续)拉格朗日算子其中,参数i称为拉格朗日乘子对Lp关于w和b求偏导,并令它们等于零因为拉格朗日乘子i是未知的,因此仍然不能得到w和b的解211||||()12NpiiiiLybwwx11000NpiiiiNpiiibLyLywxw(5-38)(5-39)(5-40)SVM(续)使用Karuch-Kuhn-Tucher(KKT)条件:i≥0i[yi(wxi+b)1]=0(5.42)除非训练实例满足方程yi(wxi+b)=1,否则拉格朗日乘子i必须为零i0的训练实例位于超平面bi1或bi2上,称为支持向量(5.39)和(5.40)代入到公式(5.38)中这是Lp的对偶问题(最大化问题).可以使用数值计算技术,如二次规划来求解1,12NDiijijiijLyyijxx(5-43)SVM(续)解出i后,用(5.39)求w,再用(5.42)求b决策边界为z可以按以下的公式来分类如果f(z)=1,则检验实例z被分为到正类,否则分到负类10Niiiiybxx1()()()Niiiifsignbsignybzwzxz对于许多实际问题,前面讨论的最优决策超平面的条件过于严格。◇对存在数据污染、近似线性分类的情况,可能并不存在一个最优的线性决策超平面◇存在噪声数据时,为保证所有训练数据的准确分类,可能会导致过拟合nibxwyxgyiTiii,...,2,11)()(不可分情况:软边缘(softmargin)SVMClass1Class2分类面不可分情况:软边缘(softmargin)SVMClass1Class2分类面不可分情况:软边缘(softmargin)SVM因此,需要允许有一定范围内的“错分”,又有较大分界区域的最优分类面软边缘(softmargin)SVM通过引入松弛变量、惩罚因子,在一定程度上允许错误分类样本,以增大间隔距离。在分类准确性与泛化能力上寻求一个平衡点不可分情况:软边缘(softmargin)SVM引入松驰变量i其中C和k是用户指定的参数,对误分训练实例加罚取k=1,C根据模型在确认集上的性能选择NibyCiiikNii,...,2,1,1)()(||||21min12wxw约束条件拉格朗日算子其中,前面两项是需要最小化的目标函数,第三项表示与松弛变量相关的不等式约束,而最后一项是要求i的值非负的结果KKT条件i≥0,i≥0,i≥0i{yi(wxi+b)1+i}=0ii=021111||||{()1}2NNNiiiiiiiiiLCybiwwx不可分情况:软边缘(softmargin)SVM其中,C为惩罚因子,C越大,表示分类越严格,允许错分的样本受到的限制越大,错分的样本数少,越容易产生过拟合。虚线与实线为C=1和104所解得的决策超平面不可分情况:软边缘(softmargin)SVM软边缘(softmargin)SVM的基本工作原理:对存在数据污染、近似线性分类的情况,可能并不存在一个最优的线性决策超平面;当存在噪声数据时,为保证所有训练数据的准确分类,可能会导致过拟合。因此,需要允许有一定程度“错分”,又有较大分界区域的最优决策超平面,即软间隔支持向量机。软间隔支持向量机通过引入松弛变量、惩罚因子,在一定程度上允许错误分类样本,以增大间隔距离。在分类准确性与泛化能力上寻求一个平衡点。不可分情况:软边缘(softmargin)SVM非线性SVM使用非线性变换例:)1,2,2,2,,(),(:2121222121xxxxxxxx样本非线性可分,将其映射到高维空间,可使样本线性可分非线性SVM:从低维空间到高维空间的映射0x2x0x样本非线性可分,将其映射到高维空间,可使样本线性可分Φ:x→φ(x)非线性SVM:从低维空间到高维空间的映射因此对非线性问题,可以把样本x映射到某个高维特征空间H,并在H中使用线性分类器.非线性SVM非线性SVM的优化问题约束条件:yi(w(xi)+b)≥1,i=1,2,...,N对偶拉格朗日问题参数w和b2||||min2ww=1,1()()2nDiijijijiijLyyxx(){()())1}0iiiiiijjjijyyybwxxx非线性支持向量机的基本工作原理对非线性可分的问题,可以利用核变换,把原样本映射到某个高维特征空间,使得原本在低维特征空间中非线性可分的样本,在新的高维特征空间中变得线性可分,并使用线性支持向量机进行分类。非线性SVM核技术Mercer定理:核函数K可以表示为K(u,v)=(u)(v),当且仅当对于任意满足g(x)2dx为有限值的函数g(x),则K(x,y)g(x)g(y)dxdy≥0满足定理5.1的核函数称为正定(positivedefinite)核函数常用核函数(,)(+1)pKxyxy22/(2)(,)Kexyxy(,)tanh()KkxyxySVM的特点SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值SVM通过最大化决策边界的边缘来控制模型的能力需要提供其他参数,如使用的核函数类型、为了引入松弛变量所需的代价函数C等分类属性处理每个分类属性值引入一个哑变量,转化为二元变量例如,如果婚姻状况有3个值{单身,已婚,离异},可以对每一个属性值引入一个二元变量可以推广到多类问题多类问题SVM是对二类问题设计的还有一些方法也是针对二类问题的如何处理多类问题?训练令Y={y1,y2,...,yK}是类标号的集合1-r方法:分解成K个二类问题每一个类yiY创建一个二类问题,其中所有属于yi的样本都被看作正类,而其他样本作为负类1-1方法:构建K(K1)/2个二类分类器每一个分类器用来区分一对类(yi,yj)为类(yi,yj)构建二类分类器时,不属于yi或yj的样本被忽略掉常用的SVM程序LIBSVM:~cjlin/mySVMSVM-Light……matlab的SVM函数使用1、数据预处理2、数据载入、归一化3、训练SVM分类器(svmtrain)4、分类可选的步骤:交叉检验,选择最优的核函数和参数svmtrain和svmclassify函数Svmtrain:Trainsupportvectormachineclassifier(训练SVM分类器)语法及调用参数:SVMStruct=svmtrain(Training,Group)SVMStruct=svmtrain(...,'Kernel_Function',Kernel_FunctionValue,...)