统计机器学习-序列最小最优化算法(SMO)

SMO算法要解如下凸二次规划的对偶问题:

在这个问题中,变量是拉格朗日乘子,一个变量对应于一个样本点。变量的总数等于训练样本的容量。

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的条件,那么这个最优化问题的解就得到了,因为条件是该最优化问题的充分必要条件。于是,每次只选择两个变量进行优化,使其满足条件,然后不断迭代,直至所有变量满足条件,得到最优解。在优化变量的选取上,一般一个是违反条件最严重的一个,另一个由约束条件自动决定。

两个变量二次规划的求解方法

根据SMO算法,公式(1)-(3)的问题可以通过多次选择变量,,求解下列子问题得到:

上述优化问题,因为可以通过公式(5)可以用来表示,所以可以考虑为对的最优化问题。如果,则,为常数:

y1!=y2

根据公式(6),,在正方形内部,加上公式(5),所以,为直线和正方形交线上的点。同理,如果,则,如下图:

y1=y2

假设问题(4)-(6)优化前,的值为,,优化后的最优解为,,并且假设在沿着约束方向未经剪辑时的最优解为。

需要满足不等式

其中,和是所在对角线段的界,如果,则

因为,所以在直线和正方形的交线段上,通过上下平移就能够得到上面的界。同理,如果,则

于是通过公式(5)得到用的表示:

代入公式

并求导等于0便可以得到未经剪辑时的最优解,最后根据上述和裁剪得到。

最优化问题(4)-(6)沿着约束方向未经剪辑时的解是

其中,

是输入空间到特征空间的映射,,为

表示对输入的预测值与真实输出之差,其中

经剪辑后的解是

然后根据公式

计算。

变量的选择方法

SMO算法每次都要选择两个变量进行优化,其中至少一个变量是违反条件的。

第一个变量的选择

SMO称选择第1个变量的过程为外层循环。外层循环在训练样本中选取违反条件最严重的样本点,并将其对应的变量作为第1个变量,具体的,检验训练样本点是否满足条件,即

其中,。

该检验是在范围内进行的。在检验过程中,外层循环首先遍历所有满足条件的样本点,即间隔边界上的支持向量点,检验它们是否满足条件,如果这些样本点都满足条件,那么遍历整个训练集,检验它们是否满足条件。

第二个变量的选择

SMO称选择第2个变量的过程为内层循环。第2个变量的选择标准是希望能使有足够大的变化。由于

所以的变化依赖于。于是选择使最大的,当是正的,选择最小的作为,如果是负的,选择最大的作为,为了节省计算时间,将所有的值保存在一个列表中。

如果这种内层循环找不到一个有足够下降的,则遍历在间隔边界上的支持向量点,依次将其对应的变量作为试用,直到有足够的下降,如果还不可以,则遍历训练集。再不可以,换一个。

计算阈值和差值

更新完,的值,都需要重新计算阈值,当时,由条件可知

所以

由于未更新的为

移项得到

代入公式(15)得到的更新公式

同理,当时,可以推出的更新公式

如果,同时满足条件,,那么,如果,是0或者,那么和以及它们之间的数都是符合条件的阈值,这时选择它们的中点作为。

更新完,后还需要更新对应的值,并保存在列表中,的更新需要用到的值,以及所有支持向量对应的:

其中是所有支持向量的集合。

SMO算法

输入:训练数据集,其中,,,精度;

输出:近似解。

(1)选取初值,令;

(2)选取优化变量,,解析求解两个变量的最优化问题(4)-(6),求得最优解,

其中

如果

如果

更新为;

(3)若在精度范围内满足停机条件


其中

则转(4);否则令,转(2);

(4)取。

你可能感兴趣的:(统计机器学习-序列最小最优化算法(SMO))