解密SVM系列(三):SMO算法原理与实战求解

上节我们讨论到解SVM问题最终演化为求下列带约束条件的问题:

minW(α)=12(i,j=1Nαiyiαjyjxixj)i=1Nαis.t.0αiCi=1Nαiyi=0

问题的解就是找到一组 αi=(α1,α2,...,αn) 使得W最小。

现在我们来看看最初的约束条件是什么样子的:

1yi(Wxi+b)0

这是最初的一堆约束条件吧,现在有多少个约束条件就会有多少个 αi 。那么KKT条件的形成就是让
αi(1yi(Wxi+b))=0

我们知道 αi0 ,而后面那个小于等于0,所以他们中间至少有一个为0(至于为什么要这么做,第一节讨论过)。再简单说说原因,假设现在的分类问题如下:
这里写图片描述
某一次迭代后,分类面为粗蓝线所示,上下距离为1的分界面如细蓝线所示,而理想的分界面如紫虚线所示。那么我们想想,要想把粗蓝线变化到紫虚线,在这一次是哪些个点在起作用?很显然是界于细蓝线边上以及它们之间的所有样本点在起作用吧,而对于那些在细蓝线之外的点,比如正类的四个圈和反类的三个叉,它们在这一次的分类中就已经分对了,那还考虑它们干什么?所以这一次就不用考虑这些分对了的点。那么我们用数学公式可以看到,对于在这一次就分对了的点,它们满足什么关系,显然 yi(Wxi+b)>1 ,然后还得满足 αi(1yi(Wxi+b))=0 ,那么显然它们的 αi=0 。对于那些在边界内的点,显然 yi(Wxi+b)1 ,而这些点我们说是要为下一次达到更好的解做贡献的,那么我们就取这些约束条件的极限情况,也就是 yi(Wxi+b)=1 ,在这些极限约束条件下,我们就会得到一组新的权值W与b,也就是改善后的解。那么既然这些点的 yi(Wxi+b)=1 ,那它对应的 αi 就可以不为0了,至于是多少,那就看这些点具体属于分界面内的什么位置了,偏离的越狠的点,我想它对应的 αi 就越大,这样才能把这个偏得非常狠的点给拉回来,或者说使其在下一次的解中更靠近正确的分类面。

好了这就是KKT为什么要这么做的原因。那么整理一下,最终带松弛变量的KKT条件就如下所示:

(1)αi=0yiui1()(2)0αiCyiui=1()(3)αi=Cyiui1()

那么满足KKT条件的,我们说如果一个点满足KKT条件,那么它就不需要调整,一旦不满足,就需要调整。由上可知,不满足KKT条件的也有三种情况:
(1)yiui1αi<C(2)yiui1αi>0(3)yiui1αi=0αi=C

这三种条件下的 α 都需要调整。那么怎么调整呢?比如说某一次迭代完后发现有10个点不满足,也就是有10个 α 需要调整,那么10个 α 在一起,你怎么知道去增加或者减少哪一个或者哪几个 α 呢?这个时候SMO采取的策略是选择这10个中的两个 α 出来,就假设为 α1,α2 吧,调整它们。看看前面有一个条件 Ni=1
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值