支持向量机(五)——SMO算法

〇、说明

支持向量机(Support Vector Machine,SVM)是监督学习中非常经典的算法。笔者主要参考学习的是李航老师《统计学习方法(第二版)》[1]和周志华老师的西瓜书《机器学习》[2]。

如有错误疏漏,烦请指正。如要转载,请联系笔者,hpfhepf@gmail.com。

关于这个算法,读者可以参考算法发明者Platt的原始论文[3][4]。知乎文章《支持向量机原理详解(六): 序列最小最优化(SMO)算法》[5][6]系列也是关于SMO算法不错的文章,读者可一并参考阅读。

一、SMO算法简介

1.1 为什么

支持向量机的学习是一个凸二次规划问题,凸二次规划问题问题具有全局最优解,有许多最优化算法可以用于这一问题。但当训练样本容量很大时,这些算法往往变得比较低效。目前有很多支持向量机的快速实现算法,序列最小最优化(Sequential Minimal Optimization,SMO)算法就是其中一个。[1]

1.2 SMO算法思路

1. 在支持向量机的对偶问题优化中,每一轮迭代,将其它变量看作常数,只优化其中两个变量。

2. 每一轮迭代,启发式地选择优化量最大的两个变量进行优化。

二、SMO算法详述

支持向量机的对偶优化问题如下

优化问题一:

\begin{split}&\mathop{min}\limits_{\alpha} \ &\frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_{i} \alpha_{j} y_{i} y_{j}K(x_{i} ,x_{j}) - \sum_{i=1}^N \alpha_{i} \\& s.t. & \sum_{i=1}^N \alpha_{i} y_{i}=0 \\&& 0\leq \alpha_{i} \leq C \ \ i=1,2,\dots,N\end{split} \tag{1}

优化目标是找到使目标函数最小的拉格朗日乘子向量\alpha^*=(\alpha^*_{1},\alpha^*_{2},\dots,\alpha^*_{N})^T

2.1 两个变量的优化方法

每一轮迭代中,假设已选择的两个变量是\alpha_{1}\alpha_{2},其它变量\alpha_{i}(i=3,4,\dots,N)是固定的。则式(1)表示的优化问题可以写成

优化问题二:

\begin{split}& \mathop{min}\limits_{\alpha_{1},\alpha_{2}} \ \  & W(\alpha_{1},\alpha_{2})= \frac{1}{2} K_{11} \alpha^2_{1} + \frac{1}{2} K_{22} \alpha^2_{2} + y_{1}y_{2}K_{12}\alpha_{1} \alpha_{2} \\&& \qquad - (\alpha_{1} + \alpha_{2}) + y_{1}\alpha_{1} \sum_{i=3}^N y_{i} \alpha_{i}K_{i1} + y_{2}\alpha_{2} \sum_{i=3}^N y_{i}     \alpha_{i}K_{i2}   \\& s.t. & \alpha_{1} y_{1} + \alpha_{2} y_{2} = - \sum_{i=3}^N \alpha_{i} y_{i}=\varsigma  \\&& 0\leq \alpha_{i} \leq C \ \ i=1,2 \end{split} \tag{2}

其中,K_{ij}=K(x_{i},x_{j})\varsigma 是常数,优化目标函数省略了不含\alpha_{1}\alpha_{2}的常数项。

等式约束决定了这个优化问题是一个单变量优化问题,这里考虑为变量\alpha_{2}的优化问题。

第一步,求解未经剪辑的最优解

定义

g(x)=\sum_{i=1}^N \alpha_{i} y_{i} K(x_{i},x)+b \tag{3}

 E_{i}=g(x_{i}) - y_{i} = (\sum_{j=1}^N \alpha_{j} y_{j} K(x_{j},x_{i})+b)-y_{i} \tag{4}

v_{i}= \sum_{i=3}^N \alpha_{j} y_{j} K(x_{i},x_{j}) = g(x_{i}) - \sum_{j=1}^2 \alpha_{j} y_{j} K(x_{i},x_{j})-b \tag{5}

则目标函数可写为

\begin{split}W(\alpha_{1},\alpha_{2})= & \frac{1}{2}K_{11} \alpha^2_{1}+\frac{1}{2}K_{22}\alpha^2_{2}+y_{1}y_{2}K_{12}\alpha_{1}\alpha_{2}\\ &-(\alpha_{1}+\alpha_{2})+y_{1}v_{1}\alpha_{1}+y_{2}v_{2}\alpha_{2} \end{split} \tag{6}

