机器学习之SMO算法

SMO算法

什么是SMO算法

SMO(Sequential Minmal Optimization)序列最小化算法,是一种对SVM的高效的优化算法。

坐标上升法

在SMO算法之前,还是需要总结下坐标上升算法Coordinate Ascent),因为SMO算法的思想与坐标上升算法的思想类似。

Content:

坐标上升算法每次通过更新多元函数中的一维,经过多次迭代直到收敛来达到优化函数的目的。简单的讲就是不断地选中一个变量做一维最优化直到函数达到局部最优点。

img

也就是说,每次只对一个维度进行调整,从而使目标函数在这一维度的范围内达到最优(局部)。

举个例子:

如果我们要优化一个二元函数:
arg minf(x_1, x_2) = -x_1^2-3x_2^2+2x_1x_2+6
我们先给一个初值(x_1, x_2),然后开始迭代

  1. 我们先固定住x_1, 对x_2求偏导,等于零来得到相对最小值:
    $$
    \frac{\partial f}{\partial x_1} = -2x_1 + 2x_2 = 0\

    x_1 = x_2
    $$

  2. 然后,固定x_2, 对x_1求偏导,等于零:
    \frac{\partial f}{\partial x_2} = -6x_2 + 2x_1 = 0\\ x_2 = \frac{1}{3}x_1

  3. 持续迭代,直至收敛

通过下面的图就可以看出,优化的过程,因为每次只优化一个变量,每次迭代的方向都是沿着坐标轴方向的。

img

因为每次只是做一维优化,所以每个循环中的优化过程的效率是很高的, 但是迭代的次数会比较多。

SMO算法

SMO的思想类似坐标上升算法,我们需要优化一系列的α的值,我们每次选择尽量少的 \alpha来优化,不断迭代直到函数收敛到最优值。

但是怎么证明他的正确性:

因为最优解一定满足KKT条件,所以,我们只需要让所有的样本都满足KKT条件,我们就一定可以找到最优解.

我们回到SVM的对偶问题上:
max \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Ny_iy_j\alpha_i\alpha_j<x_i,x_j>\\ s.t.\quad \alpha_i\geq0,\sum_{i=1}^N\alpha_iy_i = 0
看到求和符号,我们知道如果我们要直接优化的话,我们需要优化\alpha_1,\alpha_2,\alpha_3...\alpha_n​,n个变量,但是我们使用platt提出的SMO算法我们可以高效的求解上面的对偶问题,SMO把N个规划问题分解成多个二次规划算法求解,每个子问题只需要求解两个参数,节省了时间成本。

但是,与坐标上升法不同的是:

我们在SMO算法中我们每次需要选择一对变量(\alpha_i, \alpha_j)。而且SVM中我们的\alpha并不是独立的,因为具有约束的:
\sum_{i=1}^N\alpha_iy_i = 0
所以,一个\alpha​ 改变,另一个也要随之变化以满足条件。
W(\alpha_{1}, \alpha_{2}) = \alpha_{1} + \alpha_{2} - \frac{1}{2}K_{1,1}y_{1}^{2}\alpha_{1}^{2} - \frac{1}{2}K_{2,2}y_{2}^{2}\alpha_{2}^{2} - K_{1,2}y_{1}y_{2}\alpha_{1}\alpha_{2} - y_{1}\alpha_{1}\sum_{i=3}^{N}\alpha_{i}y_{i}K_{i,1} - y_{2}\alpha_{2}\sum_{i=3}^{N}\alpha_{i}y_{i}K_{i, 2} + C
于是就变成了一个二元函数的优化:
arg \max \limits_{\alpha_{1}, \alpha_{2}} W(\alpha_{1}, \alpha_{2})

