SMO(序列最小优化)算法论文及原理详述

今日拜读了Platt的关于SMO的论文:Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines。直译过来就是:序列最小优化:一种训练支持向量机的快速方法。然后根据论文及查询的相关资料整理了这篇内容。

一、论文内容概述

论文摘要

本文提出了一种新的训练支持向量机的算法:序列最小优化算法。训练一个支持向量机需要解决一个非常大的二次规划(quadratic programming ,QP)优化问题。SMO将这个大的QP问题分解为一系列可能的最小的QP问题。这些小QP问题被解析地解决了,避免了使用一个耗时的数值QP优化作为一个内环。SMO所需的内存量在训练集大小上是线性的,这允许SMO处理非常大的训练集。由于避免了矩阵计算,对于各种测试问题,SMO的训练集规模介于线性和二次之间,而标准的chunking SVM算法的训练集规模介于线性和三次之间。SMO的计算时间主要由支持向量机的评估决定,因此SMO对于线性支持向量机和稀疏数据集是最快的。在真实世界的稀疏数据集上,SMO可以比分块算法快1000倍以上。

1 简介部分

在过去的几年中,人们对支持向量机(SVMs)产生了浓厚的兴趣。已有经验表明,支持向量机在各种各样的问题上,如手写体字符识别[12]、人脸检测[15]、行人检测[14]和文本分类[9],都具有良好的泛化性能。
然而,支持向量机的使用仍然局限于一小部分研究者。一个可能的原因是支持向量机的训练算法很慢,特别是对于大问题。另一种解释是,SVM训练算法复杂、微妙,对于一般工程师来说难以实现。
本文提出了一种新的支持向量机学习算法,该算法概念简单,易于实现,速度一般较快,对于困难的支持向量机问题比标准的支持向量机训练算法有更好的尺度特性。这种新的支持向量机学习算法称为序列最小优化算法(Sequential minimum Optimization, SMO)。与之前使用数值二次规划(QP)作为内环的SVM学习算法不同,SMO使用解析的QP步骤。
本文首先对支持向量机进行了概述,并对目前支持向量机的训练算法进行了回顾。SMO算法的详细介绍,包括解决分析QP一步,启发式选择哪些变量优化内部循环,如何设置的描述SVM的门槛,一些特殊情况,优化算法的伪代码,SMO其他算法之间的关系。
SMO已经在两个真实数据集和两个人工数据集上进行了测试。本文介绍了对这些数据集进行SMO计时和标准“分块”算法的结果,并给出了基于这些计时的结论。最后,有一个附录,描述了解析优化的推导。

###1.1 支持向量机概述
在这里插入图片描述
图1 一个线性支持向量机
Vladimir Vapnik在1979年发明了支持向量机[19]。在其最简单的线性形式,支持向量机是一种分离超平面的正面例子的负面例子最大的保证金(参见图1)。在线性情况下,定义的是超平面的距离最近的正面和负面的例子。线性支持向量机的输出公式为:
在这里插入图片描述
其中w是超平面的法向量x是输入向量。分离的超平面是平面u=0。最近的点在平面u = 1上。边际m是这样的:
在这里插入图片描述
边际最大化可通过以下优化问题[4]表示:
在这里插入图片描述
式中,xi为第i个训练例,yi为第i个训练例SVM的正确输出。对于类中的正例,yi的值为+1,对于负例,yi的值为-1。
利用拉格朗日定理,这个优化问题可以转化为对偶形式,即目标函数Y完全依赖于一组拉格朗日乘数ai,:
在这里插入图片描述(其中N为训练例数),受不等式约束,
在这里插入图片描述
一个线性等式约束,
在这里插入图片描述
每个拉格朗日乘子与每个训练示例之间存在一一对应关系。一旦确定了拉格朗日乘数,则可由拉格朗日乘数导出法向量r w和阈值b
在这里插入图片描述
由于使用前可以从训练数据中通过式(7)计算出r w,因此评估一个线性SVM所需的计算量与非零支持向量的数量是不变的。
当然,不是所有的数据集都是线性可分的。可能没有超平面可以将正面的例子和负面的例子分开。在上面的公式中,不可分离的情况将对应一个无穷解。然而,在1995年,科尔特斯和他的同事们开始了他们的工作。Vapnik[7]建议对原始优化声明(3)进行修改,该修改允许,但惩罚,未能达到正确的边界示例。修改是:
在这里插入图片描述
其中,xi是允许裕度失效的松弛变量,C是一个参数,它用少量的裕度失效来交换较大的裕度。将新的优化问题转化为对偶形式时,只需将约束(5)转化为框约束即可:
在这里插入图片描述
变量xi根本没有出现在对偶公式中。

