Andrew Ng机器学习公开课笔记 -- 支持向量机 (二)

SMO优化算法(续)

下面根据Platt的文章来找到启发式搜索的方法求b值的公式

定义:特征到结果的输出函数为:

                                                        (1)

  与之前的wTx(i)+b实质是一致的。

  原始优化问题为:

                      (2)

  求导得:

                   (3)

  经过对偶后为:

    

  这里与W函数是一样的,只是符号求反后,变成求最小值了。yi和y(i)是一样的,表示的都是第 i 个样本的输出结果。

  经过加入松弛变量ξi 后,模型修改为:

            (4)

                             (5)

  将公式(3)代入(1)中:

                        (6)

    这个过程和之前对偶过程一样。

  重新整理我们要求解的问题为:

          (7)

  与之对应的KKT条件为:

                        (8)

  这个KKT条件说明,在两条间隔线外面的点,对应前面的系数αi为0,在两条间隔线里面的对应αi为C,在两条间隔线上的对应的系数αi在0到C之间。

  将我们之前得到L和H重新拿过来:

          (9)

             (10)

  之前我们将问题进行到这里,然后说将α1用α2表示后代入W中,这里将代入ψ中,得:

      (11)

  其中

             (12)

  这里的clip_image093clip_image095代表某次迭代前的原始值,因此是常数,而clip_image009[14]clip_image012[12]是变量,待求。公式(11)中的最后一项是常数。

  由于clip_image009[14]clip_image012[12]满足下面公式:

            (13)

  因为clip_image099的值是固定值,在迭代前后不会变。

  那么用s表示y1y2,上式两边乘以y1时,变为:  

          (14),其中

  代入(11)中,得:

        (15)

  这时只有clip_image012[12]是变量了,求导:

 

      (16)

  如果ψ的二阶导数大于0(凹函数),那么一阶导数为0时就是极小值了。

  假设其二阶导数为0(一般成立),那么上式化简为:

        (17)

  将w和v代入后,继续化简推导,得:

       (18)

  我们使用η来表示:

                  (19)

  通常情况下目标函数是正定的,也就是说,能够在直线约束方向上求得最小值,并且η>0。

  那么我们在(18)式两边同除以η可以得到:

                        (20)

  这里使用clip_image061[1]表示优化后的值,clip_image012[15]是迭代前的值,clip_image120

  与之前提到的一样,clip_image061[1]不是最终迭代后的值,需要进行约束 :

    

  那么

    

  在特殊情况下,η可能不为正,如果核函数K不满足Mercer定理,那么目标函数可能变得非正定,η可能出现负值。即使K是有效的核函数,如果训练样本中出现相同的特征x,那么η仍有可能为0。SMO算法在η不为正值的情况下仍有效。为保证有效性,我们可以推导出η就是ψ的二阶导数,η<0,ψ没有极小值,最小值在边缘处取到,η = 0时更是单调函数了,最小值也在边缘处取得,而clip_image012[15]的边缘就是L和H。这样将clip_image012[15]=L和clip_image012[15]=H分别代入ψ中即可求得ψ的最小值,应用的clip_image012[15]=L还是clip_image012[15]=H也可以知道了。具体计算公式如下:

    

  至此,迭代关系除了b的推导以外,都已经推出。 

  b每一步都要更新,因为前面的KKT条件指出了clip_image084[3]clip_image136的关系,而clip_image138和b有关,在每一步计算出clip_image084[4]后,根据KKT条件来调整b。

  b的更新有几种情况:

  选择b使得关于乘子clip_image009[14]clip_image009[14]的KKT条件成立

  

 

  如果在界内,则;如果在界内,

  如果都在界上,那么b1和b2之间的任何数据都满足KKT条件,都可作为b的更新值,一般取

 

  这里的界内值0<clip_image084[4]<C,界上就是等于0或者C了。

  前面两个公式推导可以根据    和 对于0<clip_image084[4]<C有yiui=1的KKT条件推出。

  这样,全部参数的更新公式都已经介绍完毕。(如果使用的是线性核函数,我们就可以继续使用w了,这样不用扫描整个样本库来作内积了。)

  w值更新方法:

    ,而

 

SMO中拉格朗日乘子的启发式选择方法

  主要思想:每次选择拉格朗日乘子的时候,优先选择样本前面系数0<clip_image084[4]<C的clip_image084[4]作优化,因为在界上(clip_image084[4]为0或C)的样例对应的系数clip_image084[4]一般不会更改。

  这条启发式搜索方法是选择第一个拉格朗日乘子用的,比如前面的clip_image012[15]。那么这样选择的话,是否最后会收敛?幸运的是Osuna定理告诉我们只要选择出来的两个clip_image084[4]有一个违背了KKT条件,那么目标函数在一步迭代后值会减小。违背KKT条件不代表0<clip_image084[4]<C,在界上也有可能违背。因此在给定初值clip_image084[4]=0后,先对所有样例进行循环,循环中碰到违背KKT条件的(不管是界上还是界内)都进行迭代更新。等这轮过后,如果没有收敛,第二轮就只针对0<clip_image084[4]<C的样例进行迭代更新。

  在第一个乘子选择后,第二个乘子也使用启发式方法选择,第二个乘子的迭代步长大致正比于|E1-E2|,选择第二个乘子能够最大化|E1-E2|。即当E1为正时选择负的绝对值最大的E2,反之,选择正值最大的E2

  最后的收敛条件是在界内(0<clip_image084[4]<C)的样例都能够遵循KKT条件,且其对应的clip_image084[4]只在极小的范围内变动。

 

总结

  SVM思想简单,就是在样本中去找分隔线,为了评判哪条分界线更好,引入了几何间隔最大化的目标。之后的所有推导都是去解决目标函数的优化问题。

  在解决最优化的过程中,发现了w可以由特征向量内积来表示,进而发现了核函数,仅需要调整核函数就可以将特征进行低维到高维的变换,在低维上进行计算,实质结果表现在高维上。由于并不是所有的样本都可分,为了保证SVM的通用性,进行了软间隔的处理,导致的结果就是将优化问题变得更加复杂。然而惊奇的是,松弛变量没有出现在最后的目标函数中。最后的优化求解问题,也被拉格朗日对偶和SMO算法化解,是SVM趋于完美。

 

转自:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html

 

posted on 2014-10-22 20:24  djmjsj  阅读(116)  评论(0)    收藏  举报

导航