Leo Zhang

A simple man with my own ideal

SVM学习——软间隔优化

       回想SVM学习——线性学习器一文中提到的Rosenblatt感知器的原始形式,当时的讨论是基于输入空间线性可分的情况,包括后来的最大间隔算法,通过核函数隐式的将输入空间映射到了一个高维特征空间中了,此时的假设同样是映射后的数据线性可分,那自然就会想到如果输入空间或者由核函数映射得到的特征空间依然是线性不可分的可怎么办呀?这个时候以前的算法一定是不收敛的,对,它会不停的振荡;SVM学习——求解二次规划问题一文中提到的最大间隔算法的K-T互补条件y_i(<w,x_i>+b) \geq 1,我们已经了解到一个信息:支持向量包括了所有重构超*面的必要信息,就算其他点不要了也能得到这个超*面,而支持向量越少,泛化能力越强,另外,由SVM学习——统计学习理论一文中关于学习器推广能力的界的讨论可以知道界的良好性能在于它不与特征空间的维度显式相关,从最大间隔算法本身来看并没有控制支持向量数目的痕迹,一切都是基于样本数据的,该算法唯一的自由度体现在对核函数的选择,但是用很强的核将数据分开又可能导致过拟合发生;前面说到的振荡情况,其实是该算法对噪声点过于敏感的体现,换句话说,最大间隔算法想过于完美的将数据进行无误差的训练,在现实当中,由于存在噪声,所以这样的想法其实是不符合实际的, 这可能是整个学习器受制于个别几个点,于是引出软间隔优化,顾名思义,它的出现想要解决前面的问题,使训练器能容忍噪声的同时顾及到更多的样本。

        先了解一下间隔分布的另一个度量方法,它将间隔的概念从最靠*超*面的点推广到了所有训练集数据,因此更能说明训练样例的全局特性 。

定义1:设\gamma为目标间隔,且\gamma > 0,任意一个输入样本(x_i,y_i)对应于超*面(w,b)和目标间隔\gamma松弛变量是:

                                               \xi((x_i,y_i),(w,b),\gamma)=\xi_i=max(\gamma-y_i(<w,x_i>+b),0)

这个定义很有意思,当样本没有被误分时,y_i(<w,x_i>+b)为正,因此,\xi \leq \gamma,当样本被误分y_i(<w,x_i>+b)为负,\xi > \gamma,于是||\xi||就描述了训练集中没有以间隔\gamma分开以及误分的情况,例如,经典二分类SVM中,设定\gamma=1,则\xi_i=max(1-y_i(<w,x_i>+b),0)当样本被误分或者没有以间隔\gamma分开时,其松弛变量不为零,而没有被误分时,其松弛变量为0,如图所示:

image

图中除了A、B两点以外的点,松弛变量都为0,点A是一个没有以间隔\gamma分开的样例,而点B是被误分的样例,它们的松弛变量都不为零。

       对原始最大间隔优化问题引入上面的松弛变量,可以将约束转变为:

                                                     s.t.  y_i(<w,x_i>+b) \geq 1- \xi_i   (i=1,2,...n)

                                                            \xi_i \geq 0   (i=1,2,...n)

对于原问题的形式,有如下两种:二阶范数软间隔和一阶范数软间隔。

1、二阶范数软间隔

      原始问题为:

                                          min\quad \quad \frac{1}{2}<w,w>+\frac{1}{2}C\sum\limits_{i=1}^{n}\xi_i^2                        其中C叫做惩罚因子,\xi就是松弛变量了

                                                    s.t.  y_i(<w,x_i>+b) \geq 1- \xi_i   (i=1,2,...n)                              

推导一下下:原问题的拉格朗日函数为:

                                          L(w,b,\xi,\alpha)=\frac{1}{2}<w,w>+\frac{1}{2}C\sum\limits_{i=1}^{n}\xi_i^2-\sum\limits_{i=1}^{n}\alpha_i(y_i(<w,x_i>+b)-1+\xi_i))

于是有:

                                          \frac{\partial{L}}{\partial
{w}}=w-\sum\limits_{i=1}^{n}y_i\alpha_i x_i

                                          \frac{\partial{L}}{\partial{b}}=\sum\limits_{i=1}^{n}y_i\alpha_i

                                          \frac{\partial{L}}{\partial{\xi}}=C\xi-\alpha

让上三式都等于0,得到下面的对偶目标函数:

                                          L(w,b,\xi,\alpha)=\sum\limits_{i=1}^{n}{\alpha_i}-\frac{1}{2}\sum\limits_{i,j=1}^{n}y_iy_j\alpha_i\alpha_j<x_i,x_j>+\frac{1}{2C}<\alpha,\alpha>-\frac{1}{C}<\alpha,\alpha>

                                                          =\sum\limits_{i=1}^{n}{\alpha_i}-\frac{1}{2}\sum\limits_{i,j=1}^{n}y_iy_j\alpha_i\alpha_j<x_i,x_j>-\frac{1}{2C}<\alpha,\alpha>

