支持向量机原理(二)线性支持向量机的软间隔最大化模型

        上一节当中我们对线性可分,即硬间隔情况进行了介绍,本节继续介绍一下支持向量的软间隔模型。

1.线性分类SVM面临的问题      

      我们在讨论线性支持向量机的时候,就假定数据是线性可分的,也就是说可以找到一个可行的超平面可以将数据完全分开,但是有的时候会在可分类的样本中混入异常点,我们称之为outlier,存在这种outlier导致样本不能线性可分,比如下面的这张图,本来所有的样本都是可以线性分类的,但是由于一个橙色和一个蓝色的异常点导致了我们没法按照之前的线性支持向量机中的方法来进行分类。

                                                            支持向量机原理(二)线性支持向量机的软间隔最大化模型_第1张图片

                                                                               图1:混入异常点的样本

       或者还有这样一种情况,如下图所示,其中的异常点并没有那么严重的不可分,但是会严重影响预测效果,如果我们不考虑左上角的蓝色异常点,那么超平面会是图中的红线,但是由于存在这样的一个异常点,导致了我们的超平面是下图中的粗虚线,这样会严重影响我们的分类模型预测效果。

                                                             支持向量机原理(二)线性支持向量机的软间隔最大化模型_第2张图片

                                                                                 图2:SVM中的outlier

2.线性分类SVM的软间隔最大化

        这里的软间隔(soft margin)是相当于上一节的硬间隔而言的,回顾一下硬间隔最大化的条件:

                                                                               min \frac{1}{2}\left\|w\right\|^{2}

                                                                 \begin{matrix} s.t. &y_i(w^{T}x_i+b)\geq1(i=1,2,3,...n) \end{matrix}                                              (2.1)

         SVM对训练集里面的每个样本(x_{i},y_{i})引入了一个松弛变量\xi _i\geq0,使函数间隔加上松弛变量大于等于1,即:

                                                                          y_i(w^Tx_i+b)\geq1-\xi_i                                                                  (2.2)

          松弛变量\xi_i对应着数据点x_i允许偏离函数间隔的量,当然\xi_i也不是无限大的,每一个松弛变量都对应这一个代价,所以要在原来的目标函数后面加上一项,使得这些\xi_i的总和也要最小,即得到软间隔最大化的学习条件:

                                                                       min\frac{1}{2}\left\|w\right\|+C\sum_{i=1}^{n}\xi_i

                                                               \begin{matrix} s.t. &y_i(w^{T}x_i+b)\geq1-\xi_i&(i=1,2,3...n) \end{matrix}                                      (2.3)

                                                                        \begin{matrix} \xi_i\geq0 & (i=1,2,3,...,n) \end{matrix}

         这里的C作为惩罚参数,C越大,对误分类的惩罚越大,C越小,对误分类的惩罚越小。也就是说,我们希望1/2*\left\|w\right\|^2尽量小,误分类的点尽可能少,用于控制目标函数中两项之间的权重,在实际应用当中,需要调参数来选择。在这里\xi_i是需要优化的变量,这个目标函数的优化和上一篇线性可分的SVM方式类似,接下来就对线性分类的SVM的软间隔最大化进行学习优化。 

3.线性分类SVM的软间隔最大化目标函数的优化 

       和之前的方法类似将限制或约束条件加入到目标函数当中去,运用拉格朗日函数将原约束问题转化为无约束问题,如下:

                                    L(w,b,\xi,\alpha,r)=\frac{1}{2}\left\|w\right\|+C\sum_{i=1}^{n}\xi_i-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1+\xi_i)-\sum_{i=1}^{n}r_i\xi_i                 (3.1) 

      其中r_i\geq0,\alpha_i\geq0均为拉格朗日系数。现在我们要优化的目标函数是:

                                                                        \begin{matrix} \underset{w,b,\xi}{min} & \underset{\alpha_i\geq0,r_i\geq0}{max}L(w,b,\xi,\alpha,r) \end{matrix}                                                            (3.2)

      这个优化目标同样满足KKT条件,我们可以通过拉格朗日对偶将要优化的目标转化为等价的对偶问题来求解:

                                                                       \begin{matrix} \underset{\alpha_i\geq0,r_i\geq0}{max}&\underset{w,b,\xi}{min}L(w,b,\xi,\alpha,r) \end{matrix}                                                              (3.3)

     先求优化函数对w,b,\xi的极小值,然后在求拉格朗日乘子\alpha,r的极大值。首先来求对于w,b,\xi的极小值,这个可以通过求偏导数来求得:

 

                                                                      \frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{n}\alpha_iy_ix_i

                                                                       \frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{n}\alpha_iy_i=0                                                                      (3.4)

                                                                      \frac{\partial L}{\partial \xi}=0\Rightarrow C-\alpha_i-r_i=0