支持向量机可以进一步推广为非线性分类器[2]。非线性支持向量机的输出由拉格朗日乘数显式计算:
在这里插入图片描述
其中K是一个核函数,它度量输入向量rx与存储的训练向量rx j之间的相似性或距离。K的例子包括高斯、多项式和神经网络非线性[4]。如果K为线性,则恢复线性SVM(1)方程。
拉格朗日乘数ai仍然是通过二次程序计算的。非线性改变了二次型,但对偶目标函数Y在a中仍然是二次型
在这里插入图片描述
上式(11)中的QP问题就是SMO算法要解决的QP问题。为了使上述QP问题是正定的,核函数K必须服从Mercer s条件[4]。
Mercer 定理:任何半正定的函数都可以作为核函数。
Karush-Kuhn-Tucker (KKT)条件是一个正定QP问题的最优点的充要条件。QP问题(11)的KKT条件特别简单。当,对于所有的i, QP问题被解决:
在这里插入图片描述
其中ui为第i个训练示例的SVM输出。请注意,KKT条件可以一次在一个示例上求值,这在SMO算法的构造中非常有用。

1.2 以前的支持向量方法

由于支持向量机的庞大规模,其产生的QP问题(11)不能通过标准QP技术轻易解决。(11)中的二次形式包含一个矩阵,它的元素个数等于训练样本个数的平方。如果有超过4000个训练示例,这个矩阵就不能放入128mb。
Vapnik[19]描述了一种求解SVM QP的方法,该方法被称为分块。分块算法利用了这样一个事实,即如果移除对应于零拉格朗日乘数的矩阵的行和列,那么二次形式的值是相同的。因此,大的QP问题可以分解为一系列小的QP问题,其最终目标是识别出所有非零的拉格朗日乘子**,抛弃所有零的拉格朗日乘子。**每一步,将解决一个QP问题,包括下面的例子:每一个非零的拉格朗日乘子的最后一步,和M坏的例子,这违反了马条件(12)[4],对于一些M(参见图2)的价值。如果有少于M例子违反马条件在一个步骤中,所有的违反实例被添加。每个QP子问题都用前一个子问题的结果初始化。在最后一步,整个非零拉格朗日乘子集合已经被识别,因此最后一步解决了大QP问题。

分块极大地减小了矩阵的大小,从训练例数的平方近似为非零拉格朗日乘数的平方。然而,**分块仍然不能处理大规模的训练问题,**因为即使这个简化后的矩阵也无法装入记忆。
在这里插入图片描述
图2。有三种训练支持向量机的方法:分块法、Osunas算法和SMO。对于每种方法,说明了三个步骤。每一步的水平细线表示训练集,厚框表示该步骤优化的拉格朗日乘数。分块时,每步增加固定数目的样本,而每步丢弃零拉格朗日乘数。因此,每步训练的示例数趋于增长。对于Osuna s算法,每一步优化的示例数是固定的:每一步在问题中添加和丢弃的示例数都是相同的。对于SMO,每一步只有两个示例进行了分析优化,因此每一步都非常快。
1997年,Osuna等人[16]证明了一个定理,提出了一套全新的支持向量机QP算法。该定理证明了大的QP问题可以分解为一系列小的QP子问题。只要在前面子问题的示例中增加至少一个违反KKT条件的示例,每一步都将减少总体目标函数,并保持一个符合所有约束条件的可行点。因此,如果一个QP子问题序列中总是添加至少一个违规者,则保证其收敛性。注意,分块算法遵从定理的条件,因此将收敛。

