文章目录

  • 五、SMO算法
    • 1、两个变量二次规划的求解方法
      • (1)定义子问题
      • (2)确定变量范围
      • (3)最优求解
      • (4)计算阈值b和差值E
    • 2、变量的选择方法
      • (1)第1个变量的选择
      • (2)第2个变量的选择
    • 3、SMO算法

支持向量机内容特别多,为了方便阅读,分成三个部分,上接:
07_支持向量机1_统计学习方法
07_支持向量机2_统计学习方法

五、SMO算法

KKT条件中的(k4)(k5)还没有使用过,这两个条件主要就是用来求解参数α,μ\alpha , \muα,μ的。但是对于样本数量和特征比较多的时候,这么硬干是非常耗费内存和时间的。所以在求解参数α\alphaα时,大牛们使用了更有效的方法——SMO算法(序列最小最优算法),如果没理解错的话就是化整为零,分而治之的思想。

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。SMO思路,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。

非线性支持向量机的优化问题
min⁡α12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,⋯ ,N\begin{aligned} \min_{\alpha}\space\space & \dfrac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - \sum_{i=1}^N \alpha_i \\ s.t. \space\space & \sum_{i=1}^N \alpha_i y_i = 0 \\ & 0 \leq \alpha_i \leq C ,\space\space i=1,2,\cdots ,N \end{aligned}αmin​  s.t.  ​21​i=1∑N​j=1∑N​αi​αj​yi​yj​K(xi​,xj​)−i=1∑N​αi​i=1∑N​αi​yi​=00≤αi​≤C,  i=1,2,⋯,N​

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

(1)定义子问题

假设选择的两个变量是α1,α2\alpha_1,\alpha_2α1​,α2​,其他变量αi(i=3,4,⋯ ,N)\alpha_i(i=3,4,\cdots , N)αi​(i=3,4,⋯,N)是固定的。于是上面非线性支持向量机的优化问题的SMO子问题可以写成:
min⁡α1,α2W(α1,α2)=12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi=12∑i=1N(∑j=12αiαjyiyjK(xi,xj)+∑j=3NαiαjyiyjK(xi,xj))−(α1+α2)−∑i=3Nαi=12∑i=12(∑j=12αiαjyiyjK(xi,xj)+∑j=3NαiαjyiyjK(xi,xj))+12∑i=3N(∑j=12αiαjyiyjK(xi,xj)+∑j=3NαiαjyiyjK(xi,xj))−(α1+α2)−∑i=3Nαi=12∑i=12∑j=12αiαjyiyjK(xi,xj)+∑i=12∑j=3NαiαjyiyjK(xi,xj)+12∑i=3N∑j=3NαiαjyiyjK(xi,xj)−(α1+α2)−∑i=3Nαi=12K11α12+12K22α22+y1y2K12α1α2+y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2−(α1+α2)−∑i=3Nαi+12∑i=3N∑j=3NαiαjyiyjK(xi,xj)\begin{aligned} \min_{\alpha_1,\alpha_2}\space\space W(\alpha_1,\alpha_2) & = \dfrac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - \sum_{i=1}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^N \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^2 \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) \\ &+ \dfrac{1}{2}\sum_{i=3}^N \left( \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \right) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}\sum_{i=1}^2 \sum_{j=1}^2 \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) + \sum_{i=1}^2 \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \\ &+ \dfrac{1}{2}\sum_{i=3}^N \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) - (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i \\ & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\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} \\ &- (\alpha_1 + \alpha_2) - \sum_{i=3}^N \alpha_i + \dfrac{1}{2}\sum_{i=3}^N \sum_{j=3}^N \alpha_i \alpha_j y_i y_j K({\bf x_i} , {\bf x_j}) \end{aligned}α1​,α2​min​  W(α1​,α2​)​=21​i=1∑N​j=1∑N​αi​αj​yi​yj​K(xi​,xj​)−i=1∑N​αi​=21​i=1∑N​(j=1∑2​αi​αj​yi​yj​K(xi​,xj​)+j=3∑N​αi​αj​yi​yj​K(xi​,xj​))−(α1​+α2​)−i=3∑N​αi​=21​i=1∑2​(j=1∑2​αi​αj​yi​yj​K(xi​,xj​)+j=3∑N​αi​αj​yi​yj​K(xi​,xj​))+21​i=3∑N​(j=1∑2​αi​αj​yi​yj​K(xi​,xj​)+j=3∑N​αi​αj​yi​yj​K(xi​,xj​))−(α1​+α2​)−i=3∑N​αi​=21​i=1∑2​j=1∑2​αi​αj​yi​yj​K(xi​,xj​)+i=1∑2​j=3∑N​αi​αj​yi​yj​K(xi​,xj​)+21​i=3∑N​j=3∑N​αi​αj​yi​yj​K(xi​,xj​)−(α1​+α2​)−i=3∑N​αi​=21​K11​α12​+21​K22​α22​+y1​y2​K12​α1​α2​+y1​α1​i=3∑N​yi​αi​Ki1​+y2​α2​i=3∑N​yi​αi​Ki2​−(α1​+α2​)−i=3∑N​αi​+21​i=3∑N​j=3∑N​αi​αj​yi​yj​K(xi​,xj​)​

