[关闭]
@wjcper2008 2017-02-28T23:39:08.000000Z 字数 4371 阅读 1628

SMO优化算法

机器学习基础 SVM


http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
http://blog.csdn.net/xuanyuansen/article/details/41153023

1. SMO简介

SMO算法(Sequential minimal optimization)由Microsoft Research的John C. Platt 在1998年提出, 并成为最快的二次规划优化算法, 特别针对线性SVM和数据稀疏时性能更优。关于SMO最好的资料就是他本人写的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》了。

对于SVM的对偶问题, 数据集{(xi,yi)}, 要求解α1,,αn上求最大值W(α)二次规划问题:

minαs.t.W(α)=inαi12i,j=1nyiyjαiαj<xi,xj>0αiCinyiαi=0, i=1,,n(1)


2. SMO的更新公式推导

2.1 步骤一:视为一个二元函数

求解α1,,αn, 思路如下:

  1. 按照坐标上升法(目标求最大值), 可固定除αi以外的所有的α, 然后在αi上求极值.
  2. 然而, 对于SVM, 由于约束条件nk=1ykαk=0. 如果固定其他的α, 那么αi将不是变量.

因此, SMO算法需要同时选择两个α进行同时更新, 比如αiαj, 固定其他参数. 又由于

yiαi+yjαj=k=3lykαk=ϵ,(2)

可以简化目标函数W(α)为只关于αiαj的二元函数, Const表示常数项(不包含αiαj).

minΨ(αi,αj)=12Kiiα2i+12Kjjα2j+yiyjKijαiαj(αi+αj)+yiviαi+yjvjαj+Const(3)

其中, vk=Nli,jαjyjK(xk,xl), k=i,j.

2.2 步骤二: 视为一元函数

等式约束(2), 其中ϵ在某步迭代中可视为常数. 在等式两边乘以yi, 且y2i=1, 然后, 将上式用αiαj表示, 得

αi=(ϵyjαj)yi

并代回到(3)中, 得

minΨ(αj)=12Kii(ϵαjyj)2+12Kjjα2j+yiKij(ϵαjyj)αj(ϵyjαj)yiαj+vi(ϵyjαj)+yjvjαj+Const(4)

2.3 对一元函数Ψ求极值点

Ψ(4)关于αj求导,并令其为0. 可求得αj的更新解析解.

Ψ(α2)α2=(Kii+Kjj2Kij)αjK11ζy2+K12ζy2+y1y21v1y2+v2y2=0

具体的算法步骤描述如下:


image_1b9vr5kh4rmc1m37h5tslv16nq9.png-36.5kB

  1. 使用启发式算法选择更新的αiαj对, 使得目标值更新, 最大程度的向全局最优值逼近.
  2. 固定其他参数, W(α)关于αiαj求导, 得到子问题的极值. [而αj又可由αi表示]
  3. SMO之所以高效就是因为在固定其他参数后,对一个参数优化过程很高效.

3. SMO的变量α上界和下界

(2)可知,

yiαi+yjαj=ϵ(5)

以及
0αC(6)

yiyj异号时, 如-1和+1. 有αiαj=ϵαjαi=ϵ.

  1. 对于αiαj=ϵ情况, 有αi=αj+ϵ.
    对于αi的下界, 当αj=0取得. 故, Lαi=max{0,ϵ}=max{0,αiαj}.
    对于αi的上界, 当αj=C取得. 故, Hαi=min{C,ϵ+C}=min{0,αiαj+C}.

  2. 对于αjαi=ϵ情况, 有αi=αjϵ.
    对于αi的下界, 当αj=0取得. 故, Lαi=max{0,ϵ}=max{0,αiαj}.
    对于αi的上界, 当αj=C取得. 故, Hαi=min{C,ϵ+C}=min{0,αiαj+C}.

yiyj同号时, 如都为+1或-1. 有αi+αj=ϵαj+αi=ϵ.

  1. 对于αi+αj=ϵ情况, 有αi=ϵαj.
    对于αi的下界, 当αj=C取得. 故, Lαi=max{0,ϵC}=max{0,αi+αjC}.
    对于αi的上界, 当αj=0取得. 故, Hαi=min{C,ϵ}=min{0,αi+αj}.

  2. 对于αi+αj=ϵ情况, 有αi=ϵαj.
    对于αi的下界, 当αj=C取得. 故, Lαi=max{0,ϵC}=max{0,αi+αjC}.
    对于αi的上界, 当αj=0取得. 故, Hαi=min{C,ϵ}=min{0,αi+αj}.


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注