一种改进序贯最小优化算法的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种改进序贯最小优化算法的方法
作者:项堃喻莹
来源:《现代电子技术》2013年第08期
摘要:序贯最小优化算法(SMO)是支持向量机(SVM)训练算法中一种十分有效的改进方法,但针对大规模样本数据时,SMO训练速度仍比较慢。

为了提高训练速度,在基本保持训练精度的前提下,提出了一种改进优化策略:即跳过部分与精度无关的向量集、提前结束循环、松弛KKT条件以便收缩工作集。

经过几个著名的数据集的试验结果表明,此策略可以大幅缩短SMO的训练时间,并且精度没有明显变化。

关键词:支持向量机;序贯最小优化算法;去除无关向量;收缩工作集
中图分类号: TN911⁃34; TP312 文献标识码: A 文章编号: 1004⁃373X(2013)
08⁃0017⁃03
0 引言
支持向量机(Support Vector Machine,SVM)[1]是1995年由 Cortes和Vapnik首先提出的一种新的分类回归方法。

它是建立在统计机器学习的VC维理论和结构风险最小化的理论基础之上。

在模式识别、数据挖掘、分类、回归等问题领域都表现出许多特有的优势,因而获得了良好的应用。

给定输入空间的l个训练样本[(xi,yi),i=1,2,…,][l,xi∈Rd,yi∈{-1,1}], SVM 的实质是寻找最优分类超平面。

将寻找的过程转化为求解一个二次规划问题[2],式子最终变为:
[min: f(α)=12αTQα-eTαs.t yTαi=0,0≤αi≤C, i=1,2,…,l]
式中:[e]为全1向量;C为一个重要的参数,从本质上说是平衡经验风险和置信风险的,C越大置信风险越大,经验风险越小,并且所有的[α]都限制在边长为C的正方形范围内;[Q]为l×l的Hessian半正定矩阵,[Qij=][yiyjK(xi,xj)],而[K(xi,xj)]为核函数。

经典的二次规划算法无法处理数据集过大的问题。

因此,[Q]阵的存储和计算成为训练SVM急需解决的问题。

早期研究中,Vapnik提出了Chunking算法;Osuna等人提出了工作集固定的分解算法;Joachim将Zoutendijk的可行方向法、Shrinking法、Kernel Cache技术相结合实现了SVMLight 软件;Platt的SMO算法[3]将工作集固定为最小规模,从而可以获得解析解;Keerthi提出了SMO的改进算法GSMO;孙剑等人运用缓存机制,减少对BSV核函数的计算来缩减训练时间[4];李建民等人提出了考虑目标函数下降量和计算代价,提高缓存效率的收益代价平衡的工作集选择算法[5];张浩然等人提出的策略使得所选取的优化变量能够使目标函数的下降最
多,优化步长更大[6]。

近些年来,改进和优化主要涉及到让更多的样本同时得到优化[7]、增加步长加速收敛速度[8]、综合考虑迭代次数和缓存效率[9]、考虑非正定核的运用[10]、运用聚类的方法等的方面,并且都取得了一些成效。

本文在分析SMO算法的基础上,针对分类向量集过于庞大、算法后期工作集的选取策略、停机条件的设置等方面的问题进行了适当的改进。

通过对著名数据集的对比实验,发现此项改进在缩短测试时间的基础上,算法的精度没有很大的变化,仍能达到满意的效果。

1 标准SMO算法
SMO是将大的QP问题分解成最小规模的QP问题,算法在固定其他参数的条件下,每次仅选择两个Lagrange乘子[α1,α2]进行更新,由于Lagrange乘子的线性约束条件,所以可以解析出这两个乘子所满足条件的最优值,不断的优化所有的乘子,最终能够解决这个二次规划问题。

具体做法是首先遍历非边界样本选择一个违反KKT条件的样本[α1],寻找非边界样本[α2],如果没有非边界样本可以调整,就遍历所有样本;其次是寻找违反KKT条件的边界样本[α1],寻找非边界样本[α2],如果没有可以优化的样本就遍历所有样本。