\alpha_{1} y_{1}+\alpha_{2} y_{2} = \varsigma 可得\alpha_{1} = y_{1}(\varsigma -\alpha_{2} y_{2}),代入上式,目标函数可表示为单变量\alpha_{2}的目标函数

\begin{split}W(\alpha_{2})= & \frac{1}{2}K_{11} (\varsigma -\alpha_{2 } y_{2})^2+\frac{1}{2}K_{22}\alpha^2_{2}+y_{2}K_{12}(\varsigma -\alpha_{2} y_{2})\alpha_{2}\\ &-(y_{1}(\varsigma -\alpha_{2}y_{2})+\alpha_{2})+v_{1}(\varsigma -\alpha_{2}y_{2})+y_{2}v_{2}\alpha_{2} \end{split} \tag{7}

\alpha_{2}求导

\begin{split}\frac{\partial}{\partial \alpha_{2}} W(\alpha_{2})= & y_{2} K_{11} (\alpha_{2} y_{2} -\varsigma )+K_{22} \alpha_{2} + y_{2} K_{12} (\varsigma -\alpha_{2} y_{2}) \\& + y_{2} K_{12} (-y_{2}) \alpha_{2} + y_{1} y_{2} -1 - v_{1} y_{2} + y_{2} v_{2} \\= & (K_{11}+K_{22}-2K_{12}) \alpha_{2} +y_{2} \varsigma(K_{12} - K_{11}) \\& + y_{1} y_{2} -1 - v_{1} y_{2} + y_{2} v_{2} \\\end{split} \tag{8}

令其为0,得到

\alpha_{2} = \frac{1}{K_{11}+K_{22}-2K_{12}} y_{2}(y_{2}-y_{1}+v_{1}-v_{2}+K_{11}\varsigma -K_{12}\varsigma ) \tag{9}

将等号左边\alpha_{2}\alpha^{new,unc}代替,等号右边代入v_{i},i=1,2\varsigma = \alpha^{old}_{1} y_{1} + \alpha^{old}_{2} y_{2},并令\eta =K_{11}+K_{22}-2K_{12},则有

\begin{split}\alpha^{new,unc}_{2} = & \frac{1}{\eta} y_{2}[y_{2} - y_{1} + K_{11} \alpha^{old}_{1} y_{1} + K_{11} \alpha^{old}_{2} y_{2} - K_{12} \alpha^{old}_{1} y_{1} - K_{12} \alpha^{old}_{2} y_{2}  \\ & + (g(x_{1})-K_{11} \alpha^{old}_{1} y_{1} - K_{12} \alpha^{old}_{2} y_{2} - b) \\& - (g(x_{2}) - K_{12} \alpha^{old}_{1} y_{1} - K_{22} \alpha^{old}_{2} y_{2} - b)] \\= & \frac{1}{\eta} y_{2}[(K_{11} + K_{22} - 2K_{12}) y_{2} \alpha^{old}_{2} + (g(x_{1}) - y_{1}) - (g(x_{2}) - y_{2})] \\= & \alpha^{old}_{2} + \frac{1}{\eta} y_{2}(E_{1} - E_{2})\end{split} \tag{10}

\alpha^{new,unc}_{2} = \alpha^{old}_{2} + \frac{1}{\eta} y_{2}(E_{1} - E_{2})\tag{11}

这里需要注意,\eta =K_{11}+K_{22}-2K_{12} = ||\phi (x_{1}) - \phi(x_{2})||^2

第二步,确定剪辑边界

两个变量(\alpha_{1},\alpha_{2})的约束,如下图所示

图1[4]

(2)不等式约束使得\alpha_{1}\alpha_{2}正方形[0,C]\times [0,C] 内,等式约束使得它们在平行于正方形对角线的直线上。

如上所述,优化问题二(式(2))实质上是一个但变量优化问题,同样,我们为考虑\alpha_{2}的优化问题。由于\alpha^{new}_{2}需要满足不等式约束,所以有

L \leq \alpha^{new}_{2} \leq H \tag{12}

由式(2)的等式约束\alpha_{1} y_{1} + \alpha_{2} y_{2} = \varsigma ,当y_{1} \neq y_{2}时,\alpha_{1} - \alpha_{2} = \gamma \gamma 是一个常数,满足|\gamma |=|\varsigma |),则有

L = max(0,-\gamma ),\quad H=min(C,C-\gamma ) \tag{13}

y_{1} = y_{2}时,\alpha_{1} + \alpha_{2} = \gamma ,则有

L = max(0,\gamma - C),\quad H=min(C,\gamma ) \tag{14}

第三步,剪辑优化结果

综上所述,经剪辑后的\alpha_{2}

\alpha^{new}_{2} = \begin{cases}H, & \alpha^{new,unc}_{2} > H \\\alpha^{new,unc}_{2}, & L \leq \alpha^{new,unc}_{2} \leq H \\L, & \alpha^{new,unc}_{2} </p><p><b>第四步,求解<img class=

根据式(2)的等式约束,求解\alpha^{new}_{1}

\alpha^{new}_{1}=\alpha^{old}_{1} +y_{1} y_{2}(\alpha^{old}_{2} - \alpha^{new}_{2}) \tag{16}

2.2 第一个待优化变量选择

SMO算法称选择第一个优化变量的过程为外层循环。每次只选择两个变量进行优化,那如何选择呢?

支持向量机是凸优化问题,满足KKT条件的点是支持向量机优化问题的解[7]。

线性支持向量机的符合KKT条件如下

\begin{align}& y_{i}(w^*\cdot x_{i}+b^*)\geq 1-\xi^* _{i},\ i=1,2,\dots,N \tag{17a}\\& \xi^*_{i} \geq 0, \ i=1,2,\dots,N \tag{17b} \\& \alpha^*_{i} \geq 0, \ i=1,2,\dots,N \tag{17c} \\& \alpha^*_{i}(y_{i}(w^*\cdot x_{i}+b^*)-1+\xi^*_{i})=0,\ i=1,2,\dots,N \tag{17d} \\& \mu^*_{i}\xi^*_{i}=0, \ i=1,2,\dots,N  \tag{17e}\\& \frac{\partial}{\partial w} L(w^*,b^*,\xi^*;\alpha^*,\mu^*)=w^*-\sum_{i=1}^N \alpha^*_{i}y_{i}x_{i}=0 \tag{17f} \\& \frac{\partial}{\partial b} L(w^*,b^*,\xi^*;\alpha^*,\mu^*)=-\sum_{i=1}^N \alpha^*_{i}y_{i}=0 \tag{17g} \\& \frac{\partial}{\partial \xi_{i}} L(w^*,b^*,\xi^*;\alpha^*,\mu^*)=C-\alpha^*_{i}-\mu^*_{i}=0 , \ i=1,2,\dots,N\tag{17h} \end{align}

将式(16d)(16e)(16f)(16h)单独拿出来,如下

\begin{align}& \alpha^*_{i}(y_{i}(w^*\cdot x_{i}+b^*)-1+\xi^*_{i})=0,\ i=1,2,\dots,N \\& \mu^*_{i}\xi^*_{i}=0, \ i=1,2,\dots,N \\& \frac{\partial}{\partial w} L(w^*,b^*,\xi^*;\alpha^*,\mu^*)=w^*-\sum_{i=1}^N \alpha^*_{i}y_{i}x_{i}=0 \\& \frac{\partial}{\partial \xi_{i}} L(w^*,b^*,\xi^*;\alpha^*,\mu^*)=C-\alpha^*_{i}-\mu^*_{i}=0 , \ i=1,2,\dots,N \end{align} \tag{18}

由上式可推导出

\begin{align} \alpha^*_{i}=0 & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}(x_{i} \cdot x_{j})+b^*) \geq1 \\ 0< \alpha^*_{i} <1 & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}(x_{i} \cdot x_{j})+b^*) =1 \\ \alpha^*_{i}=C & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}(x_{i} \cdot x_{j})+b^*) \leq1\end{align} \tag{19}

这里需要注意,上式中,“\Rightarrow ”在李航老师《统计学习方法(第二版)》中,使用的是“\Leftrightarrow ”,这个是不严谨的。替换成核函数版本,如下

\begin{align} \alpha^*_{i}=0 & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}K(x_{i} , x_{j})+b^*) \geq1 \\ 0< \alpha^*_{i} <1 & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}K(x_{i} , x_{j})+b^*) =1 \\ \alpha^*_{i}=C & \Rightarrow y_{i}(\sum_{j=1}^N\alpha^*_{j}y_{j}K(x_{i} , x_{j})+b^*) \leq1\end{align} \tag{20}

