SVM支持向量机及SMO算法总结

1 篇文章 0 订阅
1 篇文章 0 订阅

之所以写这篇文章,主要是因为SVM和SMO的算法看了很多遍才看懂,现在网络上也有很多相关的资料,这篇文章主要是记录自己的学习过程,集中在后面的证明求解过程。初学者建议先看底下的参考资料,把相关概念弄清楚了之后,如果在看论文过程中有疑惑的,可以过来看没看有没有参考的地方。

首先对于SVM(support vector machine)的理解为:寻找一个超分类平面,把不同分类的数据分隔开,且两边的最小间距最大。

这里写图片描述

函数间距与几何间距:

在Andrew Ng的材料中,涉及到两个间距的概念:函数间距与几何间距。

函数间距的定义: γ^(i)=y(i)(wTx+b) γ ^ ( i ) = y ( i ) ( w T x + b ) , 当 w w b成比例变化,函数间距也成比例变化

几何间距的定义: γ(i)=y(i)(wTx+b)||w|| γ ( i ) = y ( i ) ( w T x + b ) | | w | | , 当 w w b成比例变化,几何间距不变

最大化间距

SVM目标是最大化最小几何间距,故有:

最小几何间距: γ=mini=1,..,mγ(i) γ = min i = 1 , . . , m γ ( i )

maxγ,w,b     γ max γ , w , b           γ

s.t.        y(i)(wTx+b)γ,i=1,...,m s . t .                 y ( i ) ( w T x + b ) ≥ γ , i = 1 , . . . , m

               ||w||=1                               | | w | | = 1

第一个限制条件保证所有例子的函数间距大于我们的最小几何间距 γ γ ||w||=1 | | w | | = 1 保证了函数间距和几何间距等价。

由于该式子比较难求解,故我们可以考虑转换一下上式为:

maxγ,w,b    γ^||w|| max γ , w , b         γ ^ | | w | |

s.t.        y(i)(wTx+b)γ^,i=1,...,m s . t .                 y ( i ) ( w T x + b ) ≥ γ ^ , i = 1 , . . . , m

考虑到函数间距与 w w b成比例变化,故成比例变化 w w b不影响该最大式子,故可以考虑令 γ^=1 γ ^ = 1

原式可变为:

maxw,b     1||w|| max w , b           1 | | w | |

s.t.        y(i)(wTx+b)1,i=1,...,m s . t .                 y ( i ) ( w T x + b ) ≥ 1 , i = 1 , . . . , m

最后该式子等价为:

minw,b     12||w||2 min w , b           1 2 | | w | | 2

s.t.        y(i)(wTx+b)1,i=1,...,m s . t .                 y ( i ) ( w T x + b ) ≥ 1 , i = 1 , . . . , m

拉格朗日对偶

上面已经列出了我们需要求解 w w b的式子,但是由于涉及到限制条件,很难直接求解。这时候就需要我们的朗格朗日乘子和朗格朗日对偶问题的知识了。

对于一般式子:

minw   f(w) m i n w       f ( w )

s.t.   gi(w)0,i=1,...,k s . t .       g i ( w ) ≤ 0 , i = 1 , . . . , k

          hi(w)=0,i=1,...,k                     h i ( w ) = 0 , i = 1 , . . . , k

L(w,α,β)=f(w)+i=1kαigi(w)+i=1lβihi(w) L ( w , α , β ) = f ( w ) + ∑ i = 1 k α i g i ( w ) + ∑ i = 1 l β i h i ( w ) , 该式子称为拉格朗日函数

在满足原式子的限制条件下有: maxα,β:α0L(w,α,β)=f(w) max α , β : α ≥ 0 L ( w , α , β ) = f ( w )

又有以下对偶式子:

maxα,β:α0minwL(w,α,β)minwmaxα,β:α0L(w,α,β)=minwf(w) max α , β : α ≥ 0 min w L ( w , α , β ) ≤ min w max α , β : α ≥ 0 L ( w , α , β ) = min w f ( w )

当满足一定条件下时, 我们有该等式成立。该条件称为KKT:

wiL(w,α,β)=0,i=1,...,n ∂ ∂ w i L ( w , α , β ) = 0 , i = 1 , . . . , n

βiL(w,α,β)=0,i=1,...,l ∂ ∂ β i L ( w , α , β ) = 0 , i = 1 , . . . , l

αigi(w)=0,i=1,...k α i g i ( w ) = 0 , i = 1 , . . . k

gi(w)0,i=1,...k g i ( w ) ≤ 0 , i = 1 , . . . k

αi0,i=1,...k α i ≥ 0 , i = 1 , . . . k

在满足以上KKT条件下,原来求 f(w) f ( w ) 在限制条件下的最小值就可以等价转换为求 maxα,β:α0minwL(w,α,β) max α , β : α ≥ 0 min w L ( w , α , β )

应用拉格朗日求解最小间隙最大值

构造朗格朗日函数:

L(w,b,α)=12||w||2+i=1mαi(1y(i)(wTx(i)+b)) L ( w , b , α ) = 1 2 | | w | | 2 + ∑ i = 1 m α i ( 1 − y ( i ) ( w T x ( i ) + b ) )

根据KKT条件有:

wL=0 ∂ ∂ w L = 0

bL=0 ∂ ∂ b L = 0

得到以下结果:

w=i=1mαiy(i)x(i) w = ∑ i = 1 m α i y ( i ) x ( i )

i=1mαiy(i)=0 ∑ i = 1 m α i y ( i ) = 0

以上结果回代入拉格朗日函数得到:

L(w,b,α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j) L ( w , b , α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j )

