Skip to content
Bo's Blog
Go back

CS229机器学习笔记(九)-SVM之SMO算法

课程信息: 主页 Youtube 相关阅读:

  1. 支持向量机系列-pluskid(强烈推荐)
  2. 支持向量机(四)-JerryLead(强烈推荐)
  3. 支持向量机(五)-JerryLead(强烈推荐)
  4. 斯坦福CS229机器学习课程笔记五:支持向量机 Support Vector Machines
  5. 核技法、软间隔分类器、SMO算法——斯坦福ML公开课笔记8
  6. 机器学习笔记

接上篇: CS229机器学习笔记(七)-SVM之软间隔

在将SMO之前, 我们先来看看什么是坐标上升法(coordinate ascent).

坐标上升

假设我们有如下的优化问题:

maxαW(α1,α2,...,αm).\mathop{max}_\alpha W(\alpha_1, \alpha_2, ... , \alpha_m).

先撇开SVM不谈, 这里的WWαi\alpha_i的一个函数. 我们前面已经看过了两种优化算法, 一种是梯度下降(gradient descent), 另一种是牛顿方法(Newton’s method). 现在我们所要说的是第三种优化算法, 坐标上升法(coordinate ascent): 上面是该算法的过程, 在内循环中, 每次固定除了第i个α\alpha, 即,将WW看成只关于第iiα\alpha的函数. 然后对第iiα\alpha进行优化, 然后依次对下一个α\alpha进行优化: 这里提一点, 优化α\alpha的顺序是可以改变的, 取决于你觉得下一次优化哪一个α\alpha会带来最大的进步. 相对其他优化算法来讲, 坐标上升需要更多的迭代次数来收敛. 但它的优点就是在于内循环的计算非常简单.

序列最小优化算法

SVM终于接近尾声了… 前面有一个问题一直没有解决, 就是如何求解这个优化问题: 这一节的标题序列最小优化算法(Sequential minimal optimazation)就是用来解决这个优化问题的. 刚才讲的coordinate ascend现在自然要用到啦. 在刚才讲的coordinate ascend中, 我们每次固定除了某一个变量之外的所有变量, 将优化目标看成仅仅是这一个没有固定变量的函数, 再对该变量进行优化. 在SVM中, 好像也可以直接这么用. 但是别忘了, SVM的优化是有约束条件的:

i=1mαiy(i)=0.\sum_{i=1}^m\alpha_iy^{(i)}=0.

有这个约束条件的存在, 我们就不可能改变其中一个而固定其他所有. 那该怎么办? 很简单, 在SVM中, 我们每次改变两个α\alpha, 固定其他所有的. 这个算法就叫SMO(sequential minimal optimazation)算法, 其中minimal指的就是每次改变2个α\alpha. 具体算法的过程如下: 1.选择两个变量αi\alpha_iαj\alpha_j, 2.固定其他所有变量, 将W(α)W(\alpha)看成仅是关于αi\alpha_iαj\alpha_j的函数对W(α)W(\alpha)进行优化 下面我们使用α1\alpha_1α2\alpha_2做一个具体的例子来看看. 由i=1mαiy(i)=0\sum_{i=1}^m\alpha_iy^{(i)}=0, 我们可以得到:

α1y(1)+α2y(2)=i=3mαiy(i).\alpha_1y^{(1)}+\alpha_2y^{(2)}=-\sum_{i=3}^m\alpha_iy^{(i)}.

我们令:

i=3mαiy(i)=ζ-\sum_{i=3}^m\alpha_iy^{(i)}=\zeta

即:

α1y(1)+α2y(2)=ζ\alpha_1y^{(1)}+\alpha_2y^{(2)}=\zeta

我们可以用下图画出α1\alpha_1α2\alpha_2的约束(注意不要忘了0αiC0\le\alpha_i\le C): α1y(1)+α2y(2)=ζ\alpha_1y^{(1)}+\alpha_2y^{(2)}=\zeta我们可以得到:

α1=ζα2y(2)y(1).\alpha_1 = \frac{\zeta-\alpha_2y^{(2)}}{y^{(1)}}.

这个时候, WW就可以写成:

W(α)=W(ζα2y(2)y(1),α2,...,αm).W(\alpha)=W(\frac{\zeta-\alpha_2y^{(2)}}{y^{(1)}}, \alpha_2, ..., \alpha_m).

前面也说了W(α)W(\alpha)是一个二次函数, 我们现在把WW看成仅仅是关于α2\alpha_2的函数的话, WW就变成了关于α2\alpha_2的一元二次函数, 这个时候求最值就很简单了.


Share this post on:

Previous Post
CS229机器学习笔记(八)-SVM之软间隔
Next Post
CS229机器学习笔记(七)-SVM之Kernels