3.Maximum margin hyperplane for linearly nonseparable classes(适应非线性可分数据集的最大间隔分类器)

前两篇尚未从博客园转过来,地址如下:
初译 Support Vector Machines:A Simple Tutorial(一)
初译 Support Vector Machines:A Simple Tutorial(二)
现实生活中很少会有完全线性可分的问题,更多的情况下我们生活中的数据集无法被一个超平面完美的分开,我们称这种数据集是overlapping的,对于overlapping的数据集,下述公式无法使用:
初译 Support Vector Machines:A Simple Tutorial(三)
s.t.
初译 Support Vector Machines:A Simple Tutorial(三)
初译 Support Vector Machines:A Simple Tutorial(三)
因为不存在初译 Support Vector Machines:A Simple Tutorial(三)和能够满足上述后两个约束,为了解决这个问题在本节中我们介绍了最大间隔分类器在非线性可分数据集中的使用。

3.1 Primary problem(初始问题)

对于线性不可分的数据集,下述公式无法在所有的训练集中得到满足,
初译 Support Vector Machines:A Simple Tutorial(三)        (3.1)

我么们可以通过增加一个松弛变量(slack variables)初译 Support Vector Machines:A Simple Tutorial(三)来将上述约束放宽松一点,如下所示:
初译 Support Vector Machines:A Simple Tutorial(三)      (3.2)
初译 Support Vector Machines:A Simple Tutorial(三)                   (3.3)

接下来我们考虑一下我们需要优化的目标函数:
初译 Support Vector Machines:A Simple Tutorial(三)      
对于上式,因为初译 Support Vector Machines:A Simple Tutorial(三)可以随意的选择,所以任何的初译 Support Vector Machines:A Simple Tutorial(三) 都能满足公式(3.2),这显然不是我们需要的结果,所以为了保持上式有意义,我们需要求得误差项的最小值,即在公式(3.3)中加入所有初译 Support Vector Machines:A Simple Tutorial(三)的加和,如下
初译 Support Vector Machines:A Simple Tutorial(三)             (3.4)

s.t.
初译 Support Vector Machines:A Simple Tutorial(三)      (3.5)
初译 Support Vector Machines:A Simple Tutorial(三)                 (3.6)

其中参数C为正的常数,是人为指定的,常数C用于在超平面分类错误的最小化和分类超平面的margin最大化之间得到一个平衡。后续将会有更加详细的讨论。

问题(3.4)-(3.6)我们将问题(3.4)-(3.6)定义为软分类SVM,与我们上一节所描述的硬分类SVM相反,对于软分类SVM,我们同样是希望能够得到一个拥有最大margin的超平面,但是我们在训练过程中可以允许某些训练点位于margin之内甚至被误分类,并且我们希望能通过计算{\xi _i}求和的最小值来代表该超平面拥有最少的误分类情况。

当数据集为线性可分的时候,初译 Support Vector Machines:A Simple Tutorial(三)为0,问题(3.4)-(3.6)与本文最初的问题相同,所以优化问题(3.4)-(3.6),可以被当作SVM分类器的一般形式,可以在训练数据集时无视数据集是否为线性可分。

假设初译 Support Vector Machines:A Simple Tutorial(三)为优化问题(3.4)-(3.6)的解,所以超平面初译 Support Vector Machines:A Simple Tutorial(三)为最优的或者拥有最大margin的超平面,当我们的数据集线性不可分时我们如何定义margin呢?在第一章中,margin是通过线性可分的数据集和超平面所定义的,在第二章中,最大间隔超平面的margin被如下定义:

  1. margin作为与\omega 有关的数值:初译 Support Vector Machines:A Simple Tutorial(三)
  2. margin作为向量空间中的一部分空间:初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)之间的空间

在软分类SVM中,和之前的假设类似,我们将margin定义为初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)之间的部分,但是和之前的定义不同,这部分margin不再是超平面和两类数据集之间的空间。

目的函数(3.4)在线性约束(3.5)-(3.6)的作用下是一个二次优化问题,这个问题的目的函数为凸函数,但与之前的情况不同,此目的函数并不是严格的凸函数(因为此函数的海森矩阵为半正定矩阵?)因此优化问题(3.4)-(3.6)的解初译 Support Vector Machines:A Simple Tutorial(三)并不是唯一解,除非我们的数据集只有一类,否则优化问题(3.4)-(3.6)的解并不唯一。

3.2 参数C

如上所述,软分类SVM的优化问题公式(3.4)中有一个需要人为设定的参数C,这个参数能在最大的margin和最少的错误分类之间取得平衡,平衡的两端是相互矛盾的,因为如下图所示,随着超平面margin的增加,在margin中的点和误分类的点的数目也随之增加。
初译 Support Vector Machines:A Simple Tutorial(三)
上图中的初译 Support Vector Machines:A Simple Tutorial(三)代表了初译 Support Vector Machines:A Simple Tutorial(三)类数据集(白色点)的松弛变量,图中margin代表了初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)之间的空间,margin的扩大会导致总体错误的增加,如图所示当白色点位于margin中(即使被正确分类)或者被误分类的时候初译 Support Vector Machines:A Simple Tutorial(三)总是大于0的。

通过对于参数C的调整,我们可以在最大margin和最小的误分类之间选择一个更加想要的效果,并加以平衡,下图展示了在同一训练集中四个超平面和其margin,在这四种情况中使用的的参数C一直在增大。
初译 Support Vector Machines:A Simple Tutorial(三)
上图中被圆圈圈住的点代表着初译 Support Vector Machines:A Simple Tutorial(三)不为零的点,他们位于误分类的位置或者位于margin内,如上图第一副图所示,当C特别小的时候,初译 Support Vector Machines:A Simple Tutorial(三) 可以在公式(3.4)中被忽略,在这种情况下我们的优化目标为得到最大的margin,因此,这种情况下margin可以包括训练集所有的数据点。

