@dongxi
2017-08-14T20:33:43.000000Z
字数 7129
阅读 954
机器学习
CS229
本文将会大量参考支持向量机通俗导论的版本,进行了简单的删减,需要进一步了解SVM可以参考原文。
支持向量机是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化成一个凸二次规划问题的求解。
在描述支持向量机的概念之前,我们需要引入几个简单的但却帮助我们思考的概念。
在超平面确定时,我们可以通过来判断分类是否正确。这就引出了函数间隔的定义:
当对一个数据点进行分类,当超平面离数据点的几何间隔越大,分类的置信度就越高,所以我们希望能够选择一个可以最大化这一间隔的超平面(如下图所示)。
因此,最大间隔分类器的目标函数可以定义为:
对于一个几何空间上的二分类问题,其情况也不外乎两种,线性可分以及线性不可分,对于线性可分的问题相对来说比较容易解决,所以我们下来介绍线性可分问题的求解方式。
我们继续考虑上述的目标函数,对于这种问题,我们可以通过拉格朗日对偶性进行求解。上述函数可以转换为拉格朗日函数:
对于上式,我们希望找到等式成立的情况,对于下述模型:
对于对偶问题,我们在求解过程中,首先固定,然后让关于和最小化,分别对和求偏导数:
根据之前的推导我们得到了:
对于数据分布非线性的情况,SVM中采用的通常方法则是选择一个核函数,通过将数据映射到高纬空间进行求解。在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维空间中构建出最优分离超平面,从而把平面上无法线性分割的数据分隔开,如下图所示。
在遇到核函数之前,我们需要一个非线性映射函数,将数据映射到特征空间,我们假设为非线性映射函数,那么我们的分类函数变为:
与我们之前的知识相结合,那么决策规则可以表示为:
定义:核函数是一个函数,对于多有的,满足,这里是从到内积特征空间的映射。
根据上面的例子,我们的核函数为:
通常人们会根据问题和数据的不同,选择不同的参数,从一些常用的核函数中选择一些核函数,下面介绍最常见的三种核函数:
线性核函数:这个核函数实际上就是原始空间的内积。这个函数实际上就是可以同意一下书写形式,其他的意义应该并不是很大了。
我们在之前列举了一些常见的核函数,但是核函数的存在性应该如何判断呢?核函数应该如何构造呢?在实际使用中,我们并不会关心高维空间的映射情况,那么我们应该如何判断一个函数是否是核函数呢?
定理:任何半正定的函数都可以作为核函数。所谓半正定函数,是指拥有训练数据集合,我们定义一个矩阵,其中的元素,很显然,这个矩阵是一个矩阵,只要这个矩阵是半正定矩阵,那么我们就可以将函数是半正定函数。
需要注意的是,定理只是一个充分条件,某些不满足定理的函数也可能可以作为核函数。
总而言之,如果我们采用了合适的核函数,那么理论上讲,我们就可以将在原始空间线性不可分的数据可分,这样我们就可以实现对线性不可分数据的分割。
在之前我们讨论线性不可分的情况,只要使用高斯核函数实际上无论什么样的数据都是可分的,如果数据本身是线性可分的,但是存在一定的噪声,如下图可视,如果我们通过将之映射到无限维使其被线性可分,那么就会会造成严重的过拟合现象,所以我们可能需要其他的处理方法。
对于这些偏离正常位置很远的点,我们称之为outlier,在目前为止的SVM模型中是会造成极大影响的。正如前文所述,超平面是由少数的支持向量构成的,如果这些向量中存在outlier,如上右图,那就会对超平面产生极大影响了。如果新增的点位于右上角,那就更恐怖了,整个数据并不再满足线性可分了,只能映射到高维空间进行求解。
为了处理这类情况,SVM允许数据点适当的偏离超平面,这样少数噪音就不会对超平面产生太大的影响了。那么现在我们的约束条件发生了小小的变化:
SVM是一个十分重要的分类方法,它与感知机相似但不相同。对于这个算法还需要进一步的研究与学习。
参考
支持向量机通俗导论