Osuna等人建议对每个QP子问题保持一个大小恒定的矩阵,这意味着在每一步[16]中添加和删除相同数量的示例(参见图2)。使用一个大小恒定的矩阵将允许对任意大小的数据集进行训练。在Osuna论文[16]中给出的算法中,每一步加一个例,减一个例。很明显,这是低效的,因为它将使用一个完整的数值QP优化步骤来使一个训练示例服从KKT条件。在实践中,研究人员根据未公布的启发式[17]对多个例子进行加减运算。在任何情况下,所有这些方法都需要一个数值QP求解器。数字QP是出了名的难以把握;有许多数值精度问题需要解决。

2 序列最小优化

序列最小优化(SMO)是一个简单的算法,可以快速解决SVM QP问题,不需要任何额外的矩阵存储,也根本不使用数值QP优化步骤。SMO将整个QP问题分解为QP子问题,利用Osuna‘s定理保证收敛性。Osuna’s theorem简单的意思就是每次将QP问题分解成QP子问题迭代执行,当每次迭代求解的QP子问题中至少包含一个不满足KKT条件的example的时候,这个算法最终会收敛。

与前面的方法不同,SMO选择在每一步中解决尽可能小的优化问题。对于标准SVM QP问题,最小的优化问题涉及两个拉格朗日乘数,因为拉格朗日乘数必须服从线性等式约束。在每一步,SMO选择两个拉格朗日乘数共同优化,找到这些乘数的最优值,并更新SVM以反映新的最优值(见图2)。

SMO的优点在于可以解析地求解两个拉格朗日乘数。因此,完全避免了数值QP优化。算法的内部循环可以用少量的C代码表示,而不是调用整个QP库例程。虽然在算法过程中求解了更多的优化子问题,但每个子问题的求解速度都非常快,因此整个QP问题的求解速度也很快。

此外,SMO根本不需要额外的矩阵存储。因此,一个普通的个人计算机或工作站的内存可以容纳非常大的SVM训练问题。由于SMO中没有使用矩阵算法,因此它不太容易受到数值精度问题的影响。

SMO有两个组成部分:**求解两个拉格朗日乘数的解析方法,以及选择优化哪个乘数的启发式方法**。
在这里插入图片描述
图1所示。两个拉格朗日乘数必须满足全问题的所有约束条件。不等式约束使拉格朗日乘数处于方框

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
SMOSequential Minimal Optimization算法是一种优化Support Vector Machine(SVM)的算法。SVM是一种常用于分类和回归分析的机器学习方法,在糖尿病诊断中也得到了广泛的应用。 在使用SVM进行糖尿病诊断时,需要选取合适的参数来训练分类器,以获得最佳的分类结果。SMO算法通过对SVM进行优化,可以提高分类器的性能。 SMO算法原理是通过将大优化问题分解为小优化问题,并通过解析的方式找到这些小优化问题的最优解。具体来说,SMO算法选择两个变量作为优化目标,并固定其他变量。通过迭代更新这两个变量,直到达到收敛条件,从而求解出SVM的最优解。 在糖尿病诊断中,使用SMO算法优化SVM可以带来以下优势: 1. 改善分类性能:SMO算法可以通过优化SVM参数,使得分类器更准确地划分糖尿病和非糖尿病患者。从而提高糖尿病的诊断准确率。 2. 加快训练速度:SMO算法通过将大优化问题分解为小优化问题,可以加快SVM模型的训练速度。这对于处理大规模的糖尿病数据集来说尤为重要。 3. 提高模型可解释性:SMO算法对于优化SVM模型的参数具有较好的可解释性。通过查看SMO算法优化过程中的变量更新情况,可以更好地理解糖尿病诊断模型的工作原理和特征重要性。 在实际应用中,使用SMO算法优化SVM可以提高糖尿病诊断的准确性和效率,为医生和患者提供更好的诊断支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值