高斯核函数
上一篇博客详细的介绍了什么是核函数,并且主要以多项式核函数为例。这篇博客主要学习一种特殊的核函数,而且它也是 SVM 算法使用最多的一种核函数:高斯核函数。
核函数我们通常表示成:
那么对于高斯核函数来说,定义方式如下:
其中只有一个超参数
γ
γ
γ。那么为什么这样的一个核函数要称做高斯核函数呢?
相信很多小伙伴都听过正态分布,其实正态分布就是一个高斯函数。
其实我们仔细观察高斯核函数与正态分布之间形式大体是一致的。
高斯核函数有时候又被称做 RBF核(Radial Basis Function Kernel),中文有时候译为镜像基函数。高斯核函数的本质是将每一个样本点映射到一个无穷维的特征空间,听起来非常的抽象。
下面我尝试用一个简单的例子来模拟一下高斯核函数到底在做什么事情?
先回忆一下使用多项式特征为什么可以处理非线性的数据问题,那么它的基本原理其实是依靠升维使得原本线性不可分的数据变得线性可分。
比如下面有一些一维数据就放在了一个坐标轴上,我们现在是没法用一条直线将这些样本点分成两类。
但是如果我们添加上多项式特征,就是让每一个数据点不但有
x
x
x 值,还有一个纵轴,有一个第二个维度的值,该例子中就让第二个维度的值为
x
2
x^2
x2,那么我们所有的数据点就变成了:
这些数据点在
x
x
x 轴上的位置是没有变的,只不过在
y
y
y 轴上也有一个取值,这个取值就是
x
2
x^2
x2,现在这些数据点原来在一维空间中是线性不可分的,现在到了二维空间,就变得线性可分了。
其实高斯核本质上做的事情也是这样的。高斯核函数如下:
在这里,为了可视化方便,将高斯核函数的式子中的
y
y
y 取固定的两个点
l
1
l1
l1,
l
2
l2
l2(称为地标)。现在我们的数据依然是线性不可分的。
高斯核就将原本一维的样本
x
x
x 映射为一个二维(有几个地标,就映射为几维)的数据点:
首先我们用程序来模拟高斯核的映射过程。
很显然,上图是线性可分的,我们很容易找到一条直线,将这些样本点分成两类:
但是实际,我们的高斯核函数是这样的:
在这个
y
y
y 的位置,其实是每一个数据点。换句话说,高斯核做的事情和之前做的事情一样,只不过取了更多的地标点而已,我们有多少个样本就有多少个地标点。 换句话说,对于每一个
x
x
x,都要尝试对每一个样本
y
y
y 进行核函数的计算成为新的高维数据所对应的某一个维度的元素。所以高斯核函数就是将
m
∗
n
m*n
m∗n 的数据映射成了
m
∗
m
m*m
m∗m 的数据。
具体代码见 76 高斯核函数.ipynb