代入g(x_{i})的定义,在优化过程中,\alpha=(\alpha_{1},\alpha_{2},\dots,\alpha_{N})^T不是最优解,所以,验证条件应表述为

\begin{align} \alpha_{i}=0 & \Rightarrow y_{i} g(x_{i}) \geq1 \\ 0< \alpha_{i} <1 & \Rightarrow y_{i} g(x_{i}) =1 \\ \alpha_{i}=C & \Rightarrow y_{i} g(x_{i}) \leq1\end{align} \tag{21}

这就是SMO算法选择第一个优化变量的条件,也是停机条件。

第一个优化变量的选择方法:首先遍历满足0 < \alpha_{i} < C的样本点,检验它们是否满足式(6b);如果这些样本点都不满足约束,则遍历\alpha_{i}=0\alpha_{i} = C的样本点,检验是否符合式(6a)(6c)的约束。

这里需要注意,在下面选择第二个优化变量时,有可能会抛弃一选择的第一个变量,重新选择第一个变量,详见下文。

2.3 第二个优化变量选择

SMO算法称选择第二个优化变量的过程为内层循环。假设已经找到了第一个优化变量\alpha_{1}。第二个优化变量\alpha_{2}的选择标准是希望这个变量有足够大的变化。

第一种方式

由式(11)可知,\alpha^{new}_{2}是依赖于|E_{1}-E_{2}|的,为了加快计算速度,可以选择使之最大的\alpha_{1},一般来讲就是选择与E_{1}符号相反,绝对值最大E_{i}对应的\alpha_{i}作为第二个优化变量。

通常,为了加快速度,E_{i}保存在一个列表里。

第二种方式

特殊情况下,如果内层循环找到的\alpha_{2}不能使目标函数有足够的下降,则采用另一种启发方式继续选择\alpha_{2}:遍历在间隔边界上的支持向量点(满足0<\alpha_{i} <C的样本),依次试用,直到目标函数有足够的下降。

如果还找不到合适的\alpha_{2},遍历所有数据集;如果仍然找不到,则放弃这个\alpha_{1},重新选择。

2.4 更新b

为什么要更新b,因为后面更新E_{i}时要用到。在前面几篇笔记所述的支持向量机[b][c]理论中,参数b是根据最优拉格朗日乘子\alpha^*来计算的。但是在SMO算法中,b是跟随\alpha_{i}(i=1,2)优化的变量。

如何优化参数b呢,KKT条件就是优化的方向(符合KKT条件的解是最优解[5])。因为是局部优化,需要先分别求解b^{new}_{1}b^{new}_{2},然后再求出b^{new},先求b^{new}_{1},根据式(21),当0<\alpha_{1} < C时,

\begin{split}b^{new}_{1} & = y_{1} - \sum_{i=1}^N \alpha_{i} y_{i} K_{i1} \\ &= y_{1} - \sum_{i=3}^N \alpha_{i} y_{i}K_{i1} - \alpha^{new}_{1} y_{1}K_{11} - \alpha^{new}_{2} y_{2} K_{12}\end{split}\tag{22}

因为E_{1}已经保存在列表里,可以利用其来计算b^{new}_{1},减少计算量。由E_{i}定义可知

\begin{split}E_{1} &= \sum_{i=1}^N \alpha_{i} y_{i}K_{i1} + b^{old} - y_{1} \\&= \sum_{i=3}^N \alpha_{i} y_{i} k_{i1} + \alpha^{old}_{1} y_{1} K_{11} + \alpha^{old}_{2} y_{2} K_{12} + b^{old} - y_{1}\end{split} \tag{23}

可得

y_{1} - \sum_{i=3}^N \alpha_{i} y_{i} K_{i1} = -E_{1} + \alpha^{old}_{1} y_{1} K_{11} + \alpha^{old}_{2} y_{2} K_{12} + b^{old} \tag{24}

代入式(22),可得

b^{new}_{1} = -E_{1} - y_{1} K_{11}(\alpha^{new}_{1} - \alpha^{old}_{1}) - y_{2} K_{12} (\alpha^{new}_{2} - \alpha^{old}_{2}) + b^{old} \tag{25}

同理,当0<\alpha_{2} < C时,有

b^{new}_{2} = -E_{2} - y_{1} K_{12}(\alpha^{new}_{1} - \alpha^{old}_{1}) - y_{2} K_{22} (\alpha^{new}_{2} - \alpha^{old}_{2}) + b^{old} \tag{26}

