SMO算法详解

SMO要解决的问题是什么?经过漫长的探索,我们建立了SVM模型,但是这个模型中还剩下一个未知参数需要求解,SMO就是求解这个参数的一种高效的方法。我们需要解决的终极问题是:max⁡α∑i=1nαi−12∑i=1n∑j=1nαiαjyiyj⟨xiTxj⟩\max \limits_{α}∑^n_{i=1}α_i−\dfrac{1}{2}∑^n_{i=1}∑^n_{j=1}α_iα_jy_iy_j...
摘要由CSDN通过智能技术生成

SMO要解决的问题是什么?

经过漫长的探索,我们建立了SVM模型,但是这个模型中还剩下一个未知参数需要求解,SMO就是求解这个参数的一种高效的方法

我们需要解决的终极问题是:
max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ⟨ x i T x j ⟩ \max \limits_{α}∑^n_{i=1}α_i−\dfrac{1}{2}∑^n_{i=1}∑^n_{j=1}α_iα_jy_iy_j⟨x^T_ix_j⟩ αmaxi=1nαi21i=1nj=1nαiαjyiyjxiTxj

s . t . 0 ≤ α i ≤ C i = 1 , . . . . , n s.t.\quad 0≤α_i≤C \quad i=1,....,n s.t.0αiCi=1,....,n

∑ i = 1 n α i y i = 0 ∑^n_{i=1}α_iy_i=0 i=1nαiyi=0

我们做一个简单的变形,上述问题等价于:
min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ⟨ x i T x j ⟩ − ∑ i = 1 n α i \min \limits_{\alpha} \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n\alpha_i \alpha_j y_i y_j \langle {x_i^T x_j} \rangle - \sum_{i=1}^n \alpha_i αmin21i=1nj=1nαiαjyiyjxiTxji=1nαi

s . t . 0 ≤ α i ≤ C i = 1 , . . . , n s.t. \qquad 0 \leq \alpha_i \leq C \quad i=1,...,n s.t.0αiCi=1,...,n

∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1nαiyi=0

这就是我们要最终想要解决的问题,后面所有的努力,都是为了寻找一个满足约束条件的
α = [ α 1 , . . . , α n ] \alpha=[\alpha_1,...,\alpha_n] α=[α1,...,αn]

让我的目标函数最小。

SMO解决问题的思路是什么?

作为一个普通人,看到这个问题,实在是太复杂了,因为 α \alpha α其实并不是一个变量,而是n个,而且这个n个之间还互相有约束,实在让人费解。

我们不妨回到问题的开始,求解 α \alpha α的目的何在?
当然是为了求 w w w b b b,这样我的最优超平面就求出来了,SVM模型也最终完整的建立起来了!

我们现在假设已经找到了这样的 α \alpha α
那我的 w w w b b b也就随之确定。

那我的最优分离超平面也就确定了:

f ( x i ) = w x + b f(x_i) = wx +b f(xi)=wx+b

求出的这个最优分离超平面和 α \alpha α又有什么关系呢?

既然现在得到的是最优的分离超平面,那就应该满足当初求解过程中的一系列约束条件,也就是肯定满足KKT条件。