上式最后两项为常数项,对于求解最优的α1,α2\alpha_1,\alpha_2α1​,α2​毫无作用,舍去,则有SMO对于变量α,α2\alpha_,\alpha_2α,​α2​的子问题可以写成:
min⁡α1,α2W(α1,α2)=12K11α12+12K22α22+y1y2K12α1α2+y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2−(α1+α2)(29)s.t.α1y1+α2y2=−∑i=3Nyiαi=ζ(30)0≤α1≤C,i=1,2(31)\begin{aligned} \min_{\alpha_1,\alpha_2}\space\space & W(\alpha_1,\alpha_2) = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\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} - (\alpha_1 + \alpha_2) &\space\space\space\space(29)\\ s.t.\space\space & \alpha_1 y_1 + \alpha_2 y_2 = -\sum_{i=3}^N y_i \alpha_i = \zeta &\space\space\space\space(30)\\ & 0 \leq \alpha_1 \leq C ,i =1,2 &\space\space\space\space(31) \end{aligned}α1​,α2​min​  s.t.  ​W(α1​,α2​)=21​K11​α12​+21​K22​α22​+y1​y2​K12​α1​α2​+y1​α1​i=3∑N​yi​αi​Ki1​+y2​α2​i=3∑N​yi​αi​Ki2​−(α1​+α2​)α1​y1​+α2​y2​=−i=3∑N​yi​αi​=ζ0≤α1​≤C,i=1,2​    (29)    (30)    (31)​

  • Kij=K(xi,xj),i,j=1,2,⋯ ,NK_{ij} = K(x_i,x_j),i,j =1,2,\cdots,NKij​=K(xi​,xj​),i,j=1,2,⋯,N
  • ζ\zetaζ是常数

(2)确定变量范围

由于只有两个变量(α1,α2)(\alpha_1,\alpha_2)(α1​,α2​),约束可以用二维空间中的图形表示,如下图:

二变量优化问题图示

  • 不等式约束(31)使得(α1,α2)(\alpha_1,\alpha_2)(α1​,α2​)在盒子[0,C]×[0,C][0,C] \times [0,C][0,C]×[0,C]内;
  • 等式约束(30)使得(α1,α2)(\alpha_1,\alpha_2)(α1​,α2​)在平行于盒子[0,C]×[0,C][0,C] \times [0,C][0,C]×[0,C]的对角线的直线上。

因此要求的是目标函数在一条平行于对角线的线段上的最优值。这使得两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量α2\alpha_2α2​的最优化问题。

假设问题(29)-(31)的初始可行解为α1old,α2old\alpha_1^{old},\alpha_2^{old}α1old​,α2old​,最优解为α1new,α2new\alpha_1^{new},\alpha_2^{new}α1new​,α2new​,并且假设在沿着约束方向未经剪辑时α2\alpha_2α2​的最优解为α2new,unc\alpha_2^{new,unc}α2new,unc​,α2\alpha_2α2​剪辑后的解为α2new\alpha_2^{new}α2new​。
α2new\alpha_2^{new}α2new​必须满足式(31),则α2new\alpha_2^{new}α2new​的取值范围必须满足:
L≤α2new≤HL \leq \alpha_2^{new} \leq HL≤α2new​≤H