通过b^{new}_{1}b^{new}_{2}计算b^{new},分两种情况:

第一种情况

0<\alpha^{new}_{i} <C,i=1,2时,b^{new}_{1} = b^{new}_{2},证明如下

将式(16)的变形\alpha^{new}_{1} - \alpha^{old}_{1} = -y_{1} y_{2} (\alpha^{new}_{2} - \alpha^{old}_{2})代入式(25)(26),计算

\begin{split}b^{new}_{1} - b^{new}_{2} &= -(E_{1} - E_{2}) + y_{2} (K_{11} + K_{22} - 2K_{12})(\alpha^{new}_{2} - \alpha^{old}_{2}) \\&=y_{2}\eta (-\frac{y_{2}(E_{1} - E_{2})}{\eta} - \alpha^{old}_{2} + \alpha^{new}_{2}) \\&= y_{2}\eta (\alpha^{new}_{2} - \alpha^{new,unc}_{2})\end{split} \tag{27}

上式中,\eta = K_{11} + K_{22} -2K_{12}。当0<\alpha^{new}_{i} <C,i=1,2时,\alpha^{new}_{2}在约束边界内,剪辑前后相同,所以有

b^{new}_{1} - b^{new}_{2} = 0 \tag{28}

此时,

b^{new} = b^{new}_{1} \tag{29}

第二种情况

(\alpha^{new}_{1},\alpha^{new}_{2})在边界上,且L\neq H时,第一种情况求得的值还可以继续使用。b^{new}_{1}b^{new}_{2}以及它们之间的数都符合KKT条件(因为证明较复杂,且用到后面的知识,证明放在附录),选择他们的中点作为b^{new},也即

b^{new} = \frac{1}{2}(b^{new}_{1} + b^{new}_{2}) \tag{30}

这里需要注意,这里有一个L\neq H的条件。为什么有这样一个条件?如下图,当L = H时,直线\alpha_{1} - \alpha_{2} = \gamma \alpha_{1} + \alpha_{2} = \gamma 在约束范围内退化成一个点(读者可自己证明),没有优化的空间,这样的(\alpha_{1},\alpha_{2})需要重新选择。

图2

2.5 更新E_{i}

如前所述,挑选和计算\alpha^{new}_{2}时,都会用到E_{i}。每次迭代都需要更新E_{i},以备下一轮迭代使用。

根据E_{i}的定义(式(4)),有

E^{old}_{i} =  \sum_{j=3}^N \alpha_{j} y_{j} k_{ij} + \alpha^{old}_{1} y_{1} K_{1i} + \alpha^{old}_{2} y_{2} K_{2i} + b^{old} - y_{i}\tag{31}

E^{new}_{i} =  \sum_{j=3}^N \alpha_{j} y_{j} k_{ij} + \alpha^{new}_{1} y_{1} K_{1i} + \alpha^{new}_{2} y_{2} K_{2i} + b^{new} - y_{i}\tag{32}

变换式(31)和式(32)可得

E^{new}_{i} = E^{old}_{i} + y_{1}K_{1i}(\alpha^{new}_{1} - \alpha^{old}_{1}) + y_{2} K_{2i}(\alpha^{new}_{2} - \alpha^{old}_{2}) + b^{new} - b^{old} \tag{33}

可以证明(读者可自行证明),当0<\alpha^{new}_{i} <C,i=1,2时,

E^{new}_{i} = 0 \tag{34}

原始论文中[4],作者表示式(33)用来更新没有参与优化且不在边界上的支持向量对应的E_{i},也即更新除\alpha_{1}\alpha_{2}以外且0<\alpha_{i} <C对应的E_{i}

但我认为,当(\alpha^{new}_{1},\alpha^{new}_{2})在边界上,不符合式(34),此时至少有一个参与优化的变量对应的E_{i}也需要更新。

三、SMO算法总结

第一步,给定精度参数\varepsilon ,初始化\alpha = \boldsymbol 0b=0

第二步,按照2.2节和2.3节选择优化变量,按照2.1节解析求解优化问题,更新这两个变量。

第三步,按照2.4节和2.5节更新bE_{i}

第四步,在精度\varepsilon 范围内检查是否满足KKT条件(式(21)):若满足,则转第五步;不满足,则转第二步。

第五步,得到最优解\alpha^*,b^*

