一、SMO(序列最小最优化)优化两个变量
以非线性支持向量机的对偶问题为例,使用SMO算法求解该对偶问题的最优参数α* 。
非线性支持向量机的对偶问题如下:
对偶问题转换:(如何转换请看这篇博客)
存在最优解(w*,b* ,ξ*, α* ,μ*)使得w*,b* ,ξ* 是原始问题的最优解且 α* 是对偶问题的最优解的充要条件是(w*,b* ,ξ*, α* ,μ*)满足KKT条件。
KKT条件如下:
上述的KKT条件太过分散,很难看出关联,所以先对KKT条件进行化简:
首先令g(xi) =w·xi+b ,
当αi = 0时,由C - αi - μi = 0可得ui=C(C不等于0),由A和C知yi(w·xi+b)-1+ ξi >=0。因为ui不等于0,由B知ξi=0,所以yi(w·xi+b)-1>=0即yi(w·xi+b) >= 1即 yig(xi) >= 1。
当0 < αi < C 时, 由C - αi - μi = 0可得 ui = C - αi ,因为0 < αi < C,所以μi > 0。因为0 < αi < C ,由A和C知yi(w·xi+b)-1+ ξi =0。因为ui不等于0,由B知ξi=0,所以yi(w·xi+b)-1 =0即yi(w·xi+b) = 1即 yig(xi) = 1。
当 αi = C时,由A可得yi(w·xi+b)-1+ ξi =0,即yi(w·xi+b) + ξi = 1 (D式) ,又因为C - αi - μi = 0,所以μi =0,所以由B可得ξi>=0。所以由D式可得 yig(xi) <= 1。
化简后的KKT条件如下:
直接求出最优的参数α(α1,α2, …, αN)是很难的,SMO算法的思想是每次只优化α的两个分量,最终使得α的所有分量都满足KKT条件。
SMO算法从这里开始
1.1 SMO优化选中的两个变量
现在开始讲如何优化参数α中被选中的两个分量,首先列出对偶问题及其KKT条件。