浅谈SVM(六)

来源:互联网 发布:散热仿真软件 编辑:程序博客网 时间:2024/05/29 19:40

五、SMO 算法
1、简要介绍
时序最小优化(SMO: Sequential Minimal Optimization)是一种可以快速解决 SVM 中二次规划(QP)问题的简单算法。它的好处有两点:一是不需要额外的矩阵存储,二是不需要对二次规划问题进行数值求解。
与之前的一些算法不同,SMO 算法每一步都是解决一个最小规模的优化问题,对于标准的 SVM QP 问题,最小规模优化问题包含两个 Lagrange 乘子(因为 Lagrange 乘子需要遵循一个线性等式约束,所以至少为两个)。在算法的每一步,我们都选择两个 Lagrange 乘子参与优化,在找到这些乘子的最优值后,用新的值更新 SVM 问题。并且 SMO 算法不需要额外的矩阵存储,所以大规模的 SVM 训练问题也可以在一台普通的计算机上进行处理。
总的来说,SMO 由两部分构成:一是运用探索式方法去选择哪个乘子需要优先优化;二是运用解析的方法去解决两乘子(两个 Lagrange 乘子,以下简称两乘子)优化问题。

2、两乘子优化问题
首先来看看两乘子优化问题,由之前的讨论可知,需要解决的优化问题为:

maxαni=1αi12ni,j=1αiαjyiyjxTixjs.t.0αiC,i=1,2,...,nni=1αiyi=0

下面要解决的问题是:在 α=(α1,α2,...,αn) 上求上述目标函数的最小值。为了求解这些乘子,不失一般性,每次从中任意抽取两个乘子 α1α2 ,然后固定 α1α2 以外的其它乘子,使得目标函数只是关于 α1α2的函数。这样,不断地从一堆乘子中任意抽取两个求解,不断地迭代求解子问题,最终达到求解原问题的目的。
现在对偶问题的子问题的目标函数可以表达为:


Ψ(α)=12K11α21+12K22α22+sK12α1α2+y1α1v1+y2α2v2α1α2Ψconst

其中
Kij=K(xi,xj)v1=nj=3yjαjK1j=u1+by1α1K11y2α2K12v2=nj=3yjαjK2j=u2+by1α1K12y2α2K22

并且 s=y1y2
在寻找最小值的过程中要满足线性等式约束,即

α1y1+α2y2=w0

其中 w0 为常数。进而得出

α1+sα2=α1+sα2=w0

于是 α1=w0sα2 ,将此式带入 Ψ 中并且关于 α2 求导,经整理后得到:

α2=α2+y2(E1E2)η

其中 η=K11+K222K12E1=u1y1E2=u2y2
于是

α1=α1+s(α2α2)

由于对于每个乘子都有 0<αi<C 的限制,所以对结果还要加上一定的限制。

3、探索式方法寻找需要优先优化的乘子
所谓的探索式选择方法主要思想是每次选择拉格朗日乘子的时候,优先选择样本前面系数满足 0αiCαi 作优化(称为无界样例),因为在界上(αi0C)的样例对应的系数 αi 一般不会更改。
首先我们来看看加入松弛变量的原始问题的 KKT 条件,根据附录1我们得出相应的 KKT 条件为:

{αi(yi(wTxi+b)+ξi1)=0γiξi=0

根据 αi 的值,现在考虑以下三种情况:
(1)如果 αi=0 ,则 γi=Cαi=C>0 ,于是 ξi=0 ,所以可以得到


yi(wTxi+b)10

此时对应于两条间隔线外面的点;
(2)如果 0<αi<C ,则

yi(wTxi+b)+ξi1=0

又由于 γi=Cαi>0 ,于是 ξi=0 ,代入上式则有

yi(wTxi+b)1=0

此时对应于两条间隔线上的点;
(3)如果 αi=C ,则

yi(wTxi+b)+ξi1=0

又由于 γi=Cαi=0 ,于是 ξi0 ,代入上式则有

yi(wTxi+b)10

此时对应于两条间隔线里面的点或者是错分点。
接下来就来讨论一下如何寻找 α1α2 ,对于 α1 ,可以通过刚刚说的那三种不满足 KKT 的条件来找,先对所有样例进行循环,循环中碰到违背 KKT 条件的(不管界上还是界内)都进行迭代更新。等这轮过后,如果没有收敛,第二轮就只针对 0<αi<C 的样例进行迭代更新。在第一个乘子选择后,第二个乘子也使用探索式方法选择,第二个乘子的迭代步长大致正比于 |E1E2| ,选择第二个乘子能够最大化 |E1E2| 。即当 E1 为正时选择负的绝对值最大的 E2 ,反之,选择正值最大的 E2
最后的收敛条件是在界内(0<αi<C)的样例都能够遵循 KKT 条件,且其对应的 αi 只在极小的范围内变动(注意:在每次更新完两个乘子的优化后,都需要再重新计算 b ,及对应的 Ei 值。)
最后感谢几位作者:July,pluskid,John C.Platt
文中很多地方参考了他们之前的文章和博客,非常感谢!

0 0
原创粉丝点击