您好, 访客   登录/注册

支持向量机算法

来源:用户上传      作者:

  [摘要] 本文介绍统计学习理论中最年轻的分支――支持向量机的算法,主要有:以SVM-light为代表的块算法、分解算法和在线训练法,比较了各自的优缺点,并介绍了其它几种算法及多类分类算法。
  [关键词] 块算法 分解算法 在线训练法
  
  Colin Campbell对SVM的训练算法作了一个综述,主要介绍了以SVM为代表的分解算法、Platt的SMO和Kerrthi的近邻算法,但没有详细介绍各算法的特点,并且没有包括算法的最新进展。以下对各种算法的特点进行详细介绍,并介绍几种新的SVM算法,如张学工的CSVM,Scholkopf的v-SVM分类器,J. A. K. Suykens 提出的最小二乘法支持向量机LSSVM, Mint-H suan Yang提出的训练支持向量机的几何方法,SOR以及多类时的SVM算法。
  块算法最早是由Boser等人提出来的,它的出发点是:删除矩阵中对应于Lagrange乘数为零的行和列不会对最终结果产生影响。对于给定的训练样本集,如果其中的支持向量是已知的,寻优算法就可以排除非支持向量,只需对支持向量计算权值(即Lagrange乘数)即可。但是,在训练过程结束以前支持向量是未知的,因此,块算法的目标就是通过某种迭代逐步排除非支持向时。具体的做法是,在算法的每一步中块算法解决一个包含下列样本的二次规划子问题:即上一步中剩下的具有非零Lagrange乘数的样本,以及M个不满足Kohn-Tucker条件的最差的样本;如果在某一步中,不满足Kohn-Tucker条件的样本数不足M个,则这些样本全部加入到新的二次规划问题中。每个二次规划子问题都采用上一个二次规划子问题的结果作为初始值。在最后一步时,所有非零Lagrange乘数都被找到,因此,最后一步解决了初始的大型二次规划问题。块算法将矩阵的规模从训练样本数的平方减少到具有非零Lagrange乘数的样本数的平方,大减少了训练过程对存储的要求,对于一般的问题这种算法可以满足对训练速度的要求。对于训练样本数很大或支持向量数很大的问题,块算法仍然无法将矩阵放入内存中。
  Osuna针对SVM训练速度慢及时间空间复杂度大的问题,提出了分解算法,并将之应用于人脸检测中,主要思想是将训练样本分为工作集B的非工作集N,B中的样本数为q个,q远小于总样本个数,每次只针对工作集B中的q个样本训练,而固定N中的训练样本,算法的要点有三:1)应用有约束条件下二次规划极值点存大的最优条件KTT条件,推出本问题的约束条件,这也是终止条件。2)工作集中训练样本的选择算法,应能保证分解算法能快速收敛,且计算费用最少。3)分解算法收敛的理论证明,Osuna等证明了一个定理:如果存在不满足Kohn-Tucker条件的样本,那么在把它加入到上一个子问题的集合中后,重新优化这个子问题,则可行点(Feasible Point)依然满足约束条件,且性能严格地改进。因此,如果每一步至少加入一个不满足Kohn-Tucker条件的样本,一系列铁二次子问题可保证最后单调收敛。Chang,C.-C.证明Osuna的证明不严密,并详尽地分析了分解算法的收敛过程及速度,该算法的关键在于选择一种最优的工作集选择算法,Osuna的工作集的选择算法也并不是最优的,但是Osuna的这一工作应该说是开创性的,并为后来的研究奠定了基础。
  在分解算法基础上,微软研究院的John C. Platt 等人提出并且改进了SMO(SequentialMinimal Optimization)算法。这种算法将工作样本集的规模减到了最小――两个样本。之所以需要两个样本是因为等式线性约束的存大使得同时至少有两个变量,而且应用等式约束可以将其中一个变量用另一个变量线性表示出来,所以迭代过程中每一步的子问题的最优解可以直接用解析的方法求出来,无需使用数值分析中的二次规划软件包,提高了子问题的运算速度;此外Platt还设计了一个两层嵌循环分别选择进入工作样本集的两个样本,外层循环选择第一个样本,内层循环选择第二个样本。外层循环首先在整个样本空间循环一遍,决定哪些样本违反了Kohn-Tucker条件。如果找到了不满足Kohn-Tucker条件的样本,它即被选作进入工作集的第一个样本。然后根据第二个启发式规则选择第二个样本。最后用解析的方法快速对选定的样本进行优化。为了加快算法的运行速度,外层循环不总是每次检查所有训练样本。每次在所有样本上循环一遍以后,外层循环只在Lagrange乘数大于零和小于C的样本上进行循环,直到所有Lagrange乘数大于零和小于C的样本都满足了最优化所应该满足的Kohn-Tucker条件,然后再在整个样本空间循环一遍。这样,外层循环是交替地在整个样本空间和Lagrange乘数大于零且小于C的样本上循环。内层循环选择第二个进入工作集的样本,选择的原则是使目标函数靠近最优点的速度达到最快。这种启发式的样本选择策略大大加快了算法的收敛速度。标准样本集的实验结果证明,SMO表现出在速度方面的良好性能。
  SMO方法可以看作是分解算法的一个特例,它将子问题了规模减少到了最小。子问题的规模和迭代的次数是一对矛盾,SMO将工作样本集的规模减少到两个样本,一个直接的后果就是迭代次数的增加。所以SMO实际上是将求解子问题的耗费转嫁到迭代上,然后在迭代上寻求快速算法。
  Chih-Wei Hsu 和Chih-Jen Lin综合S. S .Keerthi中的修改过的SMO和SVM light中的工作集进行选择算法,用C++实现一个库LBSVM,可以说是使用最方便的SVM训练工具LBSVM供用户选择的参数少,用训练特大训练集时,还是使用灵活的SVM或SMO。第二类是序贯分类法,基本思想是考虑训练样本序贯加入,同时考虑其对支持向量有何影响,基于感知机中的Adatrom算法,对Lagrange系数和支持向量机中特点是训练样本序贯进入,Lagrang系数的改变采用梯度法。
  第三类是在线训练,即支持向量机的训练是在训练样本单个输入的情况下训练,和序贯分类法的区别是训练样本的总的个数是未知的,最典型的应用是系统的在线辨识,其中提出了SVM增量训练,但只是近似的增量,即每次只选一小批常规二次规划算法能处理的训练样本,然后只保留支持向量,抛弃非支持变量,和新进的样本混合进行训练,直到训练样本用完,经实验表明误差可以接受,提出了在线训练的精确解,即增加一个训练样本或减少一个样本对Lagrange系数和支持向量机的影响,实验表明算法是有效的,特别是减少一个样本时,对模型选择算法LOO(Leave one out)的形象解释,缺点是当样本无限增多时,还是必须抛弃一些样本,使其能够实用。
  此外还有许多其它算法,如:张学工提出了CSVM算法,将每类训练样本集进行聚类分成若干子集,用子集中心组成新的训练样本集训练SVM,将子集中心的系数赋给子集中每个样本,考察每个子集的每个样本的系数的改变对目标函数的影响,若一个子集所有样本对目标函数的影响都一样(改良与否)不同,则进一步划分,只到没有新的拆分为止,优点是提高了算法速度,同时减少训练数据中的数值对分类结果的影响,缺点是牺牲了解的稀疏性。S. S .Keerthi等提出了修改了的算法――NPA最近点算法,其基本思想是将SVM原问题的惩罚由线性累加改为二次累加,从而使优化问题转化为两个凸集间的最大间隔,缺点是只能用于分类问题,不适用于函数估计问题。
  作者简介:
  许勇刚(1975.10-),男,浙江天台,硕士研究生,湖州职业技术学院讲师。

转载注明来源:https://www.xzbu.com/8/view-9013435.htm