核函数
在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分。在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用SVM进行数据集分类工作的过程首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间(下图很清晰的表达了通过映射到高维特征空间,而把平面上本身不好分的非线性数据分了开来)
只要给出φ,计算出φ(x)和φ(z),再求他们的内积我们能够很容易的计算出K(X,Z),但是这样做的计算复杂度非常高,达到O(n2),我们可以得出一个φ但不去直接的计算它。
例如:其中x和z都是n维向量
通过公式可以发现求x,z内积的平方与映射后求内积的结果是一样的,而最终的复杂度降到了O(n)。
我们直观看这个核函数,假设φ(x)与φ(z)夹角较小,则核函数k(x,z)会比较大,相反如果φ(x)与φ(z)夹角较大,则核函数k(x,z)会比较小,比如φ(x)与φ(z)正交,则相应核函数为0,所以核函数一定程度上是φ(x)与φ(z)相似度的度量,。
下面来介绍一种径向基函数(Radial Basis Function 简称RBF),也称作高斯核函数(Gaussian kernel)如下:
如果x与z相近,则核函数趋近与1,反之x与z差值很大,则核函数趋近于0.这个核函数叫做高斯核函数,能把特征值映射到无穷维。
进一步讨论,如果给出一个核函数,我们怎么证明他是个有效的核函数呢?
假设我们已经给出了一个有效的核函数K,给定一个含有m个点的训练集{x1,x2,x3……xm},我们使用Kij来表示(Ki,Kj),这样组成一个核函数矩阵(kernel matrix), 显然可以得到矩阵K是一个对称矩阵:
而且我们发现对于任意向量z,
通过公式我们了解到如果K是一个有效的核函数则对应的核函数矩阵是对称半正定矩阵(K>=0)。这是一个必要条件。而通过mercer定理它也是一个充分条件。Mercer定理表明为了证明K是有效的核函数,那么我们不用去寻找,而只需要在训练集上求出各个,然后判断矩阵K是否是半正定即可。
软间隔
SVM算法是假定数据是线性可分的,把数据映射到高维通常能够增加线性可分的可能性,但我们不能保证这总是有效的,而由于噪声值的存在,我们也不能保证计算出来的超平面是我们想要得到的,举个例子如左图展示了一个最优间隔超平面,但是当加上噪声值后,超平面有了比较大幅度的倾斜,得到了一个间隔小很多的超平面。
为了解决线性不可分的数据,我们需要重构最优化模型如下:
我们允许函数间隔小于1,而对于函数间隔小于等于1-ξ的点我们在目标函数上加上一个惩罚函数,C称作惩罚因子,称作损失函数,C代表着超平面对于噪声值的权重,保证大多数的点函数间隔大于1,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。
同时要调整的还有拉格朗日公式
这里的和都是拉格朗日乘子,然后将其看作是变量w和b的函数,分别对其求偏导,得到w和b的表达式。然后代入公式中,求带入后公式的极大值。整个推导过程比较复杂,最后得出模型的对偶形式:
此时,我们发现没有了参数,与之前模型唯一不同在于又多了的限制条件。根据KKT推导出下列结论,在求拉格朗日乘子是需要使用到(SMO算法)。
至此SVM纯原理部分介绍完毕,接下来会结合实际应用来理解SVM算法。