因为有式(30),则有:
(32)α1oldy1+α2oldy2=−∑i=3Nyiαi=α1newy1+α2newy2\alpha_1^{old} y_1 + \alpha_2^{old} y_2 = -\sum_{i=3}^N y_i \alpha_i = \alpha_1^{new} y_1 + \alpha_2^{new} y_2 \tag{32}α1old​y1​+α2old​y2​=−i=3∑N​yi​αi​=α1new​y1​+α2new​y2​(32)

  • 当y1与y2y_1与y_2y1​与y2​异号时:
    α1oldy1y2+α2oldy22=α1newy1y2+α2newy22⟹α2new=α2old−α1old+α1new\alpha_1^{old} y_1 y_2 + \alpha_2^{old} y_2^2 = \alpha_1^{new} y_1 y_2 + \alpha_2^{new} y_2^2 \Longrightarrow \alpha_2^{new} = \alpha_2^{old} - \alpha_1^{old} + \alpha_1^{new}α1old​y1​y2​+α2old​y22​=α1new​y1​y2​+α2new​y22​⟹α2new​=α2old​−α1old​+α1new​
    又因为:
    0≤α1≤C,0≤α2≤C0 \leq \alpha_1 \leq C,\space\space 0 \leq \alpha_2 \leq C0≤α1​≤C,  0≤α2​≤C
    所以有:
    L=max⁡(0,α2old−α1old),H=min⁡(C,C+α2old−α1old)L = \max(0,\alpha_2^{old} - \alpha_1^{old}),\space\space H = \min(C,C + \alpha_2^{old} - \alpha_1^{old})L=max(0,α2old​−α1old​),  H=min(C,C+α2old​−α1old​)

  • 当y1与y2y_1与y_2y1​与y2​同号时:
    α1oldy1y2+α2oldy22=α1newy1y2+α2newy22⟹α2new=α2old+α1old−α1new\alpha_1^{old} y_1 y_2 + \alpha_2^{old} y_2^2 = \alpha_1^{new} y_1 y_2 + \alpha_2^{new} y_2^2 \Longrightarrow \alpha_2^{new} = \alpha_2^{old} + \alpha_1^{old} - \alpha_1^{new}α1old​y1​y2​+α2old​y22​=α1new​y1​y2​+α2new​y22​⟹α2new​=α2old​+α1old​−α1new​
    所以有:
    L=max⁡(0,α2old+α1old−C),H=min⁡(C,α2old+α1old)L = \max(0,\alpha_2^{old} + \alpha_1^{old}- C),\space\space H = \min(C, \alpha_2^{old} + \alpha_1^{old})L=max(0,α2old​+α1old​−C),  H=min(C,α2old​+α1old​)

(3)最优求解

为了方便书写,令:
g(x)=∑j=1NαjyjK(x,xj)+b(w1)νi=∑j=3NαjyjK(xi,xj)=g(xi)−∑j=12αjyjK(xi,xj)−b(w2)Ei=g(xi)−yi=(∑j=1NαjyjK(xi,xj)+b)−yi(w3)η=K11+K22−2K12=∣∣ϕ(x1)−ϕ(x2)∣∣2(w4)\begin{aligned} & g(x) = \sum_{j=1}^N \alpha_j y_j K(x,x_j) + b &\space\space\space\space(w1)\\ & \nu_i = \sum_{j=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 &\space\space\space\space(w2)\\ & E_i = g(x_i) - y_i = \left(\sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + b \right) - y_i &\space\space\space\space(w3)\\ & \eta = K_{11} + K_{22} - 2K_{12} = ||\phi(x_1) - \phi(x_2)||^2 &\space\space\space\space(w4) \end{aligned}​g(x)=j=1∑N​αj​yj​K(x,xj​)+bνi​=j=3∑N​αj​yj​K(xi​,xj​)=g(xi​)−j=1∑2​αj​yj​K(xi​,xj​)−bEi​=g(xi​)−yi​=(j=1∑N​αj​yj​K(xi​,xj​)+b)−yi​η=K11​+K22​−2K12​=∣∣ϕ(x1​)−ϕ(x2​)∣∣2​    (w1)    (w2)    (w3)    (w4)​

  • 当i=1,2i=1,2i=1,2时,EiE_iEi​为函数g(x)g(x)g(x)对输入xix_ixi​的预测值与真实输出yiy_iyi​之差。
  • ϕ(x)\phi(x)ϕ(x)是输入空间到特征空间的映射

则目标函数可以写成:
(33)W(α1,α2)=12K11α12+12K22α22+y1y2K12α1α2+y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2−(α1+α2)=12K11α12+12K22α22+y1y2K12α1α2+y1ν1α1+y2ν2α2−(α1+α2)\begin{aligned} W(\alpha_1,\alpha_2) & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\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} - (\alpha_1 + \alpha_2) \\ & = \dfrac{1}{2}K_{11} \alpha_1^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_1 y_2 K_{12}\alpha_1 \alpha_2 + y_1 \nu_1 \alpha_1 + y_2 \nu_2 \alpha_2 - (\alpha_1 + \alpha_2) \tag{33} \end{aligned}W(α1​,α2​)​=21​K11​α12​+21​K22​α22​+y1​y2​K12​α1​α2​+y1​α1​i=3∑N​yi​αi​Ki1​+y2​α2​i=3∑N​yi​αi​Ki2​−(α1​+α2​)=21​K11​α12​+21​K22​α22​+y1​y2​K12​α1​α2​+y1​ν1​α1​+y2​ν2​α2​−(α1​+α2​)​(33)

