带你深透地理解核函数
一、核函数的作用
1、要搞懂核函数,第一步就是要明白为什么要用核函数
机器学习的分类方法,就是找到一个标准,能把当前要做分类的数据集正确的分类好;这个标准的探索过程就是利用已有数据集(训练集)去不断学习、调优,最终得到一个满足条件的标准就是结果。
SVM支持向量机(二分类)就是找到一个超平面作为分类标准,在这个超平面的同一侧所有数据点是第一类,另一侧所有数据点是第二类。超平面可以简单理解为线性表达,在二维中超平面是一根直线,三维中超平面是一个平面……
我们称能找到一个超平面对数据集进行分割的情况称为线性可分,否则称为非线性可分
那么,任何情况下都能找到一个符合要求的超平面嘛?或者说,任何情况下的数据集都是线性可分的嘛?
2、下面先来看一个例子
显然,有无数条曲线能将两类点分开,但一定不能找到一根直线达到分割目的;同样,几乎对于所有实际问题,在已知数据集的维度下,是不能找到一个超平面达到分割目的。那这个时候该怎么办呢?
某个伟大的数学家告诉我们一个定理:
任何数据集都可以通过映射到更高维空间,使得这个数据集在更高维空间的映像是线性可分的
就像这样:把2维数据映射到3维,它就线性可分了。那条曲线也成功地映射成三维空间的超平面。
3、既然有了这个定理,我们可以大胆地认为:一切数据集皆可“线性可分”。那么,怎么找到这个映射呢?
任何函数都是映射,直接利用函数来探寻这个映射比较直观,如下例
由例子看出,随便一个映射当然是不行的,这个映射应当有一定的要求,找到满足要求的映射才能达到最终效果。这个要求至少包含以下两点:
上面一维映射到二维这个例子中,第二个映射没有满足第二条要求,所以不能达到目的。
当然,紧靠这两个要求,还是不能找到想要的映射,而且想找到这个映射是非常困难的,核函数就能帮忙解决这个问题。因为找到这个映射之后,还是需要用这个映射结果去进一步计算和推理。核函数的运用可以直接跳过这个计算和推理过程,直达最终结果,下面做核函数理解和运用。
二、核函数运用和解释
不同机器学习模型运用核函数都类似,这里利用SVM支持向量机来作详述
1、首先看一下在数据本身维度下线性可分的支持向量机算法过程,如果不了解的话可以略过,直接往下看。训练集S中,X1、X2……Xm为数据点,y1、y2……ym是对应标签:
======================================================
======================================================
求解SVM支持向量机核心思想和核心步骤就只有第二步,它决定着整个算法。,其他的都是解释为何构造这个函数和解决这个函数的数学过程。
======================================================
2、对于非线性可分的数据集,如刚才所说, 就需要映射到高维了,但要映射到高维并不意味着要提前知道具体的映射方式。思路就是:数据点映射到高维空间的映像点是线性可分的,可以用线性可分支持向量机算法直接解决,算法解决的关键就是解决上述函数优化问题,而解决优化问题的关键就是找到映像点之间的内积,而映像点的内积可以在不知道映射具体方式的情况下直接通过核函数求得。
具体过程如下:
4)映射过程相当于找高维空间中的超平面过程,核函数则相当于直接找到了高维空间的超平面,只需要将原始数据点经过核函数的转变,转变的过程不仅包含了映射到高维空间,还包含了找到一个满足高维空间中线性分割的超平面,一劳永逸。
核函数可以有固定的形式,前人已经做了很好的总结,常用的核函数有以下几个
也可以自己寻找核函数,核函数寻找过程如下:
三、核函数使用过程
1、在原数据的维数空间中找不到分割超平面
2、利用原数据直接带入核函数求得到高维空间映像点的内积值
3、利用内积值解决高维空间映像点的线性可分问题
4、对于新的数据,按照通过核函数后判断它的映像点在高维中的类别
5、映像点在高维空间的类别和原数据在原空间的类别一致
6、如果将高维空间的超平面逆映射至原空间,一定是原空间的一个曲面,这个曲面对原空间的数据分割情况和高维中的一致