支持向量机SVM(2)之核函数

支持向量机SVM(2)之核函数

在上一篇中,一切的推导都是基于上图这种类型,建立在数据分布是线性可分的情况,然而很多情况下都不是线性可分的。例如下图这种情况。

支持向量机SVM(2)之核函数

从图中可以看出,无论哪一条线都无法将两类点分开。这个时候就要引入核函数的概念了。

三、核函数

上一篇文章中最后推导得到了:

支持向量机SVM(2)之核函数

现在我们把它们带入到分界方程:

支持向量机SVM(2)之核函数

如果我们已经求出了α与b,那么y可以写成仅仅依赖xi与xj的矢量积形式,这一点非常关键。很多时候我们需要从数据中挖掘出新的特征来进行训练,而不是简单粗暴的使用原始数据,比如我们从x中挖掘出新的特征x平方,我们需要再一步一步推导y的表达式吗?只需要将<xi,x>换成<(xi)2,x2>(平方形式)就可以。

支持向量机SVM(2)之核函数

整个过程很流畅,φ(x)可以将数据从低维空间映射到高维空间中,为分类提供了新的视角。如下图所示:

支持向量机SVM(2)之核函数

在以为空间中是,两种点无法分开,但是通过φ(x)=(x,0.5x*x+2)映射到二维空间后,很容易找到分界线将这些不同的点分开。低维映射到高维使得线性可分成为可能。考虑到m<<n,这引起一个问题就是随着维数的增大计算量迅速变大,如何简化操作呢。在这里引入核函数:

支持向量机SVM(2)之核函数

通过映射函数,我们能从原始数据中(低维空间)抽象出所需的特征(高维空间),由低维空间向高维空间的转化很多时候非常的麻烦。核函数的目的就是设置一种过程,可以跳过维度变化,通过相对简单的计算直接得到矢量积。

举个栗子:

支持向量机SVM(2)之核函数

支持向量机SVM(2)之核函数

通过上面的推导,我们发现虽然维度转化的过程较为繁琐复杂,但是矢量点积的结果确实相当简洁,这一次我们直接用核函数计算:

支持向量机SVM(2)之核函数


四、常用核函数

支持向量机中有几种常用的核函数:多项式核(Polynominal Kernal)、径向核(RBF、也叫高斯核)、以及逻辑核(Sigmoid Kernel)。


多项式核:

支持向量机SVM(2)之核函数

支持向量机SVM(2)之核函数

维数越高,偏差越低,方差越高,越容易出现过拟合的情况,反之则相反。所以不适合选择过高的维度,最适合的维度需要通过交叉验证。

RBF:

支持向量机SVM(2)之核函数

高斯核函数是一个对应于无限空间的核函数,证明方法就是对ex进行泰勒级数展开,为了书写方便,在这里我们让

支持向量机SVM(2)之核函数

支持向量机SVM(2)之核函数


我们可以通过高斯核直接给出无限空间矢量积的表达式。

高斯核的偏差和方差通过δ来控制,δ越大偏差越大,方差越小,越容易欠拟合,如下面第一幅图。

支持向量机SVM(2)之核函数

支持向量机SVM(2)之核函数