出发点
如果我的数据有足够多的可利用的信息,那么我可以直接做我喜欢的事了。但是现在如果没有那么多的信息,我可不可以在数学上进行一些投机呢?
低维(比如我只知道一个人的年龄,性别,那我能对她多了解吗? )
高维(比如我知道他从出生开始,做过哪些事,赚过哪些钱等)
如果我们对数据更好的了解(是机器去了解他们,我们不需要认识),得到的结果不也会更好嘛。
有些时候低微的问题难以解决,我们把它映射到高维更好解决,但是计算量是不是变大了?
1、线性核函数
Linear核函数对数据不做任何变换。
何时来使用呢?
特征已经比较丰富了(上百万千万),样本数据量巨大,需要进行实时得出结果的问题。
不需要设置任何参数,直接就可以用了。
一般可以先用线性核函数,解决不了再用高斯核函数。
2
2、核函数实例
还是先从一个小例子来阐述问题。假设我们有俩个数据,x= (x1, x2,x3);y =(y1, y2,y3),此时在3维空间已经不能对其进行线性划分了,那么我们通过一个函数将数据映射到更高维的空间,比如9维的话,那么f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3X1,x3x2,x3x3),由于需要计算内积,所以在新的数据在9维空间,需要计算<f(x),f(y)>的内积,需要花费O (n^2)。
在具体点,令x =(1,2,3);y =(4,5,6),那么f(x)=(1,2,3,2,4,6,3,6,9), f(y)=(16,20,24,20,25,36,24,30,36),
此时<f(x), f(y)> = 16+40 + 72+ 40 + 100+ 180 + 72+ 180 + 324= 1024
似乎还能计算,但是如果将维数扩大到一个非常大数时候,计算起来可就不是一丁点问题了。
但是发现,K(x, y ) = (<x, y>)^2
K(x,y)=(4 + 10+ 18 ) ^2 =32^2 = 1024
俩者相等,K(x,y )= (<x, y>)^2=<f(x), f(y)>,但是K(x, y )计算起来却比<f(x), f(y)>简单的多,也就是说只要用K(x, y )来计算,,效果和<f(x), f(y)>是一样的,但是计算效率却大幅度提高了,如:K(x, y)是O(n),而<f(x),f(y)>是O(n^2).所以使用核函数的好处就是,可以在一个低维空间去完成高维度(或者无限维度)样本内积的计算,比如K(x,y)=(4+10 +18 )^2的3D空间对比<f(x), f(y)> = 16+ 40+ 72+ 40 +100+ 180+324的9D空间。
3、高斯核函数
公认最常用的核函数。。。。
X和Y是多维的向量,||X-Y||是指两个样本点之间的距离,比如可以用汉明距离。
这后面的每一项都是一个特征,是无穷维的,也就是把你的特征映射到无穷维,结果越复杂,处理问题的能力也就越强。当然过拟合风险也就越大。
4、参数的影响
尖角越鲜明,对识别的帮助越大,当然过拟合风险也就越大
σ写成了倒数
转自:https://www.bilibili.com/video/BV13W4y1y7gB/?spm_id_from=333.337.search-card.all.click