SVM系列理论(十一)SMO序列最优化算法

支持向量机的的学习问题可以形式化为求解凸二次规划问题。求解凸二次规划问题可以借用一些凸二次规划求解工具,但这需要强大的计算能力支持。Platt提出SMO序列最小优化算法,可以高效地计算出对偶问题中最佳的拉格朗日乘子 α α ∗ .

1. SMO 序列最小化算法的基本思想

SVM的对偶问题可以表示为:

minα    12Nj=1αiαjyiyjK(xixj)Ni=1αi m i n α         1 2 ∑ j = 1 N α i α j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N α i

s.t.    Ni=1αiyi=0 s . t .         ∑ i = 1 N α i y i = 0

            0αiC,i=1,2,...,N         (1)                         0 ≤ α i ≤ C , i = 1 , 2 , . . . , N                   ( 1 )


对应的KKT条件为:

αi=0yig(xi)1          α i = 0 ⇒ y i g ( x i ) ≥ 1                  

0<αi<Cyig(xi)=1          0 < α i < C ⇒ y i g ( x i ) = 1                  

αi=Cyig(xi)1          α i = C ⇒ y i g ( x i ) ≤ 1                  


SMO算法是一种快速学习的算法,其思想是

不断地选择两个两个变量 α1,α2 α 1 , α 2 ,将上面(1)这个二次规划问题分解成一个只有两个变量的二次规划子问题,然后对二变量子问题进行解析求解,直到所有变量都满足KKT条件为止。由于每个子问题都有解析解,计算很快,所以很高效。

重要定理KKT条件是最优化问题的充分必要条件


2. 选择两个变量的方法

上面说到SMO算法的思想,那么第一步应该明确怎么选择两个变量 α1,α2 α 1 , α 2

2.1 第一个变量的选择

选择第一个变量需要选择在训练集中违反KKT条件最严重的样本点。 这很容易理解,因为我们最终的目标是让所有的变量 α α 满足KKT条件,选择违反KKT最大的作为优化对象。

  • 一般来说,我们首先选择违反 0<αi<Cyig(xi)=1 0 < α i < C ⇒ y i g ( x i ) = 1 这个条件的 α α

  • 如果这些支持向量都满足KKT条件,再选择违反 αi=Cyig(xi)1 α i = C ⇒ y i g ( x i ) ≤ 1 αi=0yig(xi)1 α i = 0 ⇒ y i g ( x i ) ≥ 1 的点。

2.2 第二个变量的选择

为了选择第二个变量,首先定义函数 g(xi)=Nj=1αjyjK(xj,xi)+b g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b

并把预测值 g(xi) g ( x i ) 与真实值 yi y i 之差记为 Ei E i ,则

Ei=gi(x)yi=(Nj=1αjyjK(xj,xi)+b)yi;       i=1,2 E i = g i ( x ) − y i = ( ∑ j = 1 N α j y j K ( x j , x i ) + b ) − y i ;               i = 1 , 2

第二个变量 α2 α 2 的选择标准就是是让 |E1E2| | E 1 − E 2 | 有足够大的变化。

  • 假设已经找到了 α1 α 1 ,由于 α1 α 1 定了,所以 E1 E 1 也确定了。所以要想 |E1E2| | E 1 − E 2 | 最大,只需要

    • E1 E 1 为正时,选择最小的 Ei E i 作为 E2 E 2
    • E1 E 1 为负时,选择最大的 Ei E i 作为 E2 E 2 ,因此可以将所有的 Ei E i 保存下来加快迭代。
  • 如果上面找到的 α2 α 2 不能让目标函数有足够的下降, 可以遍历支持向量,直到目标函数有足够的足够的下降.

  • 如果所有的支持向量做α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1 

3. SMO序列最小化算法的基本步骤

现在我们知道了选择变量的方法,那么就要把原来(1)中的凸二次优化问题转化为两个变量的二次规划子问题,然后对二变量子问题进行解析求解

第一步, 使用2中方法选取两个变量 α1,α2 α 1 , α 2 (选取的量应该是违反KKT比较大的变量,这样优化效果好), 其他的 αi α i 视为常量. 求解新的未经剪辑时 αnew,uncut2 α 2 n e w , u n c u t .

最优化问题可以写为:

minα    W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2(α1+α2)+y1α1Nj=3αiyiKi1+y2α2Nj=3αiyiKi2         (2) m i n α         W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ j = 3 N α i y i K i 1 + y 2 α 2 ∑ j = 3 N α i y i K i 2                   ( 2 )

