对SVM的推导和编码实践(二)SMO算法的推导

本文详细介绍了SMO(Sequential Minimal Optimization)算法,包括目标函数和约束条件、算法基本思路和两个变量的二次规划求解方法。SMO通过选择两个拉格朗日乘数进行优化,解决SVM的二次规划问题,避免使用矩阵存储和数值优化,适合大规模数据集。文章还阐述了如何处理拉格朗日乘数的修剪问题以及b的更新,并提供了算法的迭代公式总结。
摘要由CSDN通过智能技术生成

目标函数和约束条件

minα12i,j=1Nαiαjyiyj<xi,xj>i=1Nαis.t.,i=1Nαiyi=00αiC(13) (13) m i n α 1 2 ∑ i , j = 1 N α i α j y i y j < x i , x j > − ∑ i = 1 N α i s . t . , ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C

SMO简介

SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha和b,就很容易计算出权重向量w并得到分隔超平面。

SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的“合适”就是指两个alpha必须要符合一定的条件,条件之一就是这两个alpha必须要在间隔边界之外,而其第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。

Platt SMO算法中的外循环确定要优化的最佳alpha对。而简化版却会跳过这一部分,首先在数据集上遍历每一个alpha,然后在剩下的alpha集合中随机选择另一个alpha,从而构建alpha对。这里有一点相当重要,就是我们要同时改变两个alpha。之所以这样做是因为我们有一个约束条件:
Ni=1αiyi=0(14) (14) ∑ i = 1 N α i y i = 0
由于改变一个alpha可能会导致该约束条件失效,因此我们总是同时改变两个alpha。

SMO是一个可以快速解决SVM QP问题而不使用矩阵存储空间和数值优化步的简单算法。SMO使用Qsuna的理论分解QP问题以确保收敛。

SMO在每一步选择尽可能小的优化问题。对标准的SVM QP问题,最小的优化问题涉及到两个拉格朗日乘数,因为拉格朗日乘数必须遵循一个线性等式约束。在每一步SMO选择两个乘数一起优化,寻找最优值,更新SVM以体现这些新的最优值。

SMO的优势体现于解那两个乘数的最优值的时候可以直接计算解析解而不是通过数值优化。此外,SMO不需要额外的空间存储矩阵,因此非常大规模的SVM训练问题也可以装进一台普通的个人电脑的内存里。因为没有涉及到矩阵算法,SMO算法不受数值精度问题的影响。

SMO由两部分组成:
1、解那两个拉格朗日乘数的解析解
2、如何选择那两个拉格朗日乘数进行优化的启发式算法

SMO的基本思路

确保自己理解思路,觉得《统计学习方法》里面这段话很重要,于是抄录如下:

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数的值变得更小。重要的是,这时子问题可以通过解析方法求解(注:求导什么的)。这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反kkt条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求原问题的目的。

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

得到alpha _1,alpha _2的递推公式

假设已经选择 α1,α2 α 1 , α 2 ,其他橙子是固定的,于是式(13)可以写成:

minα1,α212α21<x1,x1>+12α22<x2,x2>+α1α2y1y2<x1,x2>α1α2+α1y1i=3Nαiyi<xi,x1>+α2y2i=3Nαiyi<xi,x2>s.t.,α1y1+α2y2=i=3Nαiyi=ζ0αiC,i=1,2(14) (14) m i n α 1 , α 2 1 2 α 1 2 < x 1 , x 1 > + 1 2 α 2 2 < x 2 , x 2 > + α 1 α 2 y 1 y 2 < x 1 , x 2 > − α 1 − α 2 + α 1 y 1 ∑ i = 3 N α i y i < x i , x 1 > + α 2 y 2 ∑ i = 3 N α i y i < x i , x 2 > s . t . , α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ζ 0 ≤ α i ≤ C , i = 1 , 2

对于上述优化问题来说常数因子没有意义,故省略了很多不含 α1,α2 α 1 , α 2 的常数项,如 α3α4y3y4<x3,x4> α 3 α 4 y 3 y 4 < x 3 , x 4 >
因为符号太多,想办法做下简化,令
Kij=K(xi,xj)=<xi,xj>(15) (15) K i j = K ( x i , x j ) =< x i , x j >
如上一章所讲,内积只是 xi,xj x i , x j 是数据集线性可分的情况下的计算方式,如果引入其他升维核函数将不是内积,这里用 Kij K i j 来代换是合适的。
(14)写成:

minα1,α212α21K11+12α22K22+α1α2y1y2K12α1α2+α1y1i=3NαiyiKi1+α2y2i=3NαiyiKi2s.t.,α1y1+α2y2=i=3Nαiyi=ζ0αiC,i=1,2(16) (16) m i n α 1 , α 2 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + α 1 α 2 y 1 y 2 K 12 − α 1 − α 2 + α 1 y 1 ∑ i = 3 N α i y i K i 1 + α
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值