支持向量机系列---为什么要引入核函数

转自 https://blog.csdn.net/jiangjieqazwsx/article/details/51418681

前面的算法是针对线性可分的情况,当我们的样本线性不可分的时候怎么办呢?如果我们可以把线性不可分的问题转变成线性可分的问题该有多好!生活就是这么的美妙,我们可以将样本通过一个映射函数把它从原始空间投射到一个更高维的特征空间,使得样本在这特征空间线性可分,如下图所示。



这个时候,我们就可以对这个特征空间使用前面提到的最大化硬间间隔来进行分类。幸运的是,如果原始空间是有限维的,即属性数有限,那么一定存在一个高维特征空间使样本可分。

为了引出解决不可分的方法,我们先导入核函数。这个核函数是什么来头?我们先来看看核函数的定义 :

设x,z∈X,X属于R(n)空间,非线性函数Φ实现输入间X到特征空间F的映射,其中F属于R(m),n<<m。根据核函数技术有:

                                                                                                    K(x,z)=<Φ(x),Φ(z)>                
 其中:<, >为内积,Φ(x)为映射函数。

为了说明核函数的功能,很多资料上都举了下面这个例子,由于它的表述顺序,不少还是不知道核函数的作用,觉得它很抽象,其实我们应该倒过来理解。为什么我要这么说呢?我们来分析一下,到底核函数的作用是什么?


这个例子向我们展示了一个核函数----一个二维向量的内积形式,可以等价于三维或者四维向量的内积,其中三维和四维向量是原来的二维向量通过一个映射函数获得的。这个有什么用呢?其实我们应该反过来看待这个式子:它表示的是两个高维空间的向量内积可以通过计算低维空间的内积来获得,即核函数,它避免了“维数空难”,降低了计算量。那为什么我们要使用核函数呢。这得让我们先回顾一下前面一节得出的目标函数:



在线性可分的空间里,我们需要计算样本之间的内积, 所以核函数的作用总结如下
  1. 当我们在解决线性不可分的问题时,我们需要通过一个映射函数,把样本值映射到更高维的空间或者无穷维。在特征空间中,我们对线性可分的新样本使用前面提到过的求解线性可分的情况下的分类问题的方法时,需要计算样本内积,但是因为样本维数很高,容易造成“维数灾难”,所以这里我们就引入了核函数,把高维向量的内积转变成了求低维向量的内积问题。
  2. 第一点是对核函数的第一层次的理解,博主曾在面试的过程中被问到了这个问题,当时被面试官嫌弃讲得太复杂(不过大部分原因是对核函数理解不够透彻的原因),没有讲到本质上,于是厚脸皮的问是什么?面试官问我内积的作用,在白板上画了各种形状(长度不同或者夹角不同)的两个向量问我内积的区别,当时就是没有想到,内积也是可以衡量相似度的呀!博主后来查阅读了相关知道,大悟!分类问题就是一个找相似样本的过程,你跟我相似,你就属于我这个类,所以在求出的目标函数中会出现内积,可以用这个原理来理解。内积是可以衡量两个向量的相似度的,例如,我们常常可以通过两个相量的距离和夹角来表示相似度,这些属性都可以通过两个向量的内积值来获得:   所以从另外一个角度来分析,核函数的作用,其实就是计算了clip_image020[11]clip_image041[4]的相似度。当时面试官还被面试官屌了一顿:我们书是越读越厚,但是学习就应该是把知识越学越薄。说实话,我特别喜欢跟这种人交流,虽然常常感觉自己被打了一记耳光,但是总是能够想明白一些事情,人生不只是苟且,如果你爱算法,你就应该有这种意识,多问自己几个为什么,这其中也是挺有意思,我其实不喜欢被灌输,我喜欢验证! 
显然,若已知合适的映射函数,我们是可以求出核函数的,但是现实中,我们通常不知道映射函数的形式,你可能还会想,合适的核函数一定存在吗?什么样的函数可以作为核函数。



定理6.1表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射。这个时候你肯定会质疑?就算每个核函数都能找到一个与之对应的映射,但是它就一定能够映射到我们需要的那个维度吗?这真是一个好问题,其实核函数的使用,不一定能够准确的划分,只能说使用哪个核函数,能够逼近真实的划分效果。因此特征空间的好坏对支持向量机的性能至关重要。在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式定义了这个特征空间。于是,核函数的选择成为了支持向量机的最大变数。若核函数选择不合适,则意味着映射到一个不合适的特征空间,很可能导致性能不佳。


常用 的核函数有:


参考资料:

https://www.zhihu.com/question/24627666

http://www.blogjava.net/zhenandaci/archive/2009/03/06/258288.html

http://blog.sina.com.cn/s/blog_52f623240100rgyb.html

猜你喜欢

转载自blog.csdn.net/u011947630/article/details/80838509