这里,精度\varepsilon 内检查读者可参看参考资料[6]。

四、附录

A、(\alpha^{new}_{1},\alpha^{new}_{2})在边界上时b^{new}符合KKT条件的证明

重复正文2.4节的结论:当(\alpha^{new}_{1},\alpha^{new}_{2})在边界上,且L\neq H时,b^{new}_{1}b^{new}_{2}以及它们之间的数都符合KKT条件。

这里参考[8]予以证明。

如正文2.5节所述,当0<\alpha^{new}_{i} < C, i=1,2时,E^{new}_{i} = 0, i=1,2。但当(\alpha^{new}_{1},\alpha^{new}_{2})在剪辑边界上时,也即\alpha^{new}_{1}\alpha^{new}_{2}至少有一个为0或C。当某一个变量为0或C时,E^{new}_{i},i=1,2不一定为0。更一般的,我们暂时认为它们不为0。由正文式(33),有

E^{new}_{1} = E^{old}_{1} + y_{1}K_{11}(\alpha^{new}_{1} - \alpha^{old}_{1}) + y_{2} K_{12}(\alpha^{new}_{2} - \alpha^{old}_{2}) + \Delta b \tag{a1}

E^{new}_{2} = E^{old}_{2} + y_{1}K_{12}(\alpha^{new}_{1} - \alpha^{old}_{1}) + y_{2} K_{22}(\alpha^{new}_{2} - \alpha^{old}_{2}) + \Delta b \tag{a2}

当变量在边界时,经过剪辑,由正文式(11),有

\alpha^{new}_{2} - \alpha^{old}_{2} = \frac{1}{\eta} \lambda  y_{2}(E^{old}_{1} - E^{old}_{2}) \tag{a3}

其中,0 \leq \lambda \leq 1  \eta = K_{11} +K_{22} - 2K_{12}。又由正文式(16),有

\alpha^{new}_{1} - \alpha^{old}_{1} = -y_{1} y_{2}(\alpha^{new}_{2} - \alpha^{old}_{2}) \tag{a4}

将式(a3)代入式(a4),可得

\alpha^{new}_{1} - \alpha^{old}_{1} = -\frac{1}{\eta} \lambda y_{1} (E^{old}_{1} - E^{old}_{2}) \tag{a5}

将式(a3)和式(a5)代入正文式(25),有

\begin{split}b^{new}_{1} &= -E^{old}_{1} - y_{1} K_{11}(\alpha^{new}_{1} - \alpha^{old}_{1}) - y_{2} K_{12} (\alpha^{new}_{2} - \alpha^{old}_{2}) + b^{old}  \\&= - E^{old}_{1} + \frac{1}{\eta} \lambda K_{11} (E^{old}_{1} - E^{old}_{2}) - \frac{1}{\eta} \lambda K_{12} (E^{old}_{1} - E^{old}_{2}) + b^{old}\\&=-E^{old}_{1} + \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2}) + b^{old}\end{split} \tag{a6}

同理有

b^{new}_{2} = -E^{old}_{2} + \frac{1}{\eta} \lambda (K_{12} - K_{22})(E^{old}_{1} - E^{old}_{2}) + b^{old} \tag{a7}

构造b^{new}如下,其中0 \leq t \leq 1,使得b^{new}b^{new}_{1}b^{new}_{2}之间

b^{new} = tb^{new}_{1} + (1-t)b^{new}_{2} \tag{a8}

将式(a6)和式(a7)代入式(a8),构造\Delta b,有

\begin{split}\Delta b &= & b^{new} - b^{old} \\&= & tb^{new}_{1} + (1 - t) b^{new}_{2} - b^{old} \\&= & t(-E^{old}_{1} + \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2}) + b^{old}) \\&& + (1 - t)(-E^{old}_{2} + \frac{1}{\eta} \lambda (K_{12} - K_{22})(E^{old}_{1} - E^{old}_{2}) + b^{old}) - b^{old} \\&= & t(-E^{old}_{1} + \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2}) ) \\&& + (1 - t)(-E^{old}_{2} + \frac{1}{\eta} \lambda (K_{12} - K_{22})(E^{old}_{1} - E^{old}_{2}) ) \end{split} \tag{a9}

将式(a3)、式(a4)和式(a9)代入式(a1),可得

