您的位置:首页 > 其它

【学习笔记】SVM算法-松弛变量和最优化条件

2015-02-27 12:10 639 查看
关于支持向量机,大神July在《理解SVM的三层境界》中已经做了非常详细的讲解。博客链接如下:

http://blog.csdn.net/v_july_v/article/details/7624837

在这篇文章其实是一遍学习笔记,我将基于S.S.Keerthi等人的文章《Improvements to Platt’s SMO Algorithm for SVM Classifier Design》,给出含有松弛变量SVM的具体推导过程以及最优化条件。

含有松弛变量的SVM模型

首先我们先回顾一下原始的SVM优化问题

min12||w||2s.t.yi(w⋅zi−b)≥1∀i=1,...,n

这里我们需要最大化超平面的距离2||w||,等价于最小化12||w||2. 其中yi∈{−1,1}表示点zi处于超平面的哪一边。



很多情况下我们无法构造能将数据分割的超平面。或者为了整体更好的结果,我们并不需要属于同一标签的点都严格处在超平面的同一边。此时我们就需要引入松弛变量ξi(≥0),它对应数据点zi允许偏离的functional margin量。如果ξi可以任意大的话,那么任何超平面都会符合条件。所以我们需要把ξi加入到目标函数中。

min12||w||2+C∑i=1nξis.t.yi(w⋅zi−b)≥1−ξi∀i=1,...,nξi≥0∀i=1,...,n

这个问题的Lagrangian函数是

L=12||w||2+C∑iξi+∑iαi[1−ξi−yi(w⋅zi−b)]−∑iπiξi

其中αi和πi是对应的Lagrangian算子,满足的KKT最优化条件是

▽wL=w−∑iαiyizi=0∂L∂b=∑iαiyi=0∂L∂ξi=C−αi−πi=0αi≥0αi[1−ξi−yi(w⋅zi−b)]=0πi≥0πiξi=0

我们定义w(α)=∑iαiyizi,通过把KKT条件带入目标函数我们可以得到

W(α)=12||w||2+C∑iξi+∑iαi[1−ξi−yi(w⋅zi−b)]−∑iπiξi=12w(α)⋅w(α)+∑i(C−αi−πi)ξi+∑iαi−∑iαiyiziw+∑iαiyib=12w(α)⋅w(α)+∑iαi−w(α)⋅w(α)=∑iαi−12w(α)⋅w(α)

根据Wolfe duality theory,αi可以通过对以下对偶问题求解得到

maxW(α)=∑iαi−12w(α)⋅w(α)s.t.0≤αi≤C,∑iαiyi=0

一旦αi得到,其他变量w,b,ξ和π都可以由之前的KKT条件计算得到。

最优化条件

下面我们要研究这个对偶问题的最优化条件。它的Lagrangian函数为

L¯=12w(α)⋅w(α)−∑iαi−∑iδiαi+∑iμi(αi−C)−β∑iαiyi

我们定义

Fi=w(α)⋅zi−yi=∑jαjyjzj⋅zi−yi=∑jαjyjk(xi,xj)−yi

KKT条件为

∂L¯∂αi=w(α)yizi−1−δi+μi−βyi=[w(α)zi−β]⋅yi−y2i−δi+μi=[w(α)zi−yi−β]⋅yi−δi+μi=(Fi−β)⋅yi−δi+μi=0δi≥0δiαi=0μi≥0μi(αi−C)=0

这些条件可以总结成以下三种情况:

Case 1. αi=0

δi≥0,μi=0⇒(Fi−β)yi≥0

Case 2. 0<αi<C

δi=0,μi=0⇒(Fi−β)yi=0

Case 3. αi=C

δi=0,μi≥0⇒(Fi−β)yi≤0

我们定义以下几个指标集合I0={i:0<αi<C},I1={i:yi=1,αi=0},I2={i:yi=−1,αi=C},I3={yi=1,αi=C},I4={i:yi=−1,αi=0}。这些指标集的设置都取决于α的值。运用这些指标集,我们可以将上面三种情况重写成

β≤Fi∀i∈I0∪I1∪I2;β≥Fi∀i∈I0∪I3∪I4

定义

bup=min{Fi:i∈I0∪I1∪I2}blow=max{Fi:i∈I0∪I3∪I4}

由此我们可以得到最优化条件是

blow≤bup

从反面来说就是对所有指标对(i,j),下面的冲突情况不会出现:

i∈I0∪I3∪I4,j∈I0∪I1∪I2andFi>Fji∈I0∪I1∪I2,j∈I0∪I3∪I4andFi<Fj

但是在编程解决时,我们不可能精确到达最优,所以我们需要定义近似最优化条件。之前的最优化条件可以改写为

blow≤bup+2τ

冲突情况可以改写为

i∈I0∪I3∪I4,j∈I0∪I1∪I2andFi>Fj+2τi∈I0∪I1∪I2,j∈I0∪I3∪I4andFi<Fj−2τ

最后我们将最优化条件写为存在β使得:

(Fi−β)yi≥−τ,ifαi=0|(Fi−β)|≤τ,if0<αi<C(Fi−β)yi≤τ,ifαi=C
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习