当前位置:文档之家› SVM算法分析与研究

SVM算法分析与研究

(3b).设d;:Yi,从序列的底部依次往前选取q/2个元素,要求入选的元素满足0<口。<C或者(3b). 不满足以上条件的元素对应的di设为0.
以上是Decomposition算法的介绍,而SMO算法事实上是Decomposition算法的变种.它的特点是 B f:2,即每次只选两个元素,则新的口r、a笋”可解析求得,避免计算核矩阵Q.
2005年9月 第4卷第3期
渝西学院学报(自然科学版)。 Journal of Western Chongqing University(Nature Sciences Edition)
Sep.,2005 V01.4 No.3
SVM算法分析与研究
王晓云
(涪陵师范学院 计算机科学系,重庆涪陵408003)
27丁1 c口r,c a’,7,(一善一孑)(:+)+c eer+彳r,£er一。7,(:+)suⅥect t。
y7f a。)=o,0≤Or"t,口?≤c,£:”一,f.
(6)
第二类包括口一SVC、口一SVR两种学习机,它们的统一表示方式为:
min百1 t7/"∞+p7口,
0≤a。≤C,t=1,…,Z.
上述事实迫使人们寻找提高算法运行速度及降低存储需求的新方法.目前最著名也最常被使用 的算法是分解算法(decomposition)和序列最小最优化方法(SMO).这两种算法都利用了支持向量机的 良好特性:解的稀疏性和最优化问题的凸性.
1分解算法简介 训练SVM的本质是解决一个二次规划问题:
min{口7伽一er口,
min喜口7啦+P7a,
0≤a。≤C,t=1,…,Z.
(4)
),Ta=A.
由于£一SVR的对偶问题为:
mi,专(d~a‘)7Q(口一a”)+£∑(口+口+)+∑盈(a—n+)subject to
∑(口。一&?)=o,0≤ai,a?≤C,i=1,…,z.
(பைடு நூலகம்)
为了和(4)式相对应,LIBSVM将其改造为:
(5)如果i:(i:)是Y。Vf(云):降序序列里从top(bottom)部选取的第一个元素,则),‘V,(a)i,= Y。.V,(五)。
(6)vf(a)71d=0. 这个证明目前存在的缺陷是在第(3)步的证明过程中应用到了一个假设:矩阵Q满足 min(min(eig(QⅡ)))>0,rain(eig(.))是矩阵的最小特征值,,是{1,…,f}的任意子集,并且l,l≤q.
[参考文献]
[1]Keerthi S and Gilbert E G.Convergence of 8 generalized SMO algorithm for SVM classifier design【J J,Machine Learning,
2002,46:351—360.
[2]Keenhi S S,Shevade S K,Bhattacharyya C and Murthy K R K.Improvements to Platt’s SMO algorithm fi)r SVM classifier design[J].Neural Computation,2001,13:637—649.
3.1 算法总体方案 LIBSVM库b 3总体采用Decomposition算法.当算法2选取工作集B后,它采用SMO方法解决关于 d。的二次式. 3.2 问题的统一表示 LIBSVM根据5种学习机相应的对偶问题及其约束条件的差异将其分为两大类,每一大类采用统 一的问题表示方式.第一类包括C—SVC、One Class—SVC和e—SVR.这3种学习机的对偶问题及其 约束条件统一表示为:
4展望 Decomposition和SMO算法与Newton—PCG等相比,在算法效率和所能处理的样本数量上有了很大 提高,但仍然不能处理大规模数据.目前,用SVM进行大数据挖掘普遍采用的方法是先对数据进行聚 类,用聚类中心代表其它样本进行训练,获得先验知识;然后判断各样本点距离超平面的距离.距离 低于一定域值的样本点直接参与下一次训练,距离高于一定域值的样本点则由其所属类的质心代表 参与训练,迭代进行训练直至满足某一条件为止.但是,这种方法只适用于线性可分的样本,如果样 本通过核函数映射到高维空间的话,由于聚类这个函数不是同构的,这种办法就行不通了.这些问题 还有待于我们解决.
2 算法收敛性分析 关于这两个算法收敛性的证明引起了很多学者的兴趣,他们做了很多有益的工作.但到目前为 止,这两个算法的收敛性还没有被完全证明. 总体证明思路:[1’31 (1)通过算法2所获得的d是(3)式的最优解. (2)根据Zoutendijk方法的属性可知:口是(1)式的最优解的充要条件是口也是(3)式的最优解,并 且(3)式在口处的值为零(后续所有证明步骤都围绕这个目标进行). (3).厂(a“1)是关于ff口“1一口。If 2的减函数. (4)lim dk+l:占,k∈K.
[3]un c J.On the convergence of the decomposition method for suppofl vector machines.IEEE Transactions on Neural Networks,12(6):1288—1298.
[4]Platt J C.Fast training of support vector machines using sequential minimal optimization.In B,Sch“olkopf,C.J.C.Burges, and A.J.Smola,editors,Advances in Kernel Methods—Support Vector Learning,Cambridge,MA,1998.MIT Press.
支持向量机(Support Vector Machine)是在统计学习理论基础之上发展起来的一种全新的机器学习 算法。SVM基于统计学习理论的结构风险最小化原则,它将最大化分类间隔的思想和基于核的方法结 合在一起,表现出很好的泛化能力.由于SVM方法有统计学习理论作为其坚实的数学基础,并且可以 很好地克服“维数灾难”和“过拟合”等传统算法所不可规避的问题,所以受到了越来越多的研究人员 的关注.近年来,关于SVM方法的研究,包括算法本身的改进和算法的实际应用,都被陆续提了出来. 但是,支持向量机训练的复杂度高度依赖于训练数据的大小.不仅训练时间与数据的平方成正比,而 且训练算法需要存储与训练集对应的核矩阵,当样本点数f成千计时,所需内存相当大.
万方数据
则将其移出工作集,加快算法运行速度.这一思路来自于对算法收敛性的证明:当算法趋于收敛时,取 边界值的口i保持不变,并且排列在Y。v.厂(口“)i序列的正确位置.
3.5 Cache方法 LIBSVM采用最近最常使用的方法来Cache Qi的值.系统根据用户设定的域值在内存中建立一个 链表,每个最新算出的Q。值插入链表的尾部.算法需要某个Qi值时就查询链表,如果链表不存在此 Qi,值就立刻计算并插入链表的尾部.如果此时所分配内存区域已满则删除链表头部的Q“.采用此种
(30)
di≥0,if(Ol‘);=0,d。≤0,if(OtK);=C.
(3b)
I{di di≠0}I≤q.
(3 c)
八口)=喜,JQa—eo,nK为第K次迭代时口的值.v“口‘)为第K次迭代时V厂(口)的梯度.工作集
的选取算法如下(算法2): (1)降序排列Yi vf(a‘)i. (2)设di:一Y。,从序列的顶部依次往后选取q/2个元素,要求入选的元素满足0<a。<C或者
[5]Chih—Chung Chang and Chih—Jen Lin,LIBSVM:a library for support vector machines[J].2001. [6]VladimirN.Vapnik统计学习理论的本质[M].北京:清华大学出版社,2000.
(这个假设目前还没有被去掉). 有关算法收敛性的证明揭示了训练过程中a的变化轨迹及算法收敛时各元素在Yi v厂(a2)i序列
的位置及其变化情况.这些信息对算法的改进,如工作集的选取与缩减,停机条件的设定具有重要的 指导意义.
3 LIBSVM库分析
万方数据
LIBSVM是台湾大学c.J Lin等人开发的一套支持向量机算法库.这个小组是算法收敛性证明的 主力军,他们利用收敛性证明的成果来改进算法,取得了非常好的结果.许多国际著名研究机构都采 用LIBSVM作为它们的训练算法.本节笔者对LIBSVM的核心学习引擎代码进行了分析,揭示了它的高 效所在.本分析是基于LIBSVM2.71(released on November 20,2004).LIBSVM共实现5种类型的SVM 机:C—SVC,移一SVC,One Class—SVC,£一SVR,移一SVR.
(1)给定工作集中元素个数l B I:q≤z(g为偶数)及精度要求e,取初始点口1:f%I,令k: 、口Ⅳ, 1.
(2)如果a‘是问题的最优解,则停止.否则,重新寻找工作集B C{1,…,f},I B I=q,定义N= {1,…,z}/B,定义口;、a:为向量口5的子向量,它们分别对应B和Ⅳ.
(3)求解关于d。的二次式:
1 3· 3.4
工作集缩减
LIBSVM采用算法2进行工作集选取时q的取值足够大,即取到两个序列相遇或只隔一个元素为
止.当工作集选定以后,在此工作集内采用SMO算法进行迭代解决关于d。的二次式.LIBSVM设定一
个域值min(f,1 000).当迭代次数到达此域值时,就对取边界值的口.进行判断.如果其满足KKT条件,
方法避免了存储整个核矩阵给系统造成的负担. 3.6 参数搜索网格 LIBSVM提供了寻找参数C和y最佳值的方法(仅适用于径向基函数).它定义C=21,2。25,…,
25.),:2一,2“75,…,2~.用这些数值组成二维网格,每次采用一对网格顶点的值进行交叉测试直至 所有顶点都测试完毕.最后从中选出交叉测试准确率最高者所对应的(C,y)值对.
相关主题