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)取。
网友评论