深入理解SVM,详解SMO算法

本文是机器学习专题关于SVM的第三十五篇文章,重点介绍了SMO(Sequential Minimal Optimization)算法。通过回顾SVM的软间隔二次规划问题,详细阐述了SMO算法的原理,包括其作为序列最小优化算法的核心思想,以及如何通过选取两个α变量来逐步优化,确保不破坏约束条件。文章还探讨了不同情况下的α取值范围,并展示了代入消元求解损失函数最小值的过程。
摘要由CSDN通过智能技术生成

今天是机器学习专题第35篇文章,我们继续SVM模型的原理,今天我们来讲解的是SMO算法。

公式回顾

在之前的文章当中我们对硬间隔以及软间隔问题都进行了分析和公式推导,我们发现软间隔和硬间隔的形式非常接近,只有少数几个参数不同。所以我们着重来看看软间隔的处理。

通过拉格朗日乘子法以及对原问题的对偶问题进行求解,我们得到了二次规划:

在这里插入图片描述

它应该满足的KTT条件如下:

在这里插入图片描述

也就是说我们要在这些条件下去求解(1)式的极值,在这个约束的情况下,虽然我们已经把式子化简成了只有一种参数 α \alpha α,但这个极值又应该怎么求呢?为了解决这个问题,我们需要引入一个新的算法,也是今天的文章的主要介绍的内容——SMO算法

SMO算法简介

SMO的全写是Sequential Minimal Optimization,翻译过来是序列最小优化算法。算法的核心思想是由于我们需要寻找的是一系列的 α \alpha α值使得(1)取极值,但问题是这一系列的值我们很难同时优化。所以SMO算法想出了一个非常天才的办法,把这一系列的 α \alpha α中的两个看成是变量,其它的全部固定看成是常数。

这里有一个问题是为什么我们要选择两个 α \alpha α看成是变量而不选一个呢?选一个不是更加简单吗?因为我们的约束条件当中有一条是 ∑ y i α i = 0 \sum y_i\alpha_i=0 yiαi=0,所以如果我们只选择一个 α \alpha α进行调整的话,那么显然会破坏这个约束。所以我们选择两个,其中一个变化,另外一个也随着变化,这样就可以保证不会破坏约束条件了。

为了方便叙述,我们默认选择的两个 α \alpha α分别是 α 1 , α 2 \alpha_1, \alpha_2 α1,α2。另外由于我们涉及 x i T x j x_i^Tx_j xiTxj的操作,我们令 K i j = x i T x j K_{ij}=x_i^Tx_j Kij=xiTxj。这样上面的(1)式可以写成:

在这里插入图片描述

其中由于 y 1 = ± 1 y_1 = \pm 1 y1=±1,所以 y i 2 = 1 y_i^2 = 1 yi2=1,上面的Constant表示除了 α 1 , α 2 \alpha_1, \alpha_2 α1,α2以外的常数项。我们假设 α 1 y 1 + α 2 y 2 = k \alpha_1y_1 + \alpha_2y_2 = k α1y1+α2y2=k,其中 α 1 , α 2 ∈ [ 0 , C ] \alpha_1, \alpha_2 \in [0, C] α1,α2[0,C],由于 y i y_i yi只有两个选项1或者-1,所以我们可以分情况讨论。

分情况讨论

首先我们讨论 y 1 y_1 y1 y 2 y_2 y2不同号时,无非两种,第一种情况是 α 1 − α 2 = k \alpha_1 - \alpha_2 = k α1α2=k,也就是 α 2 = α 1 − k \alpha_2 = \alpha_1 - k α2=α1k,我们假设此时k > 0,第二种情况是 α 2 = α 1 + k \alpha_2 = \alpha_1 + k α2=α

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值