0x01. 到底什么是核函数?

最早的分类问题是线性分类,因此仅靠一条线可以进行划分。如图:

机器学习之核函数的理解与常见核函数_人工智能

但是对求解非线性问题,则是通过某种非线性变换机器学习之核函数的理解与常见核函数_映射函数_02,将输入空间映射到高维特征空间,从而找到一个超平面进行分类。其实在svm中,就用到了核函数的思想,为了更清晰的呈现,特意去找了个视频:

核函数思想

摘自​​油管​

好了,看完视频,我们也知道了其实对于不可分的平面,在支持向量过程中,采用的是通过映射到高维空间后,从而可以形成一个超平面,最终实现了超平面分类。即​​多项式回归通过将数据从低维映射到高维,将原本线性不可分的情况变成了线性可分的情况。​

0x02. 为什么引入核函数?

使用多项式回归,随着维度的增加,会存在一个问题,那就是计算量会以几何级数增加。这么说其实看官估计还是一脸懵逼,因此,我们先叙述核函数的定义:

核函数K(kernel function):指机器学习之核函数的理解与常见核函数_支持向量机_03,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常,m>>n)。<x, y>是x和y的内积(inner product)(也称点积(dot product))。


在此假设定义两个向量:

机器学习之核函数的理解与常见核函数_核函数_04机器学习之核函数的理解与常见核函数_支持向量机_05

定义映射函数:机器学习之核函数的理解与常见核函数_机器学习_06

定义核函数:机器学习之核函数的理解与常见核函数_核函数_07

假设:机器学习之核函数的理解与常见核函数_核函数_08机器学习之核函数的理解与常见核函数_支持向量机_09


如果不用核函数,我们如何求解?

先通过映射函数转换:
机器学习之核函数的理解与常见核函数_映射函数_10
机器学习之核函数的理解与常见核函数_核函数_11
再进行内积运算:
机器学习之核函数的理解与常见核函数_支持向量机_12


使用核函数,求解:

机器学习之核函数的理解与常见核函数_映射函数_13


我们可以看到计算成本是不是一下就减小了。这还只是三维的映射,那如果是10维度甚至更高维度的呢?不得把人算死了,因此回到刚抛出的问题:​​使用多项式回归,随着维度的增加,会存在一个问题,那就是计算量会以几何级数增加。​​是不是这下就能理解了~kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决无限维空间无法计算的问题!

0x03. 核函数在哪里应用?

在参考的众多资料中,SVM中的应用最为经典。在SVM中,遇到线性不可分的样本时,SVM就通过一个非线性映射的核函数把样本映射到一个线性可分的高维空间中,在此高维空间中建立线性函数(如二维空间的直线、三维空间的平面和高维空间的超平面)来划分样本的高维空间,此高维空间的线性分类面对应到输入样本空间的话就是一个非线性的分类面。​​结合第一部分的视频,是不是也很容易理解了划分的真实含义。​

此处再借用一张图:

机器学习之核函数的理解与常见核函数_映射函数_14

0x04. 常见的核函数

  1. 线性核函数:机器学习之核函数的理解与常见核函数_机器学习_15
  2. 多项式核函数:机器学习之核函数的理解与常见核函数_机器学习_16
  3. sigmoid核函数:机器学习之核函数的理解与常见核函数_支持向量机_17
  4. 高斯核函数:机器学习之核函数的理解与常见核函数_核函数_18
  5. 拉普拉斯核函数:机器学习之核函数的理解与常见核函数_机器学习_19

0x05. 参考

​https://zhuanlan.zhihu.com/p/30009055?utm_source=qq​


​https://www.zhihu.com/question/30371867​

​http://songcy.net/posts/story-of-basis-and-kernel-part-2/​