寻找的依据是使[E1-E2η]([Ei]为第i个样本的输出错误)取得最大值。

SMO算法在选择两个乘子配对优化时,耗时主要是花费在优化选择和迭代次数上。

SMO 除了在处理线性SVM和具有稀疏二进制的数据时训练速度较快之外,对一般数据是非常慢的。

2 改进SMO的策略
一方面,对于凸优化问题,在实现时需要适当的停止条件来结束优化过程,停止条件可以是:
(1)目标函数[W(α)]的增长率,即[W(αt+1)-W(α)W(α)]小于某个容忍值就可以停止,这个条件是最简单的;
(2)原问题的KKT条件,对于凸优化来说它是收敛的充要条件,由于KKT条件本身是比较苛刻的,所以也可以设定一个容忍值,即所有样本在容忍值范围内满足KKT条件则认为训练可以停止;
(3)可行间隙,即原目标函数值[O(w,b)]和对偶目标函数值[W(α)]的间隙,凸二次优化问题的间隙是零。

当[O(w,b)-W(α)O(w,b)]小于某个容忍值就可以停止。

恰当的停止条件可以使得算法提早结束训练,从而节省训练的时间。

其实,从本质上来说可以推广到寻找经验风险和置信风险之间的平衡。

另一方面,对于算法所依赖的物理条件而言,优化可以从以下方面:
(1)缓存的恰当运用,能用缓存的地方尽量用缓存,这样可以减少重复计算的次数,提高运行效率,但会增加算法的空间复杂度。

(2)关注可以并行计算的地方,将其分成若干部分并行计算,从部分最优寻找到全局最优。

2.1 跳过部分非支持向量
在优化过程中,考虑到只有部分样本会成为支持向量,可以将明显不是支持向量的样本跳过来删减大规模训练集,从而减少样本训练的时间,提高训练效率。

但修剪的精度不容易掌握,对于边界支持向量较多时,可能修剪的过于粗糙,对于较少时,可能误删了部分支持向量。

因此可以计算样本x到分类超平面H的距离d,若[d≤ξ],则保留此样本,否则就跳过。

[ξ]是一个可以调节的量,用它来控制删减的力度。

具体到算法中:
(1)当样本的Lagrange乘子两次小于[ξ]时,下次循环选择乘子优化跳过此样本而选择其他样本进行优化;
(2)当样本的Lagrange乘子两次趋近于[C-ξ]时,下次循环选择乘子优化跳过此样本而选择其他样本进行优化。

也就是说最优分类面大致确定下来后,由Lagrange乘子的大小直接判断是否跳过该样
本。

这样操作简便易行,它跳过了已经是正确分类的样本和分内面之间的样本,这样大幅度的消减对分类没有太大影响的待训练的样本个数,从而提高训练速度。

2.2 提前结束无意义的循环
在SMO算法中,程序经过两层循环不断的寻找可以优化配对的一些Lagrange乘子。

从开始的大量需要优化Lagrange乘子迅速下降到只有很少部分的Lagrange乘子能配对优化。

在少部分能配对成功的乘子中,由于程序的选取机制不变,导致内外层循环在这几对乘子之间来回优化,这无疑增加了循环次数,耗费了训练时间。

因此,在保证分类精度的前提下,可以松弛这个条件,提前结束循环以免浪费寻优时间。

虽然并没有找出全部不满足KKT条件的乘子以优化所有的样本,但改进的算法在后期寻优策略上与快速找出最优分类面目标是一致的。

具体的方法是在程序的训练过程中,置数据改变量numChanged一个阈值,当算法小于这个值时,就可以提前结束循环,节省配对优化的时间。

在实验中发现,这样的策略对于训练的精度并没有减少太多,但训练的速度却有着很大提高。

2.3 收缩工作集
基于松弛KKT条件的思想,发现在SMO算法中,由于每次计算一对Lagrange乘子必然要涉及到w值的变化,w值的变化反应到分类图中是最优分类面的微调。

