八、核(kernel)
如果样本点为线性不可分,那么,需要将数据映射到高维空间,使在原始空间内其线性可分变为线性可分。如下图所示:
上文提到,分类器可以写成:
那么,如果使用一种映射的方法,将低维数据映射到高维(),使得线性不可分变为线性可分。称为特征映射函数,这样,分类器就变为:
(1)实例
低维映射到高维能否将线性不可分变为线性可分呢?下面就举个例子来看。假设数据可以用决策的边界表示(如下图左所示),那么,利用, ,做映射,可以得到决策边界:。经过上述的映射变换,原来在圆内的点都在超平面的一侧(用虚线的圈圈表示),在圆外的点都在超平面的另外一侧(用X表示)(如下图右所示)。
将低维数据映射到高维空间,再计算内积,计算量非常大。而如果有一种方法能在低维数据的基础上,直接计算内积的结果,而不显式的表现出映射至高维空间这个中间过程,算法时间复杂度将降低,这里就引进了核的概念,定义:
下面看几个核函数的例子:
假设:
那么是一个n2维的向量。如果计算内积,算法复杂度为O(n4)。
可以看到,计算核函数和计算向量内积的结果是一致的,但仅仅需要计算内积,时间复杂度降低到了线性时间,即O(n)。
再看一个例子:令
那么是一个n2+n+1维的向量,如果计算内积,算法复杂度为O(n4)。
让我们从另一视角看看核函数:直观上来说,如果和较为接近,那么我们可以期望较大;而和相差较远甚至几乎正交,那么较小。因此,我们可以认为核函数在某种程度上可以度量和,甚至x和z的相似度。
(2)常用核函数
接着介绍两个常用的核函数:
多项式核
多项式核可以写成:
多项式核将原始值映射至维空间(其中n为原始值的维度)。
高斯核
高斯核可以写成:
高斯核形式跟高斯分布的密度函数极其相似,因此称为高斯核。高斯核中e的指数部分须计算x和z的欧几里德距离(在机器学习笔记——K-means算法V1.0中已经提到,欧几里德距离可度量数据之间的相异性),当时,x和z较相似;,x和z较相异。
(3)有效核
定理:令K:。如果K是一个有效核,那么它的充分必要条件为:对于任意的,(),核矩阵对应核()矩阵皆为对称阵,并且半正定。下面对该定理进行证明:
对称性:
半正定性:
令为向量的第k个分量,对于任意向量z,有:
假设有一块农场上有狼和羊两类样本,需要修建一个篱笆,将狼和羊分隔开来,避免狼伤及到羊。下面三个图分别是三类不通的分类方法:
可以看出,Logistic模型在对训练样本的划分存在较大的误差,决策树的边界较为生硬,而SVM可以划出较为理想的决策边界。
九、离群点(outlier)和松弛变量
前文中提到的实例均为线性可分,将数据从低维映射到高维也仅仅是增加了数据线性可分的概率,但并不能保证数据线性可分。在一些样本中可能存在少量的离群点,导致分类的效果不尽理想。例如:下面左图中超平面对于两类样本点的分类情况相当良好,而如果增加一个样本点,就会使得超平面移动,而样本和超平面的间隔大幅减小。
为了解决上述问题,使SVM用于具有少量离群点的非线性可分数据集,我们将重新定义我们的目标函数和约束条件(规范):
修改后的目标函数以及约束条件将允许函数间隔小于1,如果一个样本的函数间隔为,那么我们将在目标函数中增加惩罚值。其中,参数C为了控制超平面到样本点的间隔尽可能大,并且保证数据点偏差量尽量小。
此时的拉格朗日算子变为:
十、SMO(sequentialminimal optimization)算法
SMO算法是由微软公司的John C. Platt发明的一种高效计算SVM的算法。 SMO算法将大型的二次规划问题(quadratic programming,QP),分解成小的QP问题。
(1)坐标上升(coordinate ascent)
Loop untilconvergence{
For i=1,…,m{
}
}
(2)SMO
在下述约束条件下求解优化问题:
我们可以尝试使坐标上升的方法求解:现在我们固定,将看作变量,然而,事与愿违,仅仅使用一个,无法利用坐标上升进行。证明如下:
由上式可以看出的值完全由决定,如果固定了,那么的值也被固定了,为一个常数,而不能为变量了。
因此,如果我们尝试利用坐标上升方法求解,同时更新两个变量,而将剩下的固定,这样可以满足约束条件。
Repeat until convergence{
}
不失一般性:假设所有均满足约束条件,固定,那么我们需要优化以和为变量的。
由约束条件可得:
根据约束条件的限制,和必须在方型区域内;又,因此,和必有上下界,令。
目标函数可以表示成:
具体的SMO算法的推导过程可参见JohnC. Platt的论文:SequentialMinimal Optimization: A Fast Algorithm for Training Support Vector Machines。
十一、总结
最后,用一段不带公式的语言总结支持向量机:支持向量机的目标就是求出一个超平面将正负两类样本点分开,并且使最小几何间隔尽可能大。由于上述问题是个非凸优化问题,因此可将其转化为等价的凸优化问题。再利用KKT条件,将原始优化问题,转化为其对偶问题,最终会得到一个以拉格朗日乘数为变量的优化问题。此问题的目标函数中含有样本点与预测点的内积形式,由于可能需要将样本点映射到高维空间,以便使样本点线性可分,可以通过核函数求解内积以降低高维空间求内积的运算复杂度。最后,可以使用SMO算法快速求解目标函数。
原文地址:http://blog.csdn.net/linkin1005/article/details/40979019