将(3.4)式带入到(3.1)式当中消去wb,得:

                                          L(w,b,\xi,\alpha,r)=\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^{n}\xi_i-\sum_{i=1}^{n}\alpha_i[y_1(w^Tx_i+b))-1+\xi_i]+\sum_{i=1}^{n}r_i\xi_i            

                                                                    =\frac{1}{2}\left\|w\right\|^2-\sum_{i=1}^{n}\alpha_i[y_i(w^Tx_i+b)-1+\xi_i)]+\sum_{i=1}^{n}r_i\xi_i

                                                                     =\frac{1}{2}\left\|w\right\|^2-\sum_{i=1}^{n}\alpha_i[y_i(w^Tx_i+b)-1)] 

                                                                     =\frac{1}{2}w^Tw-\sum_{i=1}^{n}\alpha_iy_iw^Tx_i-\sum_{i=1}^{n}\alpha_iy_ib+\sum_{i=1}^{n}\alpha_i

                                                                      =\frac{1}{2}w^T\sum_{i=1}^{n}\alpha_iy_ix_i-w^T\sum_{i=1}^{n}\alpha_iy_ix_i-b\sum_{i=1}^{n}\alpha_iy_i+\sum_{i=1}^{n}\alpha_i

                                                                      =-\frac{1}{2}w^T\sum_{i=1}^{n}\alpha_iy_ix_i+\sum_{i=1}^{n}\alpha_i

                                                                       =-\frac{1}{2}(\sum_{i=1}^{n}\alpha_iy_ix_i)^T(\sum_{i=1}^{n}\alpha_iy_ix_i)+\sum_{i=1}^{n}\alpha_i

                                                                                                                                  (3.5) 

          仔细观察(3.5)式,会发现这个式子和硬间隔SVM的优化目标是一样的,唯一不一样的是约束条件,现在把软间隔得优化目标写出来:

                                                                      \underset{\alpha}{max}\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j      

                                                                                    s.t. \sum_{i=1}^{n} \alpha_iy_i=0                                                                        (3.6)

                                                                                      C-\alpha_i-r_i=0      

                                                                                \alpha_i\geq0,r_i\geq0 (i=1,2,3,...,n)                

对于C-\alpha_i-r_i=0,\alpha_i\geq0,r_i\geq0,可以先消去r_i,只留下\alpha_i,也就是说0\leq \alpha_i\leq C。这就是软间隔最大化时的线性可分SVM的优化目标形式,和上一篇的硬间隔最大化的线性可分SVM相比,我们仅仅是多出来了一个约束条件0\leq\alpha_i\leq C,我们依然可以通过SMO算法来求上式极小化时对应的\alpha_向量就可以求出wb了。

 4、软间隔最大化时的支持向量

       在硬间隔最大化的时候,支持向量满足y_i(w^Tx_i+b)-1=0就可以了。根据KKT条件中的对偶互补条件\alpha_i^*(y_i(w^Tx_i+b)-1)=0,如果\alpha_i^*>0,则有y_i(w^Tx_i+b)=1,即点在支持向量上,否则如果\alpha_i^*=0,则有y_i(w^Tx_i+b)\geq1,即样本在支持向量上或者已经被正确分类了。

      类似的对于软间隔支持向量机,KKT条件是:

                                                                        \left\{\begin{matrix} \alpha_i\geq0,r_i\geq0\\ y_i(w^Tx_i+b)-1+\xi_i\geq0\\ \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\ \xi_i\geq0,r_i\xi_i=0 \end{matrix}\right.                                                 (3.7)

  在软间隔最大化时,稍复杂一些,因为我们每一个样本(x_i,y_i)引入了松弛变量\xi_i,通过下图来说明软间隔最大化时支持向量的情况,第i个点对应到类别支持向量的距离为\xi_i/\left\|w\right\|,根据软间隔最大化时KKT条件中对偶互补条件\alpha_i^*(y_i(w^Tx_i+b)-1+\xi_i)=0,分类来说明一下:

     1)如果\alpha=0,\xi_i=0,那么y_i(w^Tx_i+b)-1\geq0,即样本在间隔边界上或者已经被正确分类。如图中所有远离间隔边界的点。

     2)如果0<\alpha<C,那么\xi_i=0,y_i(w^Tx_i+b)-1=0,即点在间隔边界上。

     3)如果\alpha=C,说明这是一个可能比较异常的点,需要检查此时的\xi_i

            i)如果0\leq\xi_i\leq1,那么点被正确分类,但是却在超平面和自己的类别的间隔边界之间,比如图中的样本2和4。

           ii)如果\xi_i=1,那么点在分离超平面上,无法被正确分类。

           iii) 如果\xi_i>1,那么点在超平面的另一侧,也就是说,这个点不能被正常分类。如图中的样本1和3。

                                                                                             

                                                                                         图3:软间隔的支持向量

5、软间隔最大化的线性可分SVM的算法过程

     和线性可分硬间隔SVM一样,在这里我们对软间隔SVM的算法过程也做一个总结。


输入:线性可分的m个样本(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_n,y_n),其中的x是有多维特征的特征向量,y为二元输出,值为1或者-1。

输出:分离超平面的参数w^*,b^*的分类决策函数。

     1)选择一个惩罚系数C>0,构造约束优化问题

                                                        \underset{\alpha_i\geq0}{max}\sum_{i=1}^{n}\alpha_i-\sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j

                                                                    s.t.\sum_{i=1}^{n}\alpha_iy_i=0                                              

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

     2) 用SMO算法求出上式最大时对应的\alpha向量的值\alpha^*

     3) 计算w^*=\sum_{i=1}^{n}\alpha^*y_ix_i   

     4) 找出所有的S个支持向量对应的样本(x_s,y_s),通过y_s(\sum_{i=1}^{n}\alpha_iy_ix_i^Tx_s+b)=1,计算出每个向量(x_s,y_s)对应的b_s^*,计算出这些b_s^*=y_s-\sum_{i=1}^{n}\alpha_iy_ix_i^Tx_s,所有的b_s^*对应的平均值即为最终的b^*=\frac{1}{S}\sum_{i=1}^{S}b_s^*

     5)得到最终的分类超平面为:w^*x+b^*=0,最终的分类决策函数为:f(x)=sign(w^*x+b^*)


   下一节会继续介绍线性不可分的SVM模型以核函数。                                              

你可能感兴趣的:(机器学习)