由α1y1=ζ−α2y2及yi2=1\alpha_1 y_1 = \zeta - \alpha_2 y_2 及 y_i^2 =1α1​y1​=ζ−α2​y2​及yi2​=1,可将α1\alpha_1α1​表示为:
α1=(ζ−y2α2)y1\alpha_1 = (\zeta - y_2 \alpha_2) y_1α1​=(ζ−y2​α2​)y1​
将上式α1\alpha_1α1​代入目标函数(33)得到只含有α2\alpha_2α2​的目标函数:
(34)W(α2)=12K11(ζ−α2y2)2+12K22α22+y2K12(ζ−α2y2)α2+ν1(ζ−α2y2)+y2ν2α2−(ζ−y2α2)y1−α2W(\alpha_2) = \dfrac{1}{2}K_{11} (\zeta - \alpha_2 y_2)^2 + \dfrac{1}{2}K_{22} \alpha_2^2 + y_2 K_{12}(\zeta - \alpha_2 y_2) \alpha_2 + \nu_1 (\zeta - \alpha_2 y_2) + y_2 \nu_2 \alpha_2 - (\zeta - y_2 \alpha_2) y_1 - \alpha_2 \tag{34}W(α2​)=21​K11​(ζ−α2​y2​)2+21​K22​α22​+y2​K12​(ζ−α2​y2​)α2​+ν1​(ζ−α2​y2​)+y2​ν2​α2​−(ζ−y2​α2​)y1​−α2​(34)
上式对α2\alpha_2α2​求导得:
∂W∂α2=K11α2−K11ζy2+K22α2+K12ζy2−2K12α2−ν1y2+y2ν2+y1y2−1\dfrac {\partial W}{\partial {\alpha_2}} = K_{11} \alpha_2 - K_{11}\zeta y_2 + K_{22} \alpha_2 + K_{12}\zeta y_2 - 2K_{12}\alpha_2 - \nu_1 y_2 + y_2 \nu_2 + y_1 y_2 -1 ∂α2​∂W​=K11​α2​−K11​ζy2​+K22​α2​+K12​ζy2​−2K12​α2​−ν1​y2​+y2​ν2​+y1​y2​−1
令其为0,得到:
(K11+K22−2K12)α2=K11ζy2−K12ζy2+ν1y2−y2ν2−y1y2+y22=y2[K11ζ−K12ζ+(g(x1)−∑j=12αjyjK1j−b)−(g(x2)−∑j=12αjyjK2j−b)−y1+y2]\begin{aligned} \left(K_{11} + K_{22} - 2K_{12}\right)\alpha_2 &= K_{11}\zeta y_2 - K_{12}\zeta y_2 + \nu_1 y_2 - y_2 \nu_2 - y_1 y_2 + y_2^2 \\ & = y_2[ K_{11}\zeta - K_{12}\zeta + \left( g(x_1) - \sum_{j=1}^2 \alpha_j y_j K_{1j} - b \right) - \left( g(x_2) - \sum_{j=1}^2 \alpha_j y_j K_{2j} - b \right) - y_1 + y_2 ] \end{aligned}(K11​+K22​−2K12​)α2​​=K11​ζy2​−K12​ζy2​+ν1​y2​−y2​ν2​−y1​y2​+y22​=y2​[K11​ζ−K12​ζ+(g(x1​)−j=1∑2​αj​yj​K1j​−b)−(g(x2​)−j=1∑2​αj​yj​K2j​−b)−y1​+y2​]​

将ζ=α1oldy1+α2oldy2\zeta = \alpha_1^{old} y_1 + \alpha_2^{old} y_2ζ=α1old​y1​+α2old​y2​代入得到:
(K11+K22−2K12)α2new,unc=y2((K11+K22−2K12)α2oldy2+y2−y1+g(x1)−g(x2))=(K11+K22−2K12)α2old+y2(E1−E2)\begin{aligned} \left(K_{11} + K_{22} - 2K_{12}\right)\alpha_2^{new,unc} &= y_2((K_{11} + K_{22} - 2K_{12})\alpha_2^{old} y_2 + y_2 - y_1 + g(x_1)-g(x_2)) \\ & = (K_{11} + K_{22} - 2K_{12})\alpha_2^{old} + y2(E_1 - E_2) \end{aligned}(K11​+K22​−2K12​)α2new,unc​​=y2​((K11​+K22​−2K12​)α2old​y2​+y2​−y1​+g(x1​)−g(x2​))=(K11​+K22​−2K12​)α2old​+y2(E1​−E2​)​
将η=K11+K22−2K12=∣∣ϕ(x1)−ϕ(x2)∣∣2\eta = K_{11} + K_{22} - 2K_{12} = ||\phi(x_1) - \phi(x_2)||^2η=K11​+K22​−2K12​=∣∣ϕ(x1​)−ϕ(x2​)∣∣2代入得到:
(35a)α2new,unc=α2old+y2(E1−E2)η\alpha_2^{new,unc} = \alpha_2^{old} + \dfrac{y_2(E_1 - E_2)}{\eta} \tag{35a}α2new,unc​=α2old​+ηy2​(E1​−E2​)​(35a)

