机器学习二一:SMO算法
AI
菌
在SVM的前两篇里,我们优化的目标函数最终都是一个关于α向量的函数。
而怎么极小化这个函数,求出对应的α向量,进而求出分离超平面我们没有讲。
本篇就对优化这个关于α向量的函数的SMO算法做一个总结。
1. 回顾SVM优化目标函数
我们首先回顾下我们的优化目标函数:
我们的解要满足的KKT条件的对偶互补条件为:
根据这个KKT条件的对偶互补条件,我们有:
由于
,我们令
则有:
SMO算法的基本思想
由于在目标优化问题中,变量是拉格朗日乘子α i,一个变量 对应于一个样本点(x i,y i) ,且变量的总数等于训练样本容量 m
要解决的是在参数
上求最大值W的问题,这m个变量组成的向量α需要在目标函数极小化的时候求出。
至于
和
都是已知数。C由我们预先设定,也是已知数
按照坐标上升的思路,我们首先固定除 α1 以外的所有参数,然后在 α1上求极值
等一下,这个思路有问题,因为如果固定以外的所有参数,那么将不再是变量(可以由其他值推出),因为问题中规定了:
因此,我们需要一次选取两个参数做优化,比如 α1 和 α2,此时 α2 可以由 α1 和其他参数表示出来。这样回带到W中,W就只是关于的函数了,可解。
故SMO算法的思想就是它每次只优化两个变量,将其他的变量都视为常数。
所以SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法
二次规划的解析方法
下面讨论具体方法:
假设我们选取了初始值
满足了问题中的约束条件。
接下来,我们固定了
这样W就是 α1 和 α2 的函数。并且 α1 和 α2满足条件:
由于左边都是已知固定值,因此为了方面,可将等式右边标记成实数值 ζ
那么有:
根据上面的约束条件
又由于y1,y2均只能取值1或者-1, 这样α1,α2在[0,C]和[0,C]形成的盒子里面,并且两者的关系直线的斜率只能为1或者-1,也就是说α1,α2的关系直线平行于[0,C]和[0,C]形成的盒子的对角线,如下图所示:
接下来假设问题初始可行解为
与
上一轮迭代得到的解是:
与
并且假设沿着约束方向α2未经剪辑的解是
由于
必须满足上图中的线段约束。假设L和H分别是上图中 α2new
所在的线段的边界。那么很显然我们有:
而对于L和H,我们也有限制条件如果是上面左图中的情况,则
如果是上面右图中的情况,我们有:
也就是说,假如我们通过求导得到的α2new,unc,则最终的α2new应该为:
那么如何求出α2new,unc呢?很简单,我们只需要将目标函数对α2求偏导数即可。
首先我们整理下我们的目标函数。
为了简化叙述,我们令
其中g(x)就是我们在第一节里面的提到的
我们令
这样我们的优化目标函数进一步简化为:
由于
并且
可以得到用α1用α2表达的式子为:
将上式带入我们的目标优化函数,就可以消除α1,得到仅仅包含α2的式子:
忙了半天,我们终于可以开始求α2new,unc了,现在我们开始通过求偏导数来得到α2new,unc
整理上式有:
将ς=α1y1+α2y2带入上式,我们有:
我们终于得到了α2new,unc的表达式:
利用上面讲到的α2new,unc和α2new的关系式,我们就可以得到我们新的α2new了。利用α2new和α1new的线性关系,我们也可以得到新的α1new
选择变量的启发式方法
第一个变量的选择
SMO算法称选择第一个变量为外层循环,这个变量需要选择在训练集中违反KKT条件最严重的样本点。对于每个样本点,要满足的KKT条件我们在第一节已经讲到了:
一般来说,我们首先选择违反第二个条件的点。如果这些支持向量都满足KKT条件,再选择违反第一条 和 第三条的点
第二个变量的选择
假设我们在外层循环已经找到了α1, 第二个变量α2的选择标准是让|E1−E2|有足够大的变化。
由于α1定了的时候,E1也确定了,所以要想|E1−E2|最大,只需要在E1为正时,选择最小的Ei作为E2, 在E1为负时,选择最大的Ei作为E2,可以将所有的Ei保存下来加快迭代。
如果内存循环找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做α2,直到目标函数有足够的下降, 如果所有的支持向量做α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1
计算阈值b和差值Ei
在每次完成两个变量的优化之后,需要重新计算阈值b。当
时,我们有
于是新的b1new为:
计算出E1为:
看到上两式都有
因此可以将b1new用E1表示为:
同样的,如果
那么有:
最终的bnew为:
其中,S是所有支持向量xj的集合。
好了,SMO算法基本讲完了,我们来归纳下SMO算法。
算法总结
输入是m个样本(x1,y1),(x2,y2),...,(xm,ym),,其中x为n维特征向量。y为二元输出,值为1,或者-1.精度e。输出是近似解α
1)取初值α0=0,k=0
2)按照变量选取的方法选取出a1k与a2k,求出新的α2new,unc。
3)按照下式求出α2k+1
4)利用α2k+1和α1k+1的关系求出α1k+1
5)按照阈值与差值的计算方法算出bk+1和Ei
6)在精度e范围内检查是否满足如下的终止条件:
7)如果满足则结束,返回αk+1,否则转到步骤2)
AI
菌
相信SVM最让大家头疼的就是拉格朗日对偶和SMO,对比这么复杂的推导过程,SVM的思想确实那么简单。它不再像logistic回归一样企图去拟合样本点(中间加了一层sigmoid函数变换),而是就在样本中去找分隔线,为了评判哪条分界线更好,引入了几何间隔最大化的目标。
之后所有的推导都是去解决目标函数的最优化上了:拉格朗日对偶的重要作用是将w的计算提前并消除w,使得优化函数变为拉格朗日乘子的单一参数优化问题
在解决最优化的过程中,发现了w可以由特征向量内积来表示,进而发现了核函数,仅需要调整核函数就可以将特征进行低维到高维的变换,在低维上进行计算,实质结果表现在高维上。由于并不是所有的样本都可分
为了保证SVM的通用性,进行了软间隔的处理,导致的结果就是将优化问题变得更加复杂,然而惊奇的是松弛变量没有出现在最后的目标函数中。最后的优化求解问题,也被拉格朗日对偶和SMO算法化解,使SVM趋向于完美。
另外,其他很多议题如SVM背后的学习理论、参数选择问题、二值分类到多值分类等等还没有涉及到,以后有时间再学吧。
不失初心,不忘初衷
AI玩转智能