统计机器学习-序列最小最优化算法(SMO)

SMO算法要解如下凸二次规划的对偶问题:
\min_\alpha\frac12\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i\tag1

\mathrm{s.t.}\ \ \sum_{i=1}^N\alpha_iy_i=0\tag2

0\leq\alpha_i\leq C,\ \ i=1,2,\cdots,N\tag3

在这个问题中,变量是拉格朗日乘子,一个变量\alpha_i对应于一个样本点(x_i,y_i)。变量的总数等于训练样本的容量N

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了,因为KKT条件是该最优化问题的充分必要条件。于是,每次只选择两个变量进行优化,使其满足KKT条件,然后不断迭代,直至所有变量满足KKT条件,得到最优解。在优化变量的选取上,一般一个是违反KKT条件最严重的一个,另一个由约束条件自动决定。

两个变量二次规划的求解方法

根据SMO算法,公式(1)-(3)的问题可以通过多次选择变量\alpha_1\alpha_2,求解下列子问题得到:
\min_{\alpha_1,\alpha_2}W(\alpha_1,\alpha_2)=\frac12K_{11}\alpha_1^2+\frac12K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2}\tag4

\mathrm{s.t.}\ \ \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^Ny_i\alpha_i=\varsigma\tag5

0\leq\alpha_i\leq C,\ \ i=1,2\tag6

上述优化问题,因为可以通过公式(5)可以用\alpha_2来表示\alpha_1,所以可以考虑为对\alpha_2的最优化问题。如果y_1\neq y_2,则\alpha_1-\alpha_2=kk为常数:

y1!=y2

根据公式(6),\alpha_1\alpha_2在正方形内部,加上公式(5),所以\alpha_1\alpha_2为直线和正方形交线上的点。同理,如果y_1=y_2,则\alpha_1+\alpha_2=k,如下图:

y1=y2

假设问题(4)-(6)优化前\alpha_1\alpha_2的值为\alpha_1^{old}\alpha_2^{old},优化后的最优解为\alpha_1^{new}\alpha_2^{new},并且假设在沿着约束方向未经剪辑时\alpha_2的最优解为\alpha_2^{new,unc}

\alpha_2^{new}需要满足不等式
L\leq\alpha_2^{new}\leq H
其中,LH\alpha_2^{new}所在对角线段的界,如果y_1\neq y_2,则
L=\max(0,\alpha_2^{old}-\alpha_1^{old}),\ \ H=\min(C,C+\alpha_2^{old}-\alpha_1^{old})
因为\alpha_1^{new}-\alpha_2^{new}=k=\alpha_1^{old}-\alpha_2^{old},所以\alpha_2^{new}在直线\alpha_1^{new}-\alpha_2^{new}=\alpha_1^{old}-\alpha_2^{old}和正方形的交线段上,通过上下平移就能够得到上面\alpha_2^{new}的界。同理,如果y_1=y_2,则
L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C),\ \ H=\min(C,\alpha_2^{old}+\alpha_1^{old})
于是通过公式(5)得到\alpha_1\alpha_2的表示:
\alpha_1=(\varsigma-y_2\alpha_2)y_1
代入公式
W(\alpha_1,\alpha_2)=\frac12K_{11}\alpha_1^2+\frac12K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2}
并求导等于0便可以得到未经剪辑时\alpha_2的最优解\alpha_2^{new,unc},最后根据上述LH裁剪得到\alpha_2^{new}

最优化问题(4)-(6)沿着约束方向未经剪辑时的解是
\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}\tag7
其中,
\eta=K_{11}+K_{22}-2K_{12}=||\Phi(x_1)-\Phi(x_2)||^2\tag8
\Phi(x)是输入空间到特征空间的映射,E_ii=1,2
E_i=g(x_i)-y_i=\bigg(\sum_{j=1}^N\alpha_jy_jK(x_j,x_i)+b\bigg)-y_i,\ \ i=1,2\tag9
表示对输入x_i的预测值与真实输出y_i之差,其中
g(x)=\sum_{i=1}^N\alpha_iy_iK(x_i,x)+b\tag{10}
经剪辑后\alpha_2的解是
\alpha_2^{new}= \begin{cases} H,&\alpha_2^{new,unc}\gt H\\ \alpha_2^{new,unc},&L\leq\alpha_2^{new,unc}\leq H\\ L,&\alpha_2^{new,unc}\lt L \end{cases}
然后根据公式
\alpha_1^{new}=(\varsigma-y_2\alpha_2^{new})y_1\tag{11}
计算\alpha_1^{new}

变量的选择方法

SMO算法每次都要选择两个变量进行优化,其中至少一个变量是违反KKT条件的。

第一个变量的选择

SMO称选择第1个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量,具体的,检验训练样本点(x_i,y_i)是否满足KKT条件,即
\alpha_i=0\Leftrightarrow y_ig(x_i)\geq1\tag{12}

0\lt\alpha_i\lt C\Leftrightarrow y_ig(x_i)=1\tag{13}

\alpha_i=C\Leftrightarrow y_ig(x_i)\leq1\tag{14}