在另一个极端的情况下,当C非常大的时候,初译 Support Vector Machines:A Simple Tutorial(三)在公式(3.4)中占主导地位,所以当我们对公式(3.4)进行优化的时候,会把所有的初译 Support Vector Machines:A Simple Tutorial(三)优化到非常小的值,所以这种情况下优化的目标就是得到最小的错误项,因此上图中最后一幅图中margin没有包括任何的训练点,尽管上图中四个超平面的参数C和margin不同,但其本质是一样的,并且都正确的将数据集分类。

显然,参数C并没有固定的值,参数C的值与训练点的数量和数据的值域有关,如上图所示,训练集由14个点组成,横坐标在20到80之间变化,纵坐标在15到55之间变化,我们可以使参数C等于初译 Support Vector Machines:A Simple Tutorial(三)来排除训练数据点的数量对参数C取值的影响,对参数C的调整需要很多的实际训练。

参数C同样也提供了手段去处理初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)误分类的点不同的情况,例如,如果初译 Support Vector Machines:A Simple Tutorial(三)类训练集中误分类的点的数量是初译 Support Vector Machines:A Simple Tutorial(三)类中误分类点中数量的二倍,我们可以将公式(3.4)改变为如下形式:
初译 Support Vector Machines:A Simple Tutorial(三)        (3.7)
这个技巧可以使两类的误差项总和得到均衡,使用这个技巧同样可以处理不平衡的数据集,即数据集中的一类的数据点数量极大的超过了另一类的数据点的数量,对于不平衡的数据集,SVM分类器将会对有更多数量点的分类有更加高的准确度,可以使用这个技巧来对两类进行平衡。

3.3对偶问题

问题(3.4)-(3.6)的对偶问题的导数与之前第二章的计算类似,首先对(3.4)-(3.6)利用拉格朗日乘子法,对于新增加的变量初译 Support Vector Machines:A Simple Tutorial(三)使用初译 Support Vector Machines:A Simple Tutorial(三)来作为与其对应的拉格朗日乘子。同样有约束初译 Support Vector Machines:A Simple Tutorial(三)因此得到下式:
初译 Support Vector Machines:A Simple Tutorial(三)        (3.8)
因为在我们的情况中拉格朗日函数是凸函数,对于任意的初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三) ,当且仅当初译 Support Vector Machines:A Simple Tutorial(三)时才能得到全局最小值。
因此,在满足上式的情况下有
初译 Support Vector Machines:A Simple Tutorial(三)               (3.9)

也因此对偶问题可以被描述如下:
初译 Support Vector Machines:A Simple Tutorial(三)
s.t.
初译 Support Vector Machines:A Simple Tutorial(三)                    (3.10)
初译 Support Vector Machines:A Simple Tutorial(三)
初译 Support Vector Machines:A Simple Tutorial(三)

约束(3.10)进一步计算得:
初译 Support Vector Machines:A Simple Tutorial(三)
初译 Support Vector Machines:A Simple Tutorial(三)
初译 Support Vector Machines:A Simple Tutorial(三)

化简得:
初译 Support Vector Machines:A Simple Tutorial(三)              (3.11)
初译 Support Vector Machines:A Simple Tutorial(三)
初译 Support Vector Machines:A Simple Tutorial(三)                 (3.12)

由公式(3.12)有初译 Support Vector Machines:A Simple Tutorial(三),将其代入到拉格朗日式(3.8)之后初译 Support Vector Machines:A Simple Tutorial(三)被抵消,此外因为初译 Support Vector Machines:A Simple Tutorial(三),则有初译 Support Vector Machines:A Simple Tutorial(三)

将公式(3.11)代入下式(来自于第二节公式2.18):
初译 Support Vector Machines:A Simple Tutorial(三)
代入之后我们就得到了软分类SVM的对偶问题的最终形式:
初译 Support Vector Machines:A Simple Tutorial(三)          (3.13)
s.t.
初译 Support Vector Machines:A Simple Tutorial(三)                          (3.14)
初译 Support Vector Machines:A Simple Tutorial(三)                    (3.15)

公式(3.13)-(3.15)与线性可分的对偶问题的形式的唯一的差别就在于不等式约束的上限C,因此我们在2.2小节中得到的一切结论都在本节的软分类SVM成立。
此外,在软分类SVM中,对偶问题的不等式约束的上限C代表着每一个训练点对于分类超平面的影响是有限制的。

3.4 support vectors 支持向量

和线性可分的情况一样,等式(3.11)代表着如果初译 Support Vector Machines:A Simple Tutorial(三)为原始问题(3.4)-(3.6)的解,初译 Support Vector Machines:A Simple Tutorial(三)为对偶问题的解,则有:
初译 Support Vector Machines:A Simple Tutorial(三)                    (3.16)

对于其中初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)则为超平面的支持向量,而这些向量位于什么位置呢?如下图所示,由我们在2.3节的经验得出,当向量点初译 Support Vector Machines:A Simple Tutorial(三) (下图白色点)属于第一类(下图超平面右侧)并且 初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)等于0,当初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三),当初译 Support Vector Machines:A Simple Tutorial(三)初译 Support Vector Machines:A Simple Tutorial(三)等于C。因此,软分类的SVM的支持向量可能位于两类数据集合之间的margin上、margin之内以及margin之外(这种情况仅限于误分类的点),支持向量的数量则与C有关,当我们减小C的值的时候,margin会扩张,支持向量的数目增加。:
初译 Support Vector Machines:A Simple Tutorial(三)

相关文章: