1、入门
在了解之前先从一个小的例子入手。问题如下:
在一个平面上存在四个点。两个点为红色,两个点为绿色,实现对点的分割有两个方法。
- 一种在平面上寻找一种合适的非线性函数。
- 一种是引入第三维度,实现特征从低纬度到高纬度的分类。
首先使用第一种方法,通过对上述的分析,本文中分别给出三种方程。对结果进行分析,判断哪个函数可以更好的分开图中的两类别的点。
给出的函数分别为x+y
、x*y
、x**2
三种,将点代入公式中可见。
函数 \ 坐标 | 0,3 | 1,2 | 2,1 | 3,0 |
---|---|---|---|---|
x+y | 3 | 3 | 3 | 3 |
x*y | 0 | 2 | 2 | 0 |
x**2 | 0 | 1 | 4 | 9 |
通过对表格中的数据进行分析,函数x*y
最能将点分割开。即y = 1 / x
分割后的函数如下图所示。
方法一:
其中函数画的不太标准,函数点坐落在y = 2 / x
曲线上,由图可知,通过函数y = 1 / x
可以将不同颜色的点区分开。
方法二:
在方法一的基础上增加一个维度,则原来的函数点由于(x,y)
变化为(x,y,x*y)
。变化后的图像如下。
通过对上述升高维度之后,也可以很容易将点进行分割,实际上方法一与方法二的原理类似,只不过是通过两种不同的方式来进行展现,实际上都是通过非线性的方式对函数进行拟合。
2、原理
这部分属于转载自https://www.jianshu.com/p/1486550ed403
1、核函数的定义
核函数包括线性核函数、多项式核函数、高斯核函数等,其中高斯核函数最常用,可以将数据映射到无穷维,也叫做径向基函数(Radial Basis Function 简称 RBF)。
机器学习中,对于线性可分的情况研究的比较透彻,但是很多情况是我们希望我们的模型学习非线性的模型。通常的做法就是选择一个函数ϕ(x)将x映射到另一个空间中,即通过某非线性变换ϕ(x) ,将输入空间映射到高维特征空间。关键是如何选择ϕ(x)。
假设X是输入空间,H是X映射到的高维特征空间,存在一个映射ϕ使得X中的点x能够计算得到H空间中的点h: h=ϕ(x)
对于所有的X中的点都成立。x,z是X空间中的点,如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数k(x,z)满足条件: k(x,z)=ϕ(x)⋅ϕ(z) 则称k为核函数,而ϕ为映射函数。
核函数带来的好处很明显,如果先要映射到高维空间然后进行模型学习,计算量远远大于在低维空间中直接直接采用核函数计算
2、核函数的使用
上面,我们提到,使用核函数关键在于选择应设函数ϕ(x),一般有三种做法 :
1)通过核函数,比如RBF。如果ϕ(x) 具有足够高的维数,我们总是有足够的能力来拟合训练集,但是对于测试集的泛化往往不佳。非常通用的特征映射通常只基于局部光滑的原则,并且没有将足够的先验信息进行编码来解决高级问题。
2)另一种选择是手动地设计ϕ,在深度学习以前,这种方法对于每个单独的任务都需要人们数十年的努力,从业者各自擅长特定的领域(如语音识别或计算机视觉),并且不同领域之间很难迁移 (transfer)。
3)深度学习方式是去学习这个函数ϕ(x)
那么能不能不通过映射函数而直接使用核函数计算高维空间的点的距离以及夹角呢?
答案是可以的,核函数的技巧就是不显示的定义映射函数,而在高维空间中直接使用核函数进行计算。
核函数必须是连续的,对称的,并且最优选地应该具有正(半)定Gram矩阵。
显然,Gram矩阵是半正定的。
3、常用核函数
在实际计算中,通常会选用高斯核。
4、举例
假设有一张二维空间的图片,匾额和门现行不可分
然而,当映射到三维空间后,则变成了现行可分
如上面的例子所说,核函数的作用就是隐含着一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。