如何使用 GPML (Matlab) 进行二维高斯过程进行回归?

Posted

技术标签:

【中文标题】如何使用 GPML (Matlab) 进行二维高斯过程进行回归?【英文标题】:How to make a 2D Gaussian Process using GPML (Matlab) for regression? 【发布时间】:2014-02-14 18:08:44 【问题描述】:

我有一个名为 XNx2 输入矩阵。我还有输出值 Y,它是一个向量 Nx1。我创建了一些数据进行如下测试:

Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);

所以,矩阵 Z 的尺寸为 nx2,将用作我的测试点。我使用 GPML 库提供的演示中的默认参数调整,如下所示:

covfunc = @covMaterniso, 3; 
ell = 1/4; sf = 1; 
hyp.cov = log([ell; sf]);
likfunc = @likGauss; 
sn = 0.1;
hyp.lik = log(sn);

然后使用gp函数:

[ymu ys2 fmu fs2] = gp(hyp, @infExact, [], covfunc, likfunc, x, y, z);

我希望 ymu 是 z 中每个测试值的预测值。当我这样绘制时:

[L1,L2]=meshgrid(Xtest',Ytest');
[mu,~]=meshgrid(ymu,ymu);
surf(L1,L2,ymu);

我得到一个奇怪的表面。即我得到彩色区域的条纹,而不是一些预期的高斯状结构。 XY 中的数据是现实生活中的数据。

我的期望:

【问题讨论】:

可以上传你认为不对的剧情图片吗?另外,您没有均值函数,那么您的训练数据是否标准化为近似标准化的高斯?如果你不这样做,你的超参数拟合可能会完全搞砸。 如何在这里上传图片?我认为它应该在没有均值函数的情况下工作,因为我的数据在用眼睛观察时已经足够好了。 编辑你的帖子,有一个图片按钮,点击上传。 如果您的 Y 具有较大的非零均值,或者与您指定的初始比例超参数相比,它的比例较大,那么超参数的优化可能会遇到数值问题。报告学习到的超参数,我可以告诉你是否合理。 你现在可以看到图片了吗? 【参考方案1】:

你用错了。您的 z 变量应由 [L1(:),L2(:)] 给出。那么你应该绘制的是:

surf(L1,L2,reshape(ymu,size(L1)));

【讨论】:

错误使用重塑要重塑元素的数量不能改变。空间GP中的错误(第63行) surf(L1,L2,reshape(ymu,size(L1))); size(L1)=size(L2)=500x500 and size(ymu)=500x1 我是否也必须为 X 执行此操作 ([L1(:),L2(:)])? 如果你按照我告诉你的方式写 z,那么 ymu 就是 25000x1。 X 和 y 可以是任意值,但 X 的大小必须为 Nx2,y 必须为 Nx1,其中 N 是数据点的数量。

以上是关于如何使用 GPML (Matlab) 进行二维高斯过程进行回归?的主要内容,如果未能解决你的问题,请参考以下文章

用matlab如何画二维高斯分布图

图像滤波图像二维双边高斯滤波matlab源码

信号图像Matlab如何得到高斯滤波器的整数模板

在matlab里怎么产生零均值协方差是已知的高斯信号呢?

怎么用MATLAB产生2维或者多维的高斯分布数据

3.15matlab 高斯滤波,快速滤波