总结一下,用核函数替换内积得到:

                                           max \quad \quad W(\alpha)=\sum\limits_{i=1}^{n}\alpha-\frac{1}{2}\sum\limits_{i,j=1}^{n}{y_iy_j\alpha_i\alpha_j(K(x_i,x_j)+\delta_{i,j}\frac{1}{C})

                                           s.t.     \sum\limits_{i=1}^{n}y_i\alpha_i=0

                                                     \alpha_i \geq 0          (i=1,2,...n)  其中 \delta_{i,j}=
\left{
\begin{array}{c}
0 \quad \quad \quad i \neq j\\
1 \quad \quad \quad i=j\\
\end{array}\right
}

求得最优解\alpha^*后得到的几何间隔为:

                                            \gamma=(\sum\limits_{i \in sv}\alpha^*-\frac{1}{C}<\alpha^*,\alpha^*>)^{-1/2}

可以看到C的选取影响到最终的间隔,C越大,说明对噪声点越重视,因此噪声点的影响变大,最后求得的几何间隔就越大。

2、一阶范数软间隔

     原始问题为:

                                          min \quad \quad \frac{1}{2}<w,w>+C\sum\limits_{i=1}^{n}\xi_i                        其中C为惩罚因子,\xi为松弛变量

                                                    s.t.  y_i(<w,x_i>+b) \geq 1- \xi_i   (i=1,2,...n)

                                                           \xi_i \geq 0   (i=1,2,...n)

原问题的拉格朗日函数为:

                                          L(w,b,\xi,\alpha,\mu)=\frac{1}{2}<w,w>+C\sum\limits_{i=1}^{n}\xi_i-\sum\limits_{i=1}^{n}\alpha_i(y_i(<w,x>+b)-1+\xi_i)-\sum\limits_{i=1}^{n}\mu_i\xi_i

处理方法类似,得到:

                                          \frac{\partial{L}}{\partial
{w}}=w-\sum\limits_{i=1}^{n}y_i\alpha_i x_i

                                          \frac{\partial{L}}{\partial{b}}=\sum\limits_{i=1}^{n}y_i\alpha_i

                                          \frac{\partial L}{\partial \xi}=C-\alpha-\mu

让上三式都等于0,得到下面的对偶目标函数:

                                          L(w,b,\xi,\alpha,\mu)=\sum\limits_{i=1}^{n}\alpha_i-\frac{1}{2}\sum\limits_{i,j=1}^{n}y_iy_j\alpha_i\alpha_j<x_i,x_j>

用核函数替换内积得到:

                                          
max \quad \quad W(\alpha)=\sum\limits_{i=1}^{n}\alpha-\frac{1}{2}\sum\limits_{i,j=1}^{n}{y_iy_j\alpha_i\alpha_j(K(x_i,x_j))

                                           s.t.     \sum\limits_{i=1}^{n}y_i\alpha_i=0

                                                     0 \leq \alpha_i \leq C          (i=1,2,...n)

求得最优解\alpha^*后得到的几何间隔为:

                                            \gamma=(\sum\limits_{i,j \in sv}y_iy_j\alpha_i^*\alpha_j^*K(x_i,x_j))^{-1/2}

我晕,和以前的最大间隔算法中的对偶形式一样,仅多了一个约束C-\alpha-\mu=0,也就是此时的K-T互补条件是:

                                          \alpha_i(y_i(<w,x_i>+b)- 1+\xi_i)=0      (i=1,2,...n)

                                                    \mu_i\xi_i=(\alpha_i-C)\xi_i=0                           (i=1,2,...n)

从上面式子可以得到的信息是:当\alpha_i=C时,松弛变量\xi_i不为零,此时其几何间隔小于1/||w||,对应样本点就是误分点;当\alpha_i=0时,松弛变量\xi_i为零,此时其几何间隔大于1/||w||,对应样本点就是内部点,即分类正确而又远离最大间隔分类超*面的那些样本点;而0 < \alpha_i  <C时,松弛变量\xi_i为零,此时其几何间隔等于1/||w||,对应样本点就是支持向量。\alpha_i的取值一定是[0,C],这意味着向量\alpha被限制在了一个 边长为C的盒子里,神奇吧,嘿嘿。

        到底使用一阶范数软间隔还是二阶范数软间隔取决于数据情况。

        关于惩罚因子C的作用可以用下面的图来说明,使用的工具是libsvm,采用线性核函数,除了惩罚因子外其它参数默认:

1、原始数据分布:

image

                                                   

可以看到有四个粉色的点离群的比较离谱,我们基本可以认为它们是噪声点了。

2、惩罚因子取值为C=100

image

 

2、惩罚因子取值为C=1000

image

2、惩罚因子取值为C=100000

image

这几个图说明啥子问题呢?C越大表明你越不想放弃离群点,分类超*面越向离群点移动,于是最终的分类超*面就越容易被离群点给掌控喽。

       关于libsvm,现在应该是3.0版本了,可以从http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html 的Download LIBSVM这一小节的得到,有两个版本,一个是Windows下的,一个是Linux下的,这里面包含源码哦,可以好好研究一下。

posted on 2010-12-22 11:09  Leo Zhang  阅读(7675)  评论(9编辑  收藏

导航