SVM-7-SMO(序列最小优化算法)

参考http://www.cnblogs.com/jerrylead

坐标上升法

首先介绍坐标上升法(Coordinate ascent):
假设要解决下面的没有约束的最优化问题:

maxα W(α1,α2,...,αm)
.
对于这类最优化问题,我们可以使用地图下降法或者牛顿迭代法,这里我们使考虑使用坐标上升法:
坐标上升伪代码
也就是说,每次循环我们我们固定除当前 αi 之外的所有 αj(ji) 。每次循环,W只看作是关于当前 αi 的函数,此时只需直接对 αi 求导优化即可。然后依次进行m循环。
在优化是,我们可以通过调整优化的 α 的顺序提高算法的性能。

下图展示了坐标上升法:
坐标上升
上图中中的椭圆代表我们要优化的二次方程的轮廓,最优值就是中心的黑点,我们的初始值在右下角(2,-2),从图中可以看出,每次都平行于某个坐标轴,因为每次我们只优化一个变量。

SMO

现在重新新回到我们要优化的问题(原问题的对偶问题):

maxα W(α)=i=1mαi12i,j=1myiyjαiαj<xi,xj>s.t. 0αiC, i=1,...,mi=1mαiyi=0

假如我们有满足上述约束的 α 的集合,那么我们能直接使用上面的坐标上升算法吗?
假设我们保持 α2,...αm 固定不变,利用坐标上升通过改变 α1 的值来优化问题,这样可行吗?答案是不行!

因为根据上面的等式约束条件我们可以得到:

α1y1=i=2mαiyi

由于 y{1,1} ,因此上式可以改写成:
α1=y1i=2mαiyi

可以看出, α1 的值是和 α2,...αm 相关联的。

因此我们一次最少选取两个变量才能满足约束。然后SMO算法就诞生啦:
SMO伪代码
可以看到每次选取 αi,αj 时都根据经验选取最好的一对组合。
然后固定除 αi,αj 之外的参数,进行优化。
SMO 之所以高效就是因为在固定其他参数后,仅对两个参数 αi,αj 优化的过程很高效。

现在假设我们有满足约束条件的参数集合 {α1,...αm} ,假设固定 {α3,...αm} ,这样W就是 α1α2 的函数,且根据等式约束 α1α2 满足下式:

α1y1+α2y2=i=3mαiyi

因为 {α3,...αm} 以固定,为了方便,我们用 ζ 代替等式右面:
α1y1+α2y2=ζ

显然我们可以改写成: α1=(ζα2y2)y1

我们可以用下面的图说明 α1,α2 取值情况,以及它们的关系:
这里写图片描述
横轴是 α1 纵轴是 α2 ,从之前的KKT约束条件我们已经知道 α 的取值范围是[0,C],因此 α1,α2 的值必然在[0,C]X[0,C]的矩形框内。并且在上图中 α1,α2 必然在直线 α1y1+α2y2=ζ 上,因此必然存在 0LHC 使得, Lα2H

现在我们可得:

W(α1α2,...αm)=W((ζα2y2)y1,α2,...,αm)

同样的对于 {α1,...αm} 我们也可以用 α2 来表示。
因为我们的优化问题是一个2次方程( max12||w||2 ),因此现在我们可以将它表示成一个关于 α2 的2次方程,例如: aα22+bα2+c
这样我们就可以通过求导直接计算出函数的最优值。当然我们同时也要保证 α2 满足约束。
将在不考虑约束的情况下求得的 α2 的值表示成 αwithoutconstraints2 ,由于 α2 的取值范围是[L,H]
可通过如下方式确定 α2 的值:
α2=Hαwithoutconstraints2Lif αwithoutconstraints2>Hif Lαwithoutconstraints2Hif αwithoutconstraints2<L

然后我们就可以通过 α2 得到其他的 α 的值了。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值