其中,g(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b

该检验是在\varepsilon范围内进行的。在检验过程中,外层循环首先遍历所有满足条件0\lt\alpha_i\lt C的样本点,即间隔边界上的支持向量点,检验它们是否满足KKT条件,如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。

第二个变量的选择

SMO称选择第2个变量的过程为内层循环。第2个变量的选择标准是希望能使\alpha_2有足够大的变化。由于
\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
所以\alpha_2的变化依赖于|E_1-E_2|。于是选择使|E_1-E_2|最大的\alpha_2,当E_1是正的,选择最小的E_i作为E_2,如果E_1是负的,选择最大的E_i作为E_2,为了节省计算时间,将所有的E_i值保存在一个列表中。

如果这种内层循环找不到一个有足够下降的\alpha_2,则遍历在间隔边界上的支持向量点,依次将其对应的变量作为\alpha_2试用,直到有足够的下降,如果还不可以,则遍历训练集。再不可以,换一个\alpha_1

计算阈值b和差值E_i

更新完\alpha_1^{new}\alpha_2^{new}的值,都需要重新计算阈值b,当0\lt\alpha_1^{new}\lt C时,由KKT条件可知
\sum_{i=1}^N\alpha_iy_iK_{i1}+b=y_1
所以
b_1^{new}=y_1-\sum_{i=1}^N\alpha_iy_iK_{i1}=y_1-\sum_{i=3}^N\alpha_iy_iK_{i1}-\alpha_1^{new}y_1K_{11}-\alpha_2^{new}y_2K_{2,1}\tag{15}
由于未更新的E_1
E_1=\sum_{i=3}^N\alpha_iy_iK_{i1}-y_1+\alpha_1^{old}y_1K_{11}+\alpha_2^{old}y_2K_{21}+b^{old}
移项得到
y_1-\sum_{i=3}^N\alpha_iy_iK_{i1}=-E_1+\alpha_1^{old}y_1K_{11}+\alpha_2^{old}y_2K_{21}+b^{old}
代入公式(15)得到b_1^{new}的更新公式
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}\tag{16}
同理,当0\lt\alpha_2^{new}\lt C时,可以推出b_2^{new}的更新公式
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}\tag{17}
如果\alpha_1^{new}\alpha_2^{new}同时满足条件0\lt\alpha_i^{new}\lt Ci=1,2,那么b_1^{new}=b_2^{new},如果\alpha_1^{new}\alpha_2^{new}是0或者C,那么b_1^{new}b_2^{new}以及它们之间的数都是符合KKT条件的阈值,这时选择它们的中点作为b^{new}

更新完\alpha_1^{new}\alpha_2^{new}后还需要更新对应的E_i值,并保存在列表中,E_i的更新需要用到b^{new}的值,以及所有支持向量对应的\alpha_j
E_i^{new}=\sum_Sy_j\alpha_jK(x_i,x_j)+b^{new}-y_i\tag{18}
其中S是所有支持向量x_j的集合。

SMO算法

输入:训练数据集T= \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},其中x_i\in\mathcal X=\textbf R^ny_i\in\mathcal Y= \{-1,+1\}i=1,2,\cdots,N,精度\varepsilon

输出:近似解\hat{\alpha}

(1)选取初值\alpha^{(0)}=0,令k=0

(2)选取优化变量\alpha_1^{(k)}\alpha_2^{(k)},解析求解两个变量的最优化问题(4)-(6),求得最优解\alpha_1^{(k+1)}\alpha_2^{(k+1)}
\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}

\alpha_2^{new}= \begin{cases} H,&\alpha_2^{new,unc}\gt H\\ \alpha_2^{new,unc},&L\leq\alpha_2^{new,unc}\leq H\\ L,&\alpha_2^{new,unc}\lt L \end{cases}

\alpha_1^{new}=(\varsigma-y_2\alpha_2^{new})y_1=(-\sum_{i=3}^Ny_i\alpha_i-y_2\alpha_2^{new})y_1

其中
\eta=K_{11}+K_{22}-2K_{12}=||\Phi(x_1)-\Phi(x_2)||^2

E_i=g(x_i)-y_i=\bigg(\sum_{j=1}^N\alpha_jy_jK(x_j,x_i)+b\bigg)-y_i,\ \ i=1,2

如果y_1\neq y_2
L=\max(0,\alpha_2^{old}-\alpha_1^{old}),\ \ H=\min(C,C+\alpha_2^{old}-\alpha_2^{old})
如果y_1=y_2
L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C),\ \ H=\min(C,\alpha_2^{old}+\alpha_2^{old})
更新\alpha\alpha^{(k+1)}

(3)若在精度\varepsilon范围内满足停机条件
\sum_{i=1}^N\alpha_iy_i=0

0\leq\alpha_i\leq C,\ \ i=1,2,\cdots,N

y_ig(x_i)= \begin{cases} \geq1,& \{x_i|\alpha_i=0\}\\ =1,& \{x_i|0\lt\alpha_i\lt C\}\\ \leq1,& \{x_i|\alpha_i=C\} \end{cases}
其中
g(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_j,x_i)+b
则转(4);否则令k=k+1,转(2);

(4)取\hat \alpha=\alpha^{(k+1)}

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