s.t.       α1y1+α2y2=Ni=3αiyi=ξ         (3) s . t .               α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ξ                   ( 3 )

            0αiC,i=1,2         (4)                         0 ≤ α i ≤ C , i = 1 , 2                   ( 4 )

如果不考虑 0αiC,i=1,2  0 ≤ α i ≤ C , i = 1 , 2   的约束条件下,利用(3)代入(2),得到 α2 α 2 的单变量问题

再对 W 求导并令其为 0,可以求到一个 α2 α 2 解。我们称这个解是未经剪辑时的新解 αnew,uncut2 α 2 n e w , u n c u t

αnew,uncut2=αold2+y2(E1E2)η         (5) α 2 n e w , u n c u t = α 2 o l d + y 2 ( E 1 − E 2 ) η                   ( 5 )


注:

g(xi)=Nj=1αjyjK(xj,xi)+b         (6) g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b                   ( 6 )

η=K11+K222K12=||ϕ(x1)ϕ(x2)||2         (7) η = K 11 + K 22 − 2 K 12 = | | ϕ ( x 1 ) − ϕ ( x 2 ) | | 2                   ( 7 )

Ei=g(xi)yi=(Nj=1αjyjK(xj,xi)+b)yi;       i=1,2         (8) E i = g ( x i ) − y i = ( ∑ j = 1 N α j y j K ( x j , x i ) + b ) − y i ;               i = 1 , 2                   ( 8 )


第二步,按照下式求出剪辑后的 αnew2 α 2 n e w ,进而由求出 αnew1 α 1 n e w

实际上,我们还必须考虑约束条件 0αiC,i=1,2  0 ≤ α i ≤ C , i = 1 , 2   ,因此考虑后得到:

αnew2=Hαnew,unc2LLαnew,unc2>HLαnew,unc2Hαnew,unc2<L         (9) α 2 n e w = { H L ≤ α 2 n e w , u n c > H α 2 n e w , u n c L ≤ α 2 n e w , u n c ≤ H L α 2 n e w , u n c < L                   ( 9 )

αnew1=αold1+y1y2(αold2αnew2)         (10) α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w )                   ( 10 )

注:

具体推导参考 李航《统计学习方法》或


经历了前两步,我们已经或得了新的 α1,α2 α 1 , α 2 的值,那么什么时候终止呢?这需要在设定的一个精度e下检验终止条件。

第三步,计算 bnew b n e w Enewi E i n e w ,方便下次选择变量.

在每次完成两个变量的优化之后,需要重新计算阈值 bnew b n e w 和差值 Enewi E i n e w

bnew1=E1y1K11(αnew1αold1)y2K21(αnew2αold2)+bold         (11) b 1 n e w = − E 1 − y 1 K 11 ( α 1 n e w − α 1 o l d ) − y 2 K 21 ( α 2 n e w − α 2 o l d ) + b o l d                   ( 11 )

bnew2=E2y1K12(αnew1αold1)y2K22(αnew2αold2)+bold         (12) b 2 n e w = − E 2 − y 1 K 12 ( α 1 n e w − α 1 o l d ) − y 2 K 22 ( α 2 n e w − α 2 o l d ) + b o l d                   ( 12 )

bnew=bnew1+bnew22         (13) b n e w = b 1 n e w + b 2 n e w 2                   ( 13 )

Enewi=SyjαjK(xi,xj)+bnewyi         (14) E i n e w = ∑ S y j α j K ( x i , x j ) + b n e w − y i                   ( 14 )

S指所有的支持向量集合。
注:

具体推导参考 李航《统计学习方法》或


第四步,在精度 e e 范围内检查是否满足如下的终止条件,如果满足则结束,返回最佳解α1new,α1new,否则转到第二步

i=1Nαiyi=0         (15) ∑ i = 1 N α i y i = 0                   ( 15 )

0αiC,i=1,2...N         (16) 0 ≤ α i ≤ C , i = 1 , 2... N                   ( 16 )

αnewi=0yig(xi)1         (17) α i n e w = 0 ⇒ y i g ( x i ) ≥ 1                   ( 17 )

0<αnewi<Cyig(xi)=1         (18) 0 < α i n e w < C ⇒ y i g ( x i ) = 1                   ( 18 )

αnewi=Cyig(xi)1         (19) α i n e w = C ⇒ y i g ( x i ) ≤ 1                   ( 19 )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值