根据KKT条件,可以得到如下关系。若对此有疑问可以参考另一篇文章,拉格朗日对偶和KKT条件详解。
y i f ( x i ) = { ≥ 1 α i = 0 ⇒ x i 在边界内,正确分类 = 1 0 < α i < C ⇒ x i 在边界上,是支持向量 ≤ 1 α i = C ⇒ x i 在两条边界之间 y_if(x_i)= \begin{cases} \geq 1 & \alpha_i=0 \Rightarrow x_i \text{在边界内,正确分类}\\ =1& 0<\alpha_i<C \Rightarrow x_i \text{在边界上,是支持向量}\\ \leq 1 & \alpha_i=C \Rightarrow x_i \text{在两条边界之间} \end{cases} yif(xi)=1=11αi=0xi在边界内,正确分类0<αi<Cxi在边界上,是支持向量αi=Cxi在两条边界之间

反过来想我们求解出来的 α i \alpha_i αi和对应的 x i x_i xi也必须满足这样的关系式才是正确的。
我们在求解 α \alpha α的过程中也必须要朝着这样的目标去思考。

同时求解的过程中 α \alpha α也必须满足它的初始的限制条件:

∑ i = 1 n y i α i = 0 \sum_{i=1}^n y_i \alpha_i = 0 i=1nyiαi=0

0 ≤ α i ≤ C , i = 1 , . . . , n 0 \leq \alpha_i \leq C,i=1,...,n 0αiC,i=1,...,n

现在我们的思路就非常清晰了!

我们可以初始化一个 α \alpha α然后不断的优化,直到满足上述条件,这里我们把这个条件暂且称为目标条件。

现在的问题在于我们如何具体优化 α \alpha α呢?

α = [ α 1 , . . . , α n ] \alpha=[\alpha_1,...,\alpha_n] α=[α1,...,αn]这里有n个 α \alpha α

1.我每次该选择几个 α \alpha α来进行优化呢?

最简单的思考,我们选择1个来进行优化。

但是不要忘了我们的约束条件: ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i=0 i=1nαiyi=0

如果我们只选择一个,假设选择 α 1 \alpha_1 α1来进行优化,此时剩余的 α \alpha α被视为是确定的常数。

由于约束条件,所以: α 1 y 1 = − ∑ i = 2 n α i y i \alpha_1 y_1 = - \sum_{i=2}^n \alpha_iy_i α1y1=i=2nαiyi

这样根本就没有优化的必要了啊,等式左边的值是确定的,右边的值也确定了。

所以,我们每次选择两个 α \alpha α来进行优化,把剩余的 α \alpha α被视为是确定的常数,就可以避免上述问题!此时这两个 α \alpha α满足下列的关系式:

α 1 y 1 + α 2 y 2 = − ∑ i = 3 n α i y i = ζ \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^n \alpha_iy_i=\zeta α1y1+α2y2=i=3nαiyi=ζ

现在我每次优化的对象就只有两个变量啊,这样一来问题简单了很多。

现在更神奇的事情是, α 1 \alpha_1 α1 α 2 \alpha_2 α2满足一个等式,我完全可以再简化一点啊,用其中的一个变量来表示另外一个。

α 1 = ζ − α 2 y 2 y 1 \alpha_1 = \frac{\zeta - \alpha_2 y_2}{y_1} α1=y1ζα2y2

因为y的取值只能是+1和-1,上式可以写成:

α 1 = ( ζ − α 2 y 2 ) y 1 \alpha_1 = (\zeta - \alpha_2 y_2)y_1 α1=(ζα2y2)y1

现在有没有一种柳暗花明的感觉?只要我找到一个 α 2 \alpha_2 α2进行优化,并且求出优化后的值,那我的 α 1 \alpha_1 α1也就随之进行了优化。

2.我开始的时候该选择哪个 α \alpha α作为我的 α 2 \alpha_2 α2来进行优化呢?

这时候又思考,我们为什么要优化 α \alpha α
是因为我们想让它满足上述的目标条件。
那开始肯定大多 α \alpha α都不满足。

很明显了,从效果上的考虑,我应该优先选择那些违反目标条件最多的,最不满足目标条件的 α \alpha α来进行优化!

同时,我们还可以从另一个角度来考虑。

我们希望优化后的 α \alpha α都能满足目标条件,但是优化几次才能满足目标条件呢?当然是想尽可能少的次数就让它满足目标条件!

因此我希望挑选出来的 α 2 \alpha_2 α2每一次优化后,它不满足目标条件的程度应该尽可能减少,自身应该有更多的改变!

有没有一个具体的标准来衡量这种改变呢?

这里直接给出标准,暂不讨论为什么。

我们定义一个误差:

E i = f ( x i ) − y i E_i = f(x_i) - y_i Ei=f(xi)yi

我们发现:

∣ E 1 − E 2 ∣ |E_1 - E_2| E1E2

越大,优化后的 α \alpha α改变就越大。

现在又有一个问题,我如何保证优化后的 α \alpha α就一定是朝着不满足目标条件的程度能减少的方向发展呢?有什么方法可以来判断我的方向正确性呢?

我们现在把目光放在最开始的目标,我们做的一切的一切都是为了最开始的那个目标!

min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ⟨ x i T x j ⟩ − ∑ i = 1 n α i \min \limits_{\alpha} \frac{1}{2} \sum_{i=1}^n\sum_{j=1}^n \alpha_i \alpha_j y_i y_j \langle {x_i^T x_j} \rangle - \sum_{i=1}^n \alpha_i αmin21i=1nj=1nαiαjyiyjxiTxji=1nαi

s . t . 0 ≤ α i ≤ C i = 1 , . . . , n s.t. \qquad 0 \leq \alpha_i \leq C \quad i=1,...,n s.t.0αiCi=1,...,n

∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1nαiyi=0

目标是求最小值!

那现在虽然我不知道怎样优化α1、α2,让它们对应的样本违反g(x)目标条件变轻,但是我可以让它们优化后目标函数的值变小啊!使目标函数变小,肯定是朝着正确的方向优化!也就肯定是朝着使违反g(x)目标条件变轻的方向优化,二者是一致的!!

那现在,我们把 α 1 \alpha_1 α1 α 2 \alpha_2 α2看作变量,其余都看作常数。

把上面的式子展开,发现其实是一个的二次函数优化问题。

min ⁡ α 1 α 2 W ( α 1 α 2 ) = m α 1 2 + n α 2 2 + k α 1 α 2 + q α 1 + p α 2 \min \limits_{\alpha_1 \alpha_2} W(\alpha_1 \alpha_2) = m \alpha_1^2 + n \alpha_2^2 + k\alpha_1 \alpha_2 + q\alpha_1 + p\alpha_2 α1α2minW(α1α2)=mα12+nα22+kα1α2+qα1+pα2

其中:

y 1 α 1 + y 2 α 2 = ζ y_1 \alpha_1 + y_2 \alpha_2 = \zeta y1α1+y2α2=ζ

0 ≤ α 1 ≤ C , 0 ≤ α 2 ≤ C 0\leq \alpha_1 \leq C, 0 \leq \alpha_2 \leq C 0α1C,0α2C

那解这个问题就很简单了,通过等式
α 1 = ( ζ − α 2 y 2 ) y 1 \alpha_1 = (\zeta - \alpha_2 y_2)y_1 α1=(ζα2y2)y1

可以进一步的把上述问题化简为一个只关于

  • 36
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值