则得到剪辑后的α2\alpha_2α2​的解为:
(35)α2new={H,α2new,unc&gt;Hα2new,unc,L≤α2new,unc≤HL,α2new,unc&lt;L\alpha_2^{new} = \begin{cases} H, &amp; \alpha_2^{new,unc} &gt; H \\[2ex] \alpha_2^{new,unc}, &amp; L \leq \alpha_2^{new,unc} \leq H \tag{35}\\[2ex] L, &amp; \alpha_2^{new,unc} &lt; L \end{cases} α2new​=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​H,α2new,unc​,L,​α2new,unc​>HL≤α2new,unc​≤Hα2new,unc​<L​(35)

由α2new\alpha_2^{new}α2new​和等式约束(32)求得α1new\alpha_1^{new}α1new​是:
α1new=α1old+y1y2(α2old−α2new)\alpha_1^{new} = \alpha_1^{old} + y_1 y_2 (\alpha_2^{old} - \alpha_2^{new} ) α1new​=α1old​+y1​y2​(α2old​−α2new​)

于是得到问题(29)-(31)的解(α1new,α2new)(\alpha_1^{new},\alpha_2^{new})(α1new​,α2new​)

(4)计算阈值b和差值E

在每次完成两个变量的优化后,都要重新计算阈值b和差值E。

阈值b更新

当0&lt;α1new&lt;C0&lt; \alpha_1^{new} &lt; C0<α1new​<C时,由KKT条件(k3)(k6)(k8)可知:
∑i=1NαiyiKi1+b=y1\sum_{i=1}^N \alpha_i y_i K_{i1} + b = y_1i=1∑N​αi​yi​Ki1​+b=y1​
于是,
(36)b1new=y1−∑i=3NαiyiKi1−α1newy1K11−α1newy1K11b_1^{new} = y_1 - \sum_{i=3}^N \alpha_i y_i K_{i1} - \alpha_1^{new} y_1 K_{11} - \alpha_1^{new} y_1 K_{11} \tag{36}b1new​=y1​−i=3∑N​αi​yi​Ki1​−α1new​y1​K11​−α1new​y1​K11​(36)
由E1E_1E1​的定义有
E1=∑i=3NαiyiKi1+α1oldy1K11+α2oldy2K21+bold−y1E_1 = \sum_{i=3}^N \alpha_i y_i K_{i1} + \alpha_1^{old} y_1 K_{11} + \alpha_2^{old} y_2 K_{21} + b^{old} - y_1E1​=i=3∑N​αi​yi​Ki1​+α1old​y1​K11​+α2old​y2​K21​+bold−y1​
则式(36)等号右侧的前两项可写成:
y1−∑i=3NαiyiKi1=−E1+α1oldy1K11+α2oldy2K21+boldy_1 - \sum_{i=3}^N \alpha_i y_i K_{i1} = -E_1 + \alpha_1^{old} y_1 K_{11} + \alpha_2^{old} y_2 K_{21} + b^{old} y1​−i=3∑N​αi​yi​Ki1​=−E1​+α1old​y1​K11​+α2old​y2​K21​+bold
把上式代入式(36)可得:
(37)b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+boldb_1^{new} = -E_1 - y_1 K_{11}(\alpha_1^{new} - \alpha_1^{old}) - y_2 K_{21}(\alpha_2^{new} - \alpha_2^{old}) + b^{old} \tag{37}b1new​=−E1​−y1​K11​(α1new​−α1old​)−y2​K21​(α2new​−α2old​)+bold(37)

同样,如果0&lt;α2new&lt;C0&lt; \alpha_2^{new} &lt; C0<α2new​<C,那么,
(38)b2new=−E2−y1K12(α1new−α1old)−y2K22(α2new−α2old)+boldb_2^{new} = -E_2 - y_1 K_{12}(\alpha_1^{new} - \alpha_1^{old}) - y_2 K_{22}(\alpha_2^{new} - \alpha_2^{old}) + b^{old} \tag{38}b2new​=−E2​−y1​K12​(α1new​−α1old​)−y2​K22​(α2new​−α2old​)+bold(38)

  • 如果α1new,α2new\alpha_1^{new},\alpha_2^{new}α1new​,α2new​同时满足0&lt;αinew&lt;C,i=1,20&lt; \alpha_i^{new} &lt; C,\space i=1,20<αinew​<C, i=1,2,那么b1new=b2newb_1^{new} = b_2^{new}b1new​=b2new​。
  • 如果α1new,α2new\alpha_1^{new},\alpha_2^{new}α1new​,α2new​是0或者C,那么b1new,b2newb_1^{new} , b_2^{new}b1new​,b2new​以及他们之间的数都是符合KKT条件的阈值,这时选择它们的中点作为bnewb^{new}bnew

综上可得:
(39)bnew=b1new+b2new2b^{new} = \dfrac{b_1^{new} + b_2^{new}}{2} \tag{39}bnew=2b1new​+b2new​​(39)

差值EiE_iEi​更新

在每次完成两个变量的优化之后,还必须更新对应的EiE_iEi​值,并将他们保存在列表中。EiE_iEi​值的更新要用到bnewb^{new}bnew值,以及所有支持向量对应的αj\alpha_jαj​:
(40)Einew=∑SyjαjK(xi,xj)+bnew−yiE_i^{new} = \sum_S y_j \alpha_j K(x_i,x_j) + b^{new} - y_i \tag{40}Einew​=S∑​yj​αj​K(xi​,xj​)+bnew−yi​(40)

  • S是所有支持向量xjx_jxj​的集合。非支持向量的E值为0。

看了很多博客,其实统计学习方法里面的过程已经很完整,对其中一些过程做了补充,别看在求解时用了很多计算公式,其实里面没有很深的知识,就是变换多。

2、变量的选择方法

SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。

(1)第1个变量的选择

SMO称选择第1个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。具体的,检验训练样本点(xi,yi)(x_i,y_i)(xi​,yi​)是否满足KKT条件,即:
αi=0&ThickSpace;⟺&ThickSpace;yig(xi)≥10&lt;αi&lt;C&ThickSpace;⟺&ThickSpace;yig(xi)=1αi=C&ThickSpace;⟺&ThickSpace;yig(xi)≤1\begin{aligned} \alpha_i = 0 &amp; \iff y_i g(x_i) \geq 1 \\ 0 &lt; \alpha_i &lt; C &amp; \iff y_i g(x_i) = 1 \\ \alpha_i = C &amp; \iff y_i g(x_i) \leq 1 \\ \end{aligned}αi​=00<αi​<Cαi​=C​⟺yi​g(xi​)≥1⟺yi​g(xi​)=1⟺yi​g(xi​)≤1​

  • g(xi)=∑j=1NαjyjK(xi,xj)+bg(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + bg(xi​)=∑j=1N​αj​yj​K(xi​,xj​)+b

该检验是在精度ϵ\epsilonϵ范围内进行的,即在精度ϵ\epsilonϵ范围内的点不选用

  • 在检验过程中,外层循环首先遍历所有满足条件0&lt;αi&lt;C0 &lt; \alpha_i &lt; C0<αi​<C的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件。
  • 如果这些点都满足KKT条件,那么就遍历整个训练集,检验它们是否满足KKT条件。

(2)第2个变量的选择

SMO称选择第2个变量的过程为内层循环。假设在外层循环中已经找到第1个变量α1\alpha_1α1​,现在要在内层循环中找到第2个变量α2\alpha_2α2​。第2个变量选择的标准是希望能使α2\alpha_2α2​有足够大的变化

由式(35a)(35)可知,α2new\alpha_2^{new}α2new​是依赖于∣E1−E2∣|E_1 - E_2|∣E1​−E2​∣的,为了加快计算速度,一种简单的做法是选择α2\alpha_2α2​,使其对应的∣E1−E2∣|E_1 - E_2|∣E1​−E2​∣最大。因为α1\alpha_1α1​已定,E1E_1E1​也确定了。

  • 如果E1E_1E1​是正的,那么选择最小的EiE_iEi​作为E2E_2E2​;
  • 如果E1E_1E1​是负的,那么选择最大的EiE_iEi​作为E2E_2E2​;
  • 为了节省计算时间,将所有EiE_iEi​值保存在一个列表中。

在特殊情况下,如果内层循环通过以上方法选择的α2\alpha_2α2​不能使目标函数有足够的下降,那么采用以下启发式规则继续选择α2\alpha_2α2​。

  • 遍历在间隔边界上的支持向量点,依次将其对应的变量作为α2\alpha_2α2​试用,直到目标函数有足够的下降;
  • 若找不到合适的α2\alpha_2α2​,那么遍历训练数据集;
  • 若仍找不到合适的α2\alpha_2α2​,则放弃第1个α1\alpha_1α1​,再通过外层循环寻找另外的α1\alpha_1α1​。

3、SMO算法

输入:训练数据集T={(x1,y1),(x2,y2),⋯&ThinSpace;,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}T={(x1​,y1​),(x2​,y2​),⋯,(xN​,yN​)},其中,xi∈Rn,yi∈{−1,+1},i=1,2,⋯&ThinSpace;,Nx_i \in {\bf R}^n,\space y_i \in \{-1,+1\},\space i =1,2,\cdots,Nxi​∈Rn, yi​∈{−1,+1}, i=1,2,⋯,N,精度ϵ\epsilonϵ;

输出:近似解α^\hat{\alpha}α^,由于给算法设置了一个精度ϵ\epsilonϵ,所以最终求得是近似解。

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

(2)选取优化变量α1(k),α2(k)\alpha_1^{(k)},\alpha_2^{(k)}α1(k)​,α2(k)​,解析求解两个变量的最优化问题(29)(31),求得最优解α1(k+1),α2(k+1)\alpha_1^{(k+1)},\alpha_2^{(k+1)}α1(k+1)​,α2(k+1)​,更新α\alphaα为α(k+1)\alpha^{(k+1)}α(k+1);

(3)若在精度ϵ\epsilonϵ范围内满足停机条件:
∑i=1Nαiyi=0\sum_{i=1}^N \alpha_i y_i = 0i=1∑N​αi​yi​=0
0≤αi≤C,i=1,2,⋯&ThinSpace;,N0 \leq \alpha_i \leq C,\space i=1,2,\cdots,N 0≤αi​≤C, i=1,2,⋯,N
yi⋅g(xi)={≥1,{xi∣αi=0}=1,{xi∣0&lt;αi&lt;C}≤1,{xi∣αi=C}y_i \cdot g(x_i) = \begin{cases} \geq 1, &amp; \{x_i|\alpha_i = 0\} \\[2ex] = 1, &amp; \{x_i|0 &lt; \alpha_i &lt; C \} \\[2ex] \leq 1, &amp; \{x_i|\alpha_i = C\} \end{cases} yi​⋅g(xi​)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​≥1,=1,≤1,​{xi​∣αi​=0}{xi​∣0<αi​<C}{xi​∣αi​=C}​

  • g(xi)=∑j=1NαjyjK(xi,xj)+bg(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_i,x_j) + bg(xi​)=∑j=1N​αj​yj​K(xi​,xj​)+b

则转(4);否则令k=k+1k = k+1k=k+1,转(2);

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

对于深入研究支持向量机之前,看了一眼书,这个算法占的篇幅最大,公式最多,难度应该不一般。研究下来确实不一般,花费六天,每天至少5小时,最终下来感觉还算是比较了解了。其实支持向量机的模型和策略都很简单,模型就是一个超平面,策略就是最大化分类间隔,解决的问题从线性可分到线性近似可分,再到非线性可分;然后就是算法,对最终最优化问题的求解,为了求解快速、少占内存,有大牛发明了SMO算法(序列最小最优算法)。

如果是想研究支持向量机可以按我上面的总结看下来绝对没问题,大致内容和李航的统计学方法一致,我对中间涉及的一些数学知识做了一定补充,这也是我这篇博客与课本差别之一,对一些难以理解的地方详细展开和知识补充。这篇总结涉及的知识点很多,若有不正确的地方还望指出,以免误导他人。

之前的学习的几个算法都是搞懂再来做总结,支持向量机知识点太多,一下全部搞懂挺难的,是知道一点就总结一点,遇到过不去的就停下来找博客,看别人的讲解,就这样把难点逐个击破,然后整个算法也就总结完了。这也相当于应用了SMO算法的思想,化整为零,逐个击破,每一个算法都是智慧的结晶。

参考资料:

  • 统计学习方法—李航
  • 从KKT条件下的拉格朗日乘法到拉格朗日对偶问题
  • 机器学习实战教程(八)
  • 以及文中链接

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗********************************************∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
未完待续

07_支持向量机3_统计学习方法相关推荐

  1. 07_支持向量机2_统计学习方法

    文章目录 四.非线性支持向量机与核函数 1.非线性支持向量机的优化问题 2.核函数K(x,z) (1)半正定矩阵 (2)核函数方法实施步骤 3.常用的核函数 4.非线性支持向量机学习算法 支持向量机内 ...

  2. 07_支持向量机1_统计学习方法

    文章目录 一.支持向量机的介绍 二.支持向量机模型 1.何为分类间隔 (1)函数间隔 (2)几何间隔 2.分类间隔最大化 3.支持向量机中涉及的数学知识 (1)凸函数 (2)常见最优化问题 (3)拉格 ...

  3. 支持向量机-《统计学习方法》学习笔记

    支持向量机-<统计学习方法>学习笔记 1 概述 2 线性可分支持向量机 2.1 线性可分支持向量机简介 2.2 寻找最优分离超平面 2.3 函数间隔 2.4 几何间隔 2.5 (硬)间隔最 ...

  4. 统计学习方法 | 第7章 支持向量机

    第7章 支持向量机 <统计学习方法>Python代码实现 [转载自Github开源项目]https://github.com/fengdu78/lihang-code 1.支持向量机最简单 ...

  5. 【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类

    本文摘要 · 理论来源:[统计学习方法]第七章 SVM · 技术支持:pandas(读csv).numpy.sklearn.svm.svm思想.matplotlib.pyplot(绘图) · 代码目的 ...

  6. 统计学习方法笔记(七)-线性支持向量机原理及python实现

    线性支持向量机 线性支持向量机 定义 线性支持向量机 线性支持向量机学习算法 代码案例 TensorFlow 案例地址 线性支持向量机 实际场景中训练数据往往不是线性可分的,当训练数据近似线性可分时, ...

  7. 统计学习方法笔记(六)-非线性支持向量机原理及python实现

    非线性支持向量机 非线性支持向量机 定义 非线性支持向量机 算法 非线性支持向量机学习算法 代码案例 TensorFlow 案例地址 非线性支持向量机 定义 非线性支持向量机 从非线性分类训练集,通过 ...

  8. 统计学习方法笔记(五)-线性可分支持向量机原理及python实现

    支持向量机 支持向量机 线性可分支持向量机 最大间隔法 代码实现 案例地址 支持向量机 支持向量机(support vector machines,SVM)是一种二分类模型,它的基本类型是定义在特征空 ...

  9. 统计学习方法|支持向量机(SVM)原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

最新文章

  1. deepin linux桌面设置,Deepin系统的桌面样式:高效模式和时尚模式
  2. linux命令 socket,如何从linux中的命令行向socket.io websocket发送消息?
  3. Python案例:飞船向右发射子弹
  4. scipy.misc.imresize
  5. 使用SQL Server发布数据库快照遇到错误:对路径”xxxxx“访问被拒绝的解决方法...
  6. AD学习之旅(10)— 导入元器件到PCB文件
  7. 昨晚《体育世界》LBJ在CCTV5
  8. 【数据科学】迄今最全面的数据科学应用总结:16个分析学科及落地应用
  9. Windows10系统输入法热键设置
  10. 设计模式的七大原则——开闭原则(下)
  11. 路由器、交换机的基本配置 1
  12. Pytorch:optim.zero_grad()、pred=model(input)、loss=criterion(pred,tgt)、loss.backward()、optim.step()的作用
  13. 如何实现上拉加载,下拉刷新?
  14. 画漫画软件有哪些?这几款绘画软件必不可少!
  15. 二硫化钼量子点修饰纳米金棒/CdS纳米棒|二硫化钼量子点/g-C3N4复合光催化剂|马来酰亚胺修饰二硫化钼MoS2-MAL
  16. AES解密类,解密案例 解决No matching distribution found for Crypto
  17. 初学者的R markdown设置
  18. [生存志] 第73节 勾践隐忍灭吴
  19. HDFS的文件压缩格式
  20. 怎么用计算机来玩反恐精英,你第一次去网吧是为了玩什么游戏?网友:反恐精英一直到英雄联盟...

热门文章

  1. js实现鼠标放在一级菜单,下滑出二级菜单
  2. 实验一 命令解释程序的编写
  3. BZOJ3028 食物
  4. Broadcom fullmac WLAN 驱动解析(1)
  5. extend the gridview control
  6. javascript阻止事件冒泡和浏览器的默认行为
  7. IDEA的postfix自定义,自定义postfix
  8. matlab 求向量的交集_从零开始的matlab学习笔记——(16)函数绘图
  9. raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样
  10. mysql maximum idle_MySQL的MaxIdleConns不合理,会变成短连接的原因