然后,根据我们之前的约束条件,我们可以将这个二元函数在转换成一元函数:
s.t.\quad\sum^N_{i=0}y_i\alpha_i = 0\\ \alpha_1y_1+\alpha_2y_2 = -\sum^N_{i=3}y_i\alpha_i = \zeta\\ \alpha_1 = \zeta y_i - \alpha_2y_2\\ W(\alpha_1,\alpha_2) = W(\alpha_2)
这里为了方便表示,设:
v_1 = \sum^N_{i=3}\alpha_iy_ik_{i,1}\\ v_2 = \sum^N_{i=3}\alpha_jy_jk_{1,j}
同时带入,得:
W(\alpha_{2}) = -\frac{1}{2}K_{1, 1}(\zeta - \alpha_{2}y_{2})^{2} - \frac{1}{2}K_{2, 2}\alpha_{2}^{2} - y_{2}(\zeta - \alpha_{2}y_{2})\alpha_{2}K_{1, 2} - v_{1}(\zeta - \alpha_{2}y_{2}) - v_{2}y_{2}\alpha_{2} + \alpha_{1} + \alpha_{2} + C
然后,求导,等于0:
\frac{\partial{W(\alpha_{2})}}{\partial{\alpha_{2}}} = -(K_{1, 1} + K_{2, 2} - 2K_{1, 2})\alpha_{2} + K_{1, 1}\zeta y_{2} - K_{1, 2}\zeta y_{2} + v_{1}y_{2} - v_{2}y_{2} - y_{1}y_{2} + y_{2}^{2} = 0
变化成迭代形式:
f(x) = \sum_{i=1}^{N}\alpha_{i}y_{i} K(x_{i}, x) + b\\ v_{1} = \sum_{i=3}^{N}\alpha_{i}y_{i}K_{1, i} = f(x_{1}) - \alpha_{1}y_{1}K_{1, 1} - \alpha_{2}y_{2}K_{1, 2} - b\\ v_{2} = \sum_{i=3}^{N}\alpha_{i}y_{i}K_{2, i} = f(x_{2}) - \alpha_{1}y_{1}K_{1, 2} - \alpha_{2}y_{2}K_{2, 2} - b\\ v_{1} - v_{2} = f(x_{1}) - f(x_{2}) - K_{1, 1}\zeta + K_{1, 2}\zeta + (K_{1, 1} + K_{2, 2} - 2K_{1, 2})\alpha_{2}y_{2}\\ \frac{\partial{W(\alpha_{2})}}{\partial{\alpha_{2}}} = -(K_{1, 1}) + K_{2, 2} - 2K_{1, 2})\alpha_{2}^{new} +(K_{1, 1}) + K_{2, 2} - 2K_{1, 2})\alpha_{2}^{old} + y_{2}\left[ y_{2} - y_{1} + f(x_{1}) - f(x_{2}) \right]\\ E_{i} = f(x_{i}) - y_{i}\\ \eta = K_{1, 1} + K_{2, 2} - 2K_{1, 2}\\ \frac{\partial{W(\alpha_{2})}}{\partial{\alpha_{2}}} = -\eta \alpha_{2}^{new} + \eta \alpha_{2}^{old} + y_{2}(E_{1} - E_{2}) = 0\\ \alpha_{2}^{new} = \alpha_{2}^{old} + \frac{y_{2}(E_{1} - E_{2})}{\eta}
但是,显然我们没有考虑约束条件,所以:
s.t.\quad \alpha_{1}y_{1} + \alpha_{2}y_{2} = -\sum_{i=3}^{N}\alpha_{i}y_{i} = \zeta\\ 0\leq a_i\leq C

img

这个约束条件就是方形约束,这个是SMO论文中的图,但是,我第一次看看的是一脸懵逼。这里,我简单地说一下,然后给大家推荐一个博客

首先,我们知道y_i = 1 or -1 ,所以只有那么几种情况:

  1. \alpha_1+\alpha_2 = \zeta​
  2. \alpha_1 - \alpha_2 = \zeta
  3. \alpha_1 + \alpha_2 = -\zeta
  4. \alpha_1 - \alpha_2 = -\zeta

然后,根据\zeta的大小,我们可以得到最终的可行域:

img

其实,我们不光要考虑可行域,还得考虑二次项系数。

具体的请参考这篇博客:博客

最后,我们还需要更新b的值,为了让\alpha_{new}满足KKT条件。

0 < \alpha_1^{new} < C 时:
b_1^{new} = -E_1-y_1K_{11}(\alpha_1^{new} - \alpha_1^{old}) - y_2K_{21}(\alpha_2^{new}-\alpha_2^{old}) + b^{old}
同理,当 0 < \alpha_2^{new} < C:
b_2^{new} = -E_2-y_1K_{12}(\alpha_1^{new} - \alpha_1^{old}) - y_2K_{22}(\alpha_2^{new}-\alpha_2^{old}) + b^{old}
如果同时满足条件b_1^{new} = b_2^{new},b = b_1^{new}

如果有一个 \alpha 是 0 或是C

b^{new} = \frac{1}{2}(b_1^{new} + b_2^{new})%

最后计算

E_i^{new} = \sum_{S}{} y_j\alpha_jK(x_i, x_j) + b^{new} - y_i


代码:

再等等吧,真TM的难。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容

  • 本章涉及到的知识点清单:1、决策面方程2、函数间隔和几何间隔3、不等式约束条件4、SVM最优化模型的数学描述(凸二...
    PrivateEye_zzy阅读 13,231评论 3 10
  • 写在前面 有一个多月没有更新博客了,整个三月份都在忙项目的事,忙着各种扫尾解决一些“历史遗留问题”。终于到了清明节...
    光的文明阅读 34,895评论 8 28
  • 在亲子关系里,教导孩子的行为符合社会规范是一项艰巨的工作。这源自于我们和孩子在需求上的矛盾。这一点,体会太深了! ...
    池浅笑安然阅读 107评论 0 0
  • 01 如果一直都是一个人,那该怎么办? 看到这句话后真正会感到有压力的多半是这样一群人:孩子见到你时会毫不犹豫的喊...
    欧美男神阅读 1,919评论 4 6
  • jboss跟tomcat一样,都是javaWeb应用服务器,或者说JavaWeb容器。 当然,二者也有所区别: t...
    程序大视界阅读 970评论 0 1