如果当w的值在变化小于一个阈值时,松弛不满足KKT条件的[α],使得很少一部分违反KKT条件的数据样本在下次选择优化时,被判为无需优化的样本,从而跳过训练的过程,这样就可以加快训练速度,节省训练时间。

其实这些数据样本对于寻找最优分类面是没有太大进展的,它们所对应的向量是在最优分类面附近的样本向量。

具体做法是在程序中,当[Δw]小于某个阈值时,扩大源程序中tol变量的值,将tol的值乘以一个很小的倍数来收缩工作集,收缩部分需优化的Lagrange乘子[α],这样处理后使得有部分的乘子在下次选择优化时被跳过,从而节省优化时间。

实验结果表明,在处理数据时,算法也能快速定位分类面,且分类精度没有显著的变化,特别是数据集大的数据,效果很好。

3 实验结果和分析
在SMO源程序(VC++ 6.0)的基础上进行修改,并选取了UCI两个数据集Segment集和Satellite集进行测试,实验的CPU为i3⁃380处理器,内存为2 GB。

选用的核函数为RBF径向基函数,Segment集有2 200个训练样本和110个测试样本,类别有7类,[σ]调为10,C调为1.0。

Satellite集有4 435个训练样本和2 000个测试样本,类别有6类,[σ]调为15,C调为1。

实验中采用了标准SMO,去掉向量的SMO(RV⁃SMO),改变numchanged的SMO (CN⁃SMO)阈值取3,收缩工作集的SMO(SW⁃SMO)。

分别进行训练和测试。

如表1所示。

表1 实验结果比较
从表中可以清楚的发现,文章中提出的策略相比标准SMO的用时有很大的缩减,且运行的精度并没用衰减多少,对于规模较大的数据集更是明显。

可见对于跳过部分向量、结束不必要的循环、松弛KKT条件的思路是可行的,能缩小搜索空间,提高SMO的性能。

4 总结与展望
针对标准SMO算法处理大规模数据集的耗时过长的问题,运用删减部分支持向量,提前结束循环、松弛KKT条件的策略。

该策略能有效的使得SMO的训练时间大幅减少,并且SMO 的测试精度没有很大变化,特别是处理大规模数据集时,该策略十分有效。

接下来的工作将把该策略和其他的算法相结合,借鉴其他算法的思想进一步优化SMO算法和扩大该策略运用的范围,运用到其他算法中解决实际问题。

参考文献
[1] VAPNIK V N. Statistical learning theory [M].New York:John Wiley& Sons, 1998.
[2] VAPNIK V N. The nature of statistical learning theory [M]. New York: Springer Verlag,1995.
[3] OSUNA E, FREUND R, GIROSI F. An improved training algorithm for support vector machines [C]// IEEE Workshop on Neural Networks and Signal Processing. Amelia Island: IEEE Press, 1997: 276⁃285.
[4] 孙剑,郑南宁,张志华.一种训练支持向量机的改进序贯最小优化算法[J].软件学报,2002,13(10):2007⁃2012.
[5] 李建民,张钹,林福宗.序贯最小优化的改进算法[J].软件学报,2003,14(5):
918⁃924.
[6] 张浩然,韩正之.回归支持向量机的改进序列最小优化算法[J].软件学报,2003,14(12):2006⁃2013.
[7] 业林,孙瑞祥,董逸生.多拉格朗日乘子协同优化的SVM快速学习算法研究[J].计算机研究与发展,2006,43(3):442⁃448.
[8] 姚全珠,田元,王季,等.基于自适应步长的支持向量机快速训练算法[J].计算机应用研究,2008,25(6):1679⁃1681.
[9] 曾志强,吴群,廖备水,等.改进工作集选择策略的序贯最小优化算法[J].计算机研究与发展,2009,46(11):1925⁃1933.
[10] 周晓剑,马义中,朱嘉钢.SMO算法的简化及其在非正定核条件下的应用[J].计算机研究与发展,2010,47(11):1962⁃1969.。

相关文档
最新文档