\begin{split}E^{new}_{1} &=& E^{old}_{1} + y_{1}K_{11}(\alpha^{new}_{1} - \alpha^{old}_{1}) + y_{2} K_{12}(\alpha^{new}_{2} - \alpha^{old}_{2}) + \Delta b \\&=& E^{old}_{1} - \frac{1}{\eta} \lambda K_{11}(E^{old}_{1} - E^{old}_{2}) + \frac{1}{\eta} \lambda K_{12}(E^{old}_{1} - E^{old}_{2}) + \Delta b \\&=& E^{old}_{1} - \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2}) + \Delta b \\&=& E^{old}_{1} - \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2}) \\&& + t(-E^{old}_{1} + \frac{1}{\eta} \lambda (K_{11} - K_{12})(E^{old}_{1} - E^{old}_{2})) \\&& +(1 - t)(-E^{old}_{2} + \frac{1}{\eta} \lambda (K_{12} - K_{22})(E^{old}_{1} - E^{old}_{2})) \\&=& E^{old}_{1} - E^{old}_{2} - t(E^{old}_{1} - E^{old}_{2}) \\&& - \frac{1}{\eta} \lambda (K_{11} - 2K_{12} + K_{22})(E^{old}_{1} - E^{old}_{2}) \\&& + \frac{1}{\eta} \lambda t (K_{11} - 2K_{12} + K_{22})(E^{old}_{1} - E^{old}_{2}) \\&=& (1 - t - \lambda + \lambda t)(E^{old}_{1} - E^{old}_{2}) \\&=& (1 - t)(1 - \lambda)(E^{old}_{1} - E^{old}_{2})\end{split}\tag{a10}

同理可得

E^{new}_{2} = - t (1 - \lambda)(E^{old}_{1} - E^{old}_{2}) \tag{a11}

\alpha^{new}_{2} = 0

\begin{split} & \alpha^{new}_{2} - \alpha^{old}_{2} \leq 0 \\ \Leftrightarrow \quad &\frac{1}{\eta} \lambda y_{2} (E^{old}_{1} - E^{old}_{2}) \leq 0 \\\Leftrightarrow \quad & y_{2}(E^{old}_{1} - E^{old}_{2}) \leq 0 \\\Leftrightarrow \quad & y_{2}(-t (1 - \lambda)(E^{old}_{1} - E^{old}_{2})) \geq 0 \\\Leftrightarrow \quad & y_{2} E^{new}_{2} \geq 0 \\\Leftrightarrow \quad & y_{2}(g(x_{2}) - y_{2}) \geq 0 \\\Leftrightarrow \quad & y_{2}g(x_{2}) \geq 1\end{split} \tag{a12}

符合正文式(21)KKT条件。

\alpha^{new}_{2} = C

\begin{split} & \alpha^{new}_{2} - \alpha^{old}_{2} \geq 0 \\ \Leftrightarrow \quad &\frac{1}{\eta} \lambda y_{2} (E^{old}_{1} - E^{old}_{2}) \geq 0 \\\Leftrightarrow \quad & y_{2}(-t (1 - \lambda)(E^{old}_{1} - E^{old}_{2})) \leq 0 \\\Leftrightarrow \quad & y_{2} E^{new}_{2} \leq 0 \\\Leftrightarrow \quad & y_{2}g(x_{2}) \leq 1\end{split} \tag{a13}

同样符合正文式(21)KKT条件。\alpha^{new}_{1} = 0\alpha^{new}_{1} = C同理可证。

得证。

B、参考

[1]、《统计学习方法(第二版)》,李航著,清华大学出版社

[2]、《机器学习》,周志华著,清华大学出版社

[3]、Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines, John C. Platt, 1998

[4]、Fast Training of Support Vector Machines Using Sequential Minimal Optimization, John C. Platt, 2000

[5]、《支持向量机原理详解(六): 序列最小最优化(SMO)算法(Part I)》

[6]、《支持向量机原理详解(七): 序列最小最优化(SMO)算法(Part II)》

[7]、《凸优化(八)——Lagrange对偶问题》

[8]、Struggling to understand threshold(b) update step in SMO

C、相关目录

[a]、支持向量机(一)——线性可分支持向量机导出

[b]、支持向量机(二)——线性可分支持向量机求解

[c]、支持向量机(三)——线性支持向量机

[d]、支持向量机(四)——核方法

[e]、支持向量机(五)——SMO算法

D、时间线

2020-06-18 第一次发布

2020-06-20 添加附录A的证明

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