核函数精解

匿名 (未验证) 提交于 2019-12-02 23:34:01

https://zhuanlan.zhihu.com/p/45223109

高维映射 与 核方法(Kernel Methods)

29 人赞同了该文章

高维映射跟核方法的概念很容易混淆。

高维映射通过将样本从原始空间映射到一个更高维的特征空间,从而解决了低纬下难以解决的问题。

核方法往往跟高维映射配合使用,可以看做是一种技巧,可以通过它来避免这种映射的计算。

下面详细介绍一下这两个概念。

一、高维映射

我们知道,线性回归是用一条直线来拟合数据。但是我们往往会遇到数据并不服从线性分布的情况,比如:

于是,我们选择变成一个二次方程来拟合:

这里分布是一个二次函数,如果我们遇到了更加复杂的函数,我们依然可以通过选取合适的拉伸函数来变成线性的问题。幸运的是可以证明,只要数据的分布在维度有限的空间上,我们总是能够找到一个更高维度的空间,使得它的分布是线性的。

二、求解高维映射后的线性方程

如果不做高维映射的话,线性回归的解是:

不明白的可以看看我另外一篇的讲线性回归的,里面包含了推导过程。

好了,右边全都是已知量,我们已经解出来了这个模型了。

我们做完高维映射之后的线性方程,要如何去预测模型呢?来模拟一下这个过程:

看看上面的过程中,我们用了多少次拉伸函数。在训练过程中,我们对训练集里面每个样本都用了一次拉伸。在预测的时候,我们又要对预测集里面的每个样本做一次拉伸。现在我告诉你,拉伸函数往往计算量非常大,那么计算这个拉伸显然是一个非常大的开销。

虽然说理论上,因为有限维度的数据必然存在一个拉伸函数将数据映射到高维并且满足线性分布。也就是说必然存在一个完美的拉伸函数。然而,我们往往并不知道到底怎么样的函数才是完美的拉伸函数,选择合适的拉伸函数也是一个非常麻烦的问题。

现在我告诉你,我们有一种取巧的办法。使得我们根本不用计算拉伸函数,有时候甚至你都不需要知道拉伸函数是什么,我们依然能够做预测。这个无比巧妙的简便方法,帮助我们跳过了拉伸的步骤,这个方法就叫做核方法。

三、核函数(Kernel function)

你可能非常迫切地想知道这个巧妙的核方法到底是什么。但是我要在这里卖个关子,不直接告诉你核方法是怎么来的,我们从定义出发一步一步慢慢推导出来。

我们知道,两个向量做内积得到的是一个值。这个过程中,我们先是把两个向量拉伸到高维,然后又通过求内积变回一维。

这类核函数每个都有各自的表达式,举个例子:

线性核:

多项式核:

注意到,这个表达式里面是不含有拉伸函数的。但是它既然满足核函数的条件,它一定是能改写成两个向量拉伸求内积的形式。

线性核里面隐藏的变换就是做线性拉伸变换(我们之前讨论过,光用线性拉伸是不能解决非线性问题的)。多项式核自然就是做几次方的拉伸变换。换句话说,每一个能被叫做核函数的函数,里面都藏着一个对应拉伸的函数。这些核函数的命名通常也跟如何做拉伸变换有关系。

总结一下,我们现在反了过来,先找满足核函数条件的的表达式,再倒推出一种映射关系。我们选哪个核函数,实际上就是在选择用哪种方法映射。通过核函数,我们就能跳过映射的过程。

四、核方法(Kernel method)

好了,现在我们打定主意,要利用核函数来跳过做映射了。我们假如找到了一个核函数,也就是说我们的拉伸函数也定下来了。我们改写一下核函数的参数,写成这样的形式:

到底要怎么利用呢?先观察一下高维映射以后的模型表达式:

试着把它展开一下,矩阵乘向量的怎么写成求和的形式呢。其实矩阵右乘一个向量,相当于对矩阵的每一列都乘对于向量位置的分量再累加,如图所示:

看到没有,我们右边已经出现了一个核函数的表达形式了。我们可以直接根据公式

现在的y表达式中,已经不含有拉伸函数项了,这样我们就避开了求拉伸函数的过程。

机器学习中的正则化,L1 L2正则

解得:

再看

五、总结

在使用机器学习模型做回归或者分类的时候,假如在低维度空间下数据集不好用,那么可以尝试通过把输入的值做高维映射来解决。高维映射不仅仅用于线性回归,包括逻辑回归,还有SVM,尤其是SVM。

。这种替换的技巧就叫做核方法,能够实现替换目的的函数叫做核函数。


原创,转载请注明出处。

初学者,不可避免出现错误。如果有任何问题,欢迎指正。也欢迎一起交流、讨论。

欢迎关注我的专栏:

文章来源: https://blog.csdn.net/xiaozuo_zhazha/article/details/90340603
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!