故原式子可等价为:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)> max α         W ( α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j < ( x ( i ) ) , x ( j ) >

s.t.      αi0,i=1,...m s . t .             α i ≥ 0 , i = 1 , . . . m

             i=1mαiy(i)=0                           ∑ i = 1 m α i y ( i ) = 0

<(x(i)),x(j)> < ( x ( i ) ) , x ( j ) > <script type="math/tex" id="MathJax-Element-172"><(x^{(i)}),x^{(j)}></script>表示两个向量的内积. 实际上,可以用核函数来表示两个向量的相似度,这样,我们的SVM模型就可以应用在一些非线性可分的问题上。

正则化及不可分情形讨论

实际上的问题经常是,我们无法找到一个线性可分的超分类平面,这样,我们之前的限制条件是无法被满足的。那么前面做的这么多工作都只能应用于可分的情况吗?

之前我们的限制条件是非常严格的 y(i)(wTx+b)1 y ( i ) ( w T x + b ) ≥ 1 , 但是我们可以考虑加入一些松弛变量 ζ ζ 来打破这种情况,同时对于这种情况要加一些惩罚条件,故原先的式子可改写成:

minw,b     12||w||2+Ci=1mζi min w , b           1 2 | | w | | 2 + C ∑ i = 1 m ζ i

s.t.        y(i)(wTx+b)1ζi,i=1,...,m s . t .                 y ( i ) ( w T x + b ) ≥ 1 − ζ i , i = 1 , . . . , m

               ζi0,i=1,...,m                               ζ i ≥ 0 , i = 1 , . . . , m

还是构造拉格朗日函数:

L(w,b,α)=12||w||2+Ci=1mζi+i=1mαi(1ζiy(i)(wTx(i)+b))+i=1mri(ζi) L ( w , b , α ) = 1 2 | | w | | 2 + C ∑ i = 1 m ζ i + ∑ i = 1 m α i ( 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ) + ∑ i = 1 m r i ( − ζ i )

w w , b, ζ ζ 分别对 L L 偏导可以得到:

w=i=1mαiy(i)x(i) w = ∑ i = 1 m α i y ( i ) x ( i )

b=i=1mαiy(i)=0 b = − ∑ i = 1 m α i y ( i ) = 0

Cαiri=0,i=1,..,m C − α i − r i = 0 , i = 1 , . . , m

由于 ri0 r i ≥ 0 , αi0 α i ≥ 0

故由 Cαiri=0,i=1,..,m C − α i − r i = 0 , i = 1 , . . , m 可得 0αiC,i=1,...,m 0 ≤ α i ≤ C , i = 1 , . . . , m

w w , b回代回去,原式子可以等价为:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)> max α         W ( α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j < ( x ( i ) ) , x ( j ) >

s.t.       0αiC,i=1,...m s . t .               0 ≤ α i ≤ C , i = 1 , . . . m

             i=1mαiy(i)=0                           ∑ i = 1 m α i y ( i ) = 0

且再次检查KKT条件,有:

αi(1ζiy(i)(wTx(i)+b))=0 α i ( 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ) = 0

1ζiy(i)(wTx(i)+b)0 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ≤ 0

ri(ζi)=0 r i ( − ζ i ) = 0

ζi0 − ζ i ≤ 0

ζi0 ζ i ≥ 0

αi0 α i ≥ 0

αi α i 进行讨论(由KKT条件)有:

αi=0y(i)(wTx(i)+b)1 α i = 0 ⇒ y ( i ) ( w T x ( i ) + b ) ≥ 1

αi=Cy(i)(wTx(i)+b)1 α i = C ⇒ y ( i ) ( w T x ( i ) + b ) ≤ 1

0αiCy(i)(wTx(i)+b)=1 0 ≤ α i ≤ C ⇒ y ( i ) ( w T x ( i ) + b ) = 1

SMO优化

前面已经做了很多工作,现在目标函数已经有了. 接下来就是需要 α α 使得我们的目标函数取到最大值。参考资料中的SMO论文求目标函数的最小值:

minα  Ψ(α)=minα12i,j=1my(i)y(j)αiαjK(x(i),x(j))i=1mαi min α     Ψ ( α ) = min α 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j K ( x ( i ) , x ( j ) ) − ∑ i = 1 m α i

s.t.       0αiC,i=1,...m s . t .               0 ≤ α i ≤ C , i = 1 , . . . m

             i=1mαiy(i)=0                           ∑ i = 1 m α i y ( i ) = 0

取出一对 α1,α2 α 1 , α 2 我们有 α1y(1)+α2y(2)=k=i=3mαiy(i) α 1 y ( 1 ) + α 2 y ( 2 ) = k = − ∑ i = 3 m α i y ( i ) 故有如下图关系


这里写图片描述

分两种情况讨论: y1,y2 y 1 , y 2 不同号以及 y1,y2 y 1 , y 2 同号

其中对应的 α2 α 2 的边界为:

  1. 同号情况: L=max(0,α2α1),H=min(C,C+α2α1) L = m a x ( 0 , α 2 − α 1 ) , H = m i n ( C , C + α 2 − α 1 )
  2. 异号: L=max(0,α2+α1C),H=min(C,α2+α1) L = m a x ( 0 , α 2 + α 1 − C ) , H = m i n ( C , α 2 + α 1 )

化简目标函数,把 α1,α2 α 1 , α 2 提取出来:

s=y1y2,Kij=K(xi,xj) s = y 1 y 2 , K i j = K ( x i , x j )

Ψ(α)=12α21K11+12α22K22+sα1α2K12α1α2+y1α1v1+y2α2v2+Ψconst Ψ ( α ) = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + s α 1 α 2 K 12 − α 1 − α 2 + y 1 α 1 v 1 + y 2 α 2 v 2 + Ψ c o n s t

其中有:

vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i v i = ∑ j = 3 m α j ∗ y j K i j = u i + b ∗ − y 1 α 1 ∗ K 1 i − y 2 α 2 ∗ K 2 i ( α1 α 1 ∗ 表示旧的值)

则有 α1+sα2=y1i=3mαiyi=α1+sα2=t α 1 + s α 2 = − y 1 ∑ i = 3 m α i y i = α 1 ∗ + s α 2 ∗ = t

α1=tsα2 α 1 = t − s α 2 代入目标函数有:

Ψ(α)=12(tsα2)2K11+12α22K22+s(tsα2)α2K12(tα2)α2+y1(tsα2)v1+y2α2v2+Ψconst Ψ ( α ) = 1 2 ( t − s α 2 ) 2 K 11 + 1 2 α 2 2 K 22 + s ( t − s α 2 ) α 2 K 12 − ( t − α 2 ) − α 2 + y 1 ( t − s α 2 ) v 1 + y 2 α 2 v 2 + Ψ c o n s t

目标函数对 α2 α 2 求导并令其为0:

α2Ψ(α)=α2(K11+K222K12)st(K11K12)y2(v1v2)+s1=0 ∂ ∂ α 2 Ψ ( α ) = α 2 ( K 11 + K 22 − 2 K 12 ) − s t ( K 11 − K 12 ) − y 2 ( v 1 − v 2 ) + s − 1 = 0

t=α1+sα2,vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i t = α 1 ∗ + s α 2 ∗ , v i = ∑ j = 3 m α j ∗ y j K i j = u i + b ∗ − y 1 α 1 ∗ K 1 i − y 2 α 2 ∗ K 2 i 代入上式得:

α2(K11+K222K12)=α2(K11+K222K12)+y2(u1u2+y2y1) α 2 ( K 11 + K 22 − 2 K 12 ) = α 2 ∗ ( K 11 + K 22 − 2 K 12 ) + y 2 ( u 1 − u 2 + y 2 − y 1 )

目标函数对 α2 α 2 进行二次求导有:

2α2Ψ(α)=η=K11+K222K12 ∂ ∂ 2 α 2 Ψ ( α ) = η = K 11 + K 22 − 2 K 12

  1. η>0 η > 0 有:

    αnew2=α2+y2(E1E2)η α 2 n e w = α 2 ∗ + y 2 ( E 1 − E 2 ) η

    这里写图片描述

    αnew1=α1+s(α2αnew,clipped2) α 1 n e w = α 1 + s ( α 2 − α 2 n e w , c l i p p e d )

  2. η0 η ≤ 0 有, 此时易知 α2 α 2 取到边界时,目标函数最小:

    f1=y1(E1+b)α1K11sα2K12, f 1 = y 1 ( E 1 + b ) − α 1 K 11 − s α 2 K 12 ,

    f2=y2(E2+b)sα1K12α2K22, f 2 = y 2 ( E 2 + b ) − s α 1 K 12 − α 2 K 22 ,

    L1=α1+s(α2L) L 1 = α 1 + s ( α 2 − L )

    H1=α1+s(α2H) H 1 = α 1 + s ( α 2 − H )

    ΨL=L1f1+Lf2+12L21K11+12L2K22+sLL1K12 Ψ L = L 1 f 1 + L f 2 + 1 2 L 1 2 K 11 + 1 2 L 2 K 22 + s L L 1 K 12

    ΨH=H1f1+Hf2+12H21K11+12H2K22+sHH1K12 Ψ H = H 1 f 1 + H f 2 + 1 2 H 1 2 K 11 + 1 2 H 2 K 22 + s H H 1 K 12

    对比 ΨL,ΨH Ψ L , Ψ H , 取值较小的那个

  3. 每次更新完 α α 后都需要更新b值:

    α1 α 1 不在界上时:

    bnew=b1=E1+y1(αnew1α1)K11+y2(αnew,clipped2α2)K12+b b n e w = b 1 = E 1 + y 1 ( α 1 n e w − α 1 ) K 11 + y 2 ( α 2 n e w , c l i p p e d − α 2 ) K 12 + b

    α2 α 2 不在界上时:

    bnew=b2=E2+y1(αnew1α1)K12+y2(αnew,clipped2α2)K22+b b n e w = b 2 = E 2 + y 1 ( α 1 n e w − α 1 ) K 12 + y 2 ( α 2 n e w , c l i p p e d − α 2 ) K 22 + b

    当双方都在界上时:

    b=b1+b22 b = b 1 + b 2 2

推荐相关参考资料:

  1. Andrew Ng在网易公开课的课堂资料,其中part V涉及到SVM. http://cimg3.163.com/edu/open/ocw/jiqixuexikecheng.zip

  2. John Platt的SMO论文. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/smo-book.pdf

  3. JerryLead的博客. http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html#undefined

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值