介绍SMO算法之前,先结合软间隔定义(5.1)式看看参数αi除了满足(7.1)、(7.2)还有其他哪些特性。软间隔要求间隔最大基础上,松弛变量
总体要小,即得到超平面之后,被定义为异常数据样本数量要尽量的少。按照这个定义生成新的拉格朗日函数: (8.1)求解上式最小值的过程中,逐渐增大C将使
值变小,C是惩罚系数。按照对偶函数思想,为得到下界函数θ(α),先对其他参数求偏导得到以下等式组:条件前两个结果之前已经推导过,最后一个条件说明0≤αi≤C。
SMO算法用坐标上升法来实现参数优化,该方法在之前文章中介绍过,详细可参考链接:梯度下降法。简略回顾下,坐标上升法选择一个参数vi同时固定并初始化其他变量,目标函数此时变为vi的函数,求导并置零后,vi变为其他固定变量的函数,代入初始值后,得到vi优化值,再切换到下一个变量,重复以上操作直至函数值收敛,得到最优解。
由于有条件存在,若选择αi以外的变量固定,αi一定是个常量,所以SMO算法通常一次取两个变量后固定其余的变量。不妨设先取α1 、α2(注意,下标1和2不代表第一个样本和第二个样本),此时其他变量被初始化而固定,得到以下等式:
⑨
上式中ζ是一个常数,上式代入到⑧式中,目标函数θ(α)变为只含有α2的函数:
K(xi,xj)代表利用核函数求两个样本向量的泛函,本篇中K是个内积函数,求θ(α2)的梯度:
在α2初始值基础上,沿着梯度方向前进是最大值方向,这样就得到α2新的值:
⑩得到α2新的值后接下来求α新的值:
(10.1)通过公式⑩得到α2新的值,实质是沿着梯度方向前进,且步长为1,如果读者了解一维搜索算法,能看出这里步长应该是计算出来的,不能盲目直接设置为1。步长系数的确定,在SMO算法中体现为对α1、α2新值的进一步裁剪。再回过头来看公式⑨,根据y1,y2是否同号,α1、α2会有以下两种线性关系:
y1≠y2时:α1-α2=k
y1=y2时:α1+α2=k
根据k为正负情况,以上两种线性关系可用下图表示: