线性模型有两个向量,一个是参数向量,另一个是基函数向量。我们要做的是找到参数想郎使得线性模型能很好地描述用户的输入与输出。但是多项式与三角多项式基函数与输入模型都没关,因为是内定的嘛。除非是使用多维的输入向量,用一维基函数构造多维基函数,有乘法模型和加法模型,但是也各有缺点。

下面介绍的核模型就是在进行基函数的设计时,使用到输入样本 {xi}(i=1,...,n)。

核模型,是以使用被称为核函数的二元函数κ(⋅,⋅),以K(x,xj)  (j=1,...,n)的线性结合方式加以定义的。

e79e4db1accae4ca42e629f301a44198.png

众多核函数中,高斯核函数使用最为广泛:

f06f9fb7aef30132e04831d2cc048480.png

上式中,||.||表示2范数,即406ef9e8f46d91bf9e66986b20d0d6ed.png。h和c分别对应于高斯核函数的带宽与均值。

其实这个式子表达的不太好,二范数计算得到的是一个值,而K的值是针对每一个x值都有一个值,也就是y与x是一一对应的。

自我感觉应该写成这样:1b7284416512583989b320563b285f66.png

然后用matlab画出高斯核函数的图形:

k.m:

function y = K(h,c)

%高斯核函数

x=-15:0.1:20;

y=exp(-((x-c).^2)/(2*h^2));

% plot(x,y);

% legend('. h=1,c=0');

endKtest.m

clear

clc

x=-15:0.1:20;

plot(x,K(1,0),'r-');hold on

plot(x,K(1,5),'b-');hold on

plot(x,K(3,0),'ro');hold on

plot(x,K(3,5),'bo');hold on

legend('h=1 c=0','h=1 c=5','h=3 c=0','h=3 c=5');图像如下:

60cf455483ef4c374d16dd12690f7672.png

可以看出,使用2范数的表达意思是对的,但是在matlab里面画的时候是一条线,范数在matlab里面的函数是norm(x,n)代表x的n范数

在高斯核函数中,对各个输入样本{xi} (i=1,...,n)进行高斯核配置,并把其高度作为参数进行学习。因此,在高斯核模型中,一般只能在训练集的输入样本附近对函数进行近似(注意,对输入空间的全体函数进行近似的乘法模型不同),由于只是附近,所以某种程度上减轻了维数灾难带来的影响。

170e09201f9ee5590d38062eccb79a5c.png

从上图可以看出,对各个输入样本{xi}(i=1...n)进行高斯核配置,并把其高度{θi}(i=1,...,n)作为参数进行学习,而且可以看出只是在附近近似。

只在训练集附近样本附近对函数近似,可以减轻维数灾难的影响。

实际上,核模型里面,参数的个数不依赖于输入变量x的维数d,只由训练样本数n决定。因此,即使输入的维数d相当大,只要训练样本数n不是太大,也会在普通计算机处理范围之内。而即使训练样本数n也很大,只要把输入样本{xi}(i=1...n)的部分集合{cj}(j=1,...,b)作为核均值来进行计算,计算负荷也可以得到很好的抑制。

在统计学中,通常把基于参数的线性模型成为参数模型,把核模型成为非参数模型,以示区别。

核模型的另一个特征:当输入样本x不是向量的时候,也能够很容易地实现扩展。在核模型中,样本只存在于核函数K(x,x')中,因此,只需对两个输入样本x和x' 相对应的核函数加以定义,而不用关心输入样本x具体是什么。

近几年研究比较热门的还有核映射,是使用输入样本x是字符串、决策树或者图表等的核函数进行机器学习的算法。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