SVM算法(三)(有监督学习)

五、SMO算法
  针对数据不完全线性可分的超平面,已将问题转化为下式(详情可参考SVM算法(二)):

这里写图片描述

  现在的问题是,针对要求的最小值方程和约束条件找到一组αi=(α12,…,αn)使得W(a)的值最小。最初的约束条件为:1−yi(Wxi+b)≤0。将其带入到优化问题中就有KKT条件:αi(1−yi(Wxi+b))=0。之前已分析过,αi≥0,而1−yi(Wxi+b)≤0,所以这两个式子中间至少有一个值为0。其中有一个值为0的原因如下:假设刚开始的超平面可以将一些点正确分类,此时这些样本点就不再起作用,分对的样本点肯定满足yi(Wxi+b)>1,同时满足αi(1−yi(Wxi+b))=0,所以αi=0。而对于未被正确分类的样本点,约束其满足1−yi(Wxi+b)=0,它们对应的αi不为0,至于是多少,需要看为正确分类的样本点在什么位置,如果位置偏离越大,αi就越大,这样才能将其拉回到更合理的超平面上。
  由上面的分析可知,对于数据不完全线性可分的情况,KKT条件应该如下:

这里写图片描述

  其中ui=(Wxi+b)。样本分类正确与否会决定αi的取值。
  在寻找超平面的过程中需要根据是否满足KKT条件来进行调整,不满足就说明需要调整,由上面KKT条件可知,不满足KKT条件的情况有下面三种:

这里写图片描述

  这三种情况下的α都需要进行调整。那么怎么调整呢?按照之前的分析需要从α中选取二个进行组合调整,假设调整α1
和α2。之前有个约束条件为:∑αiyi=0,所以可知:

这里写图片描述

  因为y1,y2是标签,要么1要么-1。而两个α>=0。所以新的α是有范围的。先假设现在y1=y2=1或−1,即两个值相等,以都为1为例,此时可得:

这里写图片描述

  因为α1new是在0-C之间,所以假设α1new=0,那么α2new可以取到最大值为ϵ,也就是α1old2old。而α2new又不能大于C,所以其最大取值为min(C,α1old2old)。同理如果α1new=C,那么α2new可以取到最小值为ϵ−C,也就是α1old2old−C,而α2new最小不能小于0,所以α2new的下限值就为max(0,α1old2old−C)。同理,可得当y1不等于y2,即一个为-1,一个为1时,可以得到其取值范围。最后的结果如下:

这里写图片描述

  下面对α2new的值进行求解,因为首先只考虑α1和α2,而原问题为:

这里写图片描述

  把这个式子乘开,把含有α1和α2单独拿出来,其它作为一块,原问题转化为:

这里写图片描述

  v是一个与α12,y1,y2有关的长式子,K是< x1∗x2 >的内积,最后面的式子跟α12没有关系,现在的想法是利用下式:

这里写图片描述

  将α1的值用α2来代替,然后带入W(α)将α1消除,此时W(α)中只含有α2,而其中含有的α1old和α2old是上一次迭代后的结果,是已知的。所以将W(α)对α2进行求解就可以解出α2new。最后的结果下图所示:

这里写图片描述

  求解得到的α2new是有限制范围的。求解得到α2new后再根据前面的式子,求得α1new。然后根据下式求得W的值:

这里写图片描述

  同理,可以利用yi(w∗x+b)−1=0这个等式求解b的值。求得的结果如下:

这里写图片描述

  可以看出每次更新会有两个b,那么该选择哪个呢?选择的标准为谁准选谁,那么怎么判断准不准呢?判断标准就是看哪个α在0-C之间,α在0-C之间就认为该超平面在分界线的边界上,可以作为支持向量,此时对应的b的值更加准确。当α都不在0-C之间,b的值取两者的平均值。评判标准如下:

这里写图片描述

  当更新完α1和α2,需要接着更新其它的α值,方法一样,两个两个更新,在这个时候需要分析如何高效地选择两个变量进行优化,使得目标函数下降的最快,这里用到的方法是启发式选择方法,要注意这里面更新的α的值都是不满足KKT条件的样本点。当所有的样本点都满足KKT条件就找到了最优的一组αi=(α12,…,αn)解。
  至此已经解决了数据不完全线性可分的问题,但是事情情况下还存在这线性不可分的问题,那此时该如何对非线性的样本进行处理呢?此时SVM算法是否还适应?答案是肯定的,SVM最强大的优势就是在于对非线性样本的处理和其处理的精准性。具体如何处理非线性数据请阅读下文SVM算法(四)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值