核函数
熟悉SVM的同学们可能知道,在分类问题中,我们仅仅需要知道核函数,而并不需要知道低维转高维的实际映射函数,就可以进行分类计算。这样可以大大的提高计算效率。
核函数代表的是低维空间和高维空间中向量内积值的映射关系。可是,为什么我们从多种运算关系中选择内积呢?本文先介绍升维的作用,然后介绍向量内积的基础概念,最后通过一个简单的例子证明分类问题中只需要核函数就可以完成计算。
升维应用举例
回顾一下高维转换,比如下图中的左边部分数据,并不能做到线性可分。
https://www.bilibili.com/video/BV1nx41157xz?from=search&seid=5659275217139185370
用如下转换函数对以上数据进行高维转换:
在三维空间中,我们就能完成其线性可分的操作。而二维数据则可以看成三维数据在二维平面上的投影。
这样的升维之后让数据集线性可分的例子是很多的。但是要理解为什么我们不关心,这我们得从向量点积的理解开始。
向量点积(内积)
两个向量的点积的含义是,向量在向量方向上的投影的大小与被投影向量的大小的乘积。我们用数学公式表示如下:
注意,理解向量内积的概念对于理解线性代数中的矩阵运算非常有用。如果是单位向量,也就是, 那么,向量的内积,表示的就是向量在方向的投影的大小。如下图所示:
简单的分类问题
具有a,b两类标签的数据集在已知的低维平面上,并不线性可分。我们通过映射函数将向量映射到高维空间,此时,已经完成映射的高维数据集合可以通过某超平面进行数据的划分。通过这个例子,我们可以建立一个简单的分类模型,从而能够看出,为什么我们只需要核函数。
将二维平面中的数据,通过,将任意点转换为三维空间中的点。在这个高维空间中,我们如何确认切分数据集合的超平面?
我们提供一种最简单的算法。由于两个集合已经线性可分,我们分别求出于各个数据集合在空间中的平均位置,并将这两个点连接起来,得到一条直线。我们取穿过这条线中点并与这条线垂直的超平面,这样就能得到我们想要的超平面。
一般而言,超平面的数学表达式是,我们可以通过带入新数据的值来判断大于或小于0来确认,新的数据是属于超平面的哪一边,从而确定是属于A类还是B类。我们先求解该超平面的表达式,然后再带入任意参数判断该值
求解超平面的参数
上文已经说了,在这个最简单的模型当中,我们分别取两个数据集的平均中心点,并用直线连接起来。超平面即穿过该线的中点,并且和该线段垂直的平面。
该连线的中点,用向量表示为:
该连线表示的向量是:
那么,该超平面的求取过程可结合之前提供的向量基本方式来理解。
将的起点挪动至原点。对超平面的任意点,其投影到上,在其上的投影点对应为距离原点的一固定长度值,而c点又在该平面内,所以,c点在的投影也将等于这一固定长度值,故而得到方程:
代入上文中的展开式,得到该超平面为:
引入核函数
我们只需要将新的数据点带入该公式进行计算。并判断其数值的大小即可。从公式中可以观察到,上述公式最后结果中,全部都是向量内积的计算。所以,当我们引入核函数K,将高维度的向量内积计算,转变为低维度的内积计算,就可以免去引入映射函数,降低计算难度。
一般情况下,我们总能找到对应的高维空间,使得数据集线性可分。但是找到相应的核函数却不是一件容易的事情。所以,数学上有很多固定的核函数供大家选择,比如线性核函数:,高斯核函数:等。
核函数我们就介绍到这了。如果大家想更深入的了解核函数,欢迎大家给我们的公众号留言,学习社的专家们将给大家带来更深入的讲解。