上两篇博客分别介绍了线性可分支持向量机,线性支持向量机,那么这篇博客为大家简要介绍非线性支持向量机。
我们知道,对于线性不可分的数据,线性分类器是不可能将其分开的,但我们往往可以利用一条曲线或者是一个曲面将其分开。此时我们就说这是一个非线性可分的问题。对于这类问题,我们该如何解决呢?其实,想法也很简单,我们只需要将低维输入空间中的样本通过非线性映射映射到高维特征空间,样本在高维空间中近似线性可分即可,我们便可以在高维空间中构造线性支持向量机来对样本点进行分类。也许这么说并不是很直观明了,那么我们看下图:
在一维空间上有三个样本点,其中为正例,另外两个黄色空心样本点为负例,我们如何能够用一个线性分类器将其分开呢,显然是不行的,那么我们做如下变换,我们按照如下规则对上述样本点进行变换,,则样本从一维空间上升到了二维空间,如下图所示:
显然我们很容易找到一条直线将两类样本点分开,这样我们便将原低维空间中的线性不可分问题转换为了高维空间线性可分问题。
所以用线性分类的方法求解非线性问题总共可以分为两步:
- 将原输入空间中的特征通过非线性映射映射到新的高维特征空间中
- 在新的空间中构造线性分类器
说到这里,我们便引出了核技巧这一概念,上述操作就属于核技巧的基本思想。
所以,核技巧的基本想法就是,使得输入空间对应一个高维特征空间,在输入空间中的超曲面对应于特征空间中的超平面。
为了实现核技巧,我们引出核函数的概念:
实际上核函数代表了在高维空间中向量内积的结果,其降低了高维空间中内积运算的复杂度。
接下来给出核函数的严格定义:
设为输入空间,为特征空间。如果存在一个从输入空间到特征空间的映射,使得对所有的,函数满足条件,我们就称为核函数。
通常情况下,我们都是给定核函数,而非显示给定非线性映射,并且当核函数给定时,映射往往并不唯一。这样在高维空间有时甚至是无穷维空间中的内积运算往往只需要运用更加简单的计算方式便可以解决。
接下来我们举个例子来说明核函数:
假设输入空间为一个二维空间,而特征空间为,我们给定一个核函数,我们来找符合的映射:
记,
由于
当我们取映射时,式子是成立的,此时我们就找到了从输入空间到特征空间的一个映射
我们还可以取也能够使得成立,因此,便又找到一个从低维空间到高维空间的映射。
从上述例子可以看出,,这比计算这样的内积简单多了。
最终,一句话说明核函数就是,核函数就是高维特征空间中向量内积运算结果的一个替代。
然而,为什么要构造核函数呢,是因为从线性可分支持向量机和线性支持向量机中我们可以看到,在构造出的分类超平面的方程中有向量内积运算;因此,我们将样本映射到高维特征空间从而达到近似线性可分,在高维特征空间中构造线性支持向量机,这样构造出的高维空间中的分类超平面方程中也有向量内积运算,并且是高维特征空间中的向量内积,而往往这样的内积运算相当复杂,因此,我们便用核函数来代替这一运算,从而达到简化运算的效果。
结合上述对于核函数以及核技巧的说明,下面给出核函数在支持向量机中是如何应用:
第一步:将原输入空间中的样本全部通过非线性映射映射到高维空间,则原输入空间中线性不可分样本集便成为了高维空间中近似线性可分样本集
第二步:在高维空间中构造线性支持向量机,构造过程在上篇博客中已经给出介绍,这里我们直接给出结果。构造出的分类超平面方程如下所示:
最终构造出的非线性支持向量机模型为:
不难发现在分类超平面计算中存在高维空间的内积运算,我们使用核函数来进行替代,则分类超平面和支持向量机模型分别如下:
分类超平面:
非线性支持向量机模型:
最后,再次强调,虽然上述第一步中我们先通过映射将样本点映射到高维空间,然而在实际中我们通常都是直接显式的给出核函数的表达式,相当于隐式的给出了非线性映射,之后我们直接将核函数表达式带入到非线性支持向量机的结果中替代结果中的内积,这便是核技巧。
接下来介绍一下常用的两种核函数:
多项式核函数(polynomial kernel function):
其对应的分类决策函数如下所示:
高斯核函数(Gaussian kernel function):
对应的分类决策函数如下所示:
当我们对高斯核函数进行展开,使用泰勒展开式对其展开后我们会发现,实际高斯核函数所对应的映射是一个无穷维的映射,因此在无穷维上做分类超平面就面临着无穷维向量的内积运算,这便是我们所说的维数灾难,同时我们也看到了核函数给我们带来的便利,即将样本点映射到了高维空间达到近似线性可分,同时又简化了高维空间中的内积运算。
以上便是非线性支持向量机的基本原理,至此,支持向量机的基本原理也已经全部介绍完毕了,有什么不足之处还请广大网友不吝赐教,让我们共同进步!