大象植物园的客厅

tech

重新发现核函数


问题始于,我从在魔鬼那里学会了: Kernel Trick

1.数据升维

那如何实现呢?更精确地说:如何使数据升维呢?

从SVM我们知道了那个用来分类的函数:

hyper plane

申明一下:我们升维的目的在于,SVM是一个线性分类器。所以它不能画一些弯弯曲曲的线。

那现在简单了:

只要把这个函数中 x 变成 f(x) 就行了。

直观看图:

投射

2. 简化计算

这样就好了么?数据升维,我们是可以找到超平面了,但是也意味着我们计算量上升了。

来体会一下:

数据升维点乘计算

假如我们对一个二维空间做映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到了五个维度;如果原始空间是三维,那么我们会得到 19 维的新空间,这个数目是呈爆炸性增长的。

那怎么办呢?

有高人指点:

数据升维的本质是找到一种映射关系,使得在高维空间能够刻画这些数据在低维空间的分布

分布?简而言之,就是数据之间的关系,不管在什么空间,数据之间的关系都是相似的。

来来来,再看看,我们分类函数的特点: Dot Product.

有没有想起来什么?

嗯…

dot product

不,不是这个。是下面这个。

kernel function example

(有没有发现,其实这个就是初中数学的函数化简!)

两个数据升维Dot Product的过程了,可以用一个函数就刻画出来了。

是不是很激动!我不用到高维去做那个复杂计算了,我甚至不需要知道我投影到高维空间长什么样,我只需要找到这个函数去刻画这个「点乘」的投影过程,然后用这个函数去计算就可以啦!大大的简化了计算量!

再后来,人们把这个函数就「kernel function」!

3. 想多玩一会?

4. 感谢

  1. Credit to Master Zhao, Wen Zhong, Yue
  2. Statistical and causal approaches to machine learning : 对机器学习的核心概念介绍的清晰明了。
  3. 支持向量机: Kernel : 通熟易懂系列,且有公式推导。
  4. 机器学习有很多关于核函数的说法,核函数的定义和作用是什么? - 豆豆叶的回答 - 知乎 :直觉认识到核函数的特点:只要你能把连续函数空间填满,那么原空间上不同的分布在这个map下都会变成不同的点。
  5. How Support Vector Machines work / How to open a black box : 看过关于SVM最好的直觉表达
  6. Linear Regression and Kernel Methods : 来手把手实践一下。
  7. How to intuitively explain what a kernel is? : 核函数的直观例子
  8. Kernel Functions for Machine Learning Applications : 核函数大全
  9. Vector Calculus: Understanding the Dot Product : 内积的直观理解



2018.02.19