在学习KCF算法的时候,遇到了核函数(kernel faction),因为这也是机器学习中的重要的部分,于是自己先简单学习了一下。
学习了一部分,来自http://www.powercam.cc/home.php?user=chli&f=slide&v=&fid=4097
之后理解更多的话,会在这篇博客里进行补充。
首先,提取需要用的样本数据涉及到的第一个概念是线性可分,通常理解就是能否在空间中完整的划出两类样本数据点。一维空间中就是用一个点,二维空间用一条直线,三维空间就是用一个平面面,在n维空间则是用一个超平面(n-1维度)。(不用直线和平面分开数据的话,就是线性不可分,需要一定的计算量)
这里我参考了https://www.cnblogs.com/fuqia/p/8963429.html
对于线性不可分的样本数据,利用核函数将样本映射到更高维度的空间,就可以简化计算量,变成线性可分,举个例子:
至于将样本数据映射到怎么样的一个新的空间(一般称作feature space特征空间),涉及的问题就是使用的是哪种核函数了。
对我对核函数的直观理解是这样的:假设X是输入空间,H是特征空间,存在一个映射ϕ(feature mapping)使得X中的点x能够计算得到H空间中的点z=ϕ(x)
比如:
但是映射对于特征空间的几何特性的计算没有作用(几何性质,距离和角度,都与内积有关,所以在特征空间的几何性质,只需得到内积),只需使用核函数。核函数与映射函数可以相互推导的。所以一般使用核函数求特征空间下的内积。
核函数K()的形式: K(x, y) =< ϕ (x), ϕ(y)>,表示的是对于任意x和y两个点的ϕ
(x)和ϕ(y),他们的内积可以转化为以点x、y为自变量的函数表达式。
举例:
在多项式核函数中,两个点x= (x1, x2)和y= (y1, y2),映射函数ϕ (x1,x2)= (x1x1,x1x2,x2x1,x2x2),核函数 K(x, y) = (<x, y>)^2。
假设点x(1,2),y(3,4)求解K(x,y)=121; ϕ(x)=(1,2,2,4), ϕ(y)=(9,12,12,16),内积:(19+212+2*12+4+16)=121
核函数的形成条件:任意给定的有限数量的样本数据点所组成的内积矩阵必须是正半定矩阵。内积矩阵:原本n个点形成的n *n个内积形成的矩阵。
核矩阵:用ϕ (x)和ϕ (y)构成的内积矩阵,也可以用[K(xi,yj)]的形式。
常见核函数有: