如何使用 GPML (Matlab) 进行二维高斯过程进行回归?
Posted
技术标签:
【中文标题】如何使用 GPML (Matlab) 进行二维高斯过程进行回归?【英文标题】:How to make a 2D Gaussian Process using GPML (Matlab) for regression? 【发布时间】:2014-02-14 18:08:44 【问题描述】:我有一个名为 X 的 Nx2 输入矩阵。我还有输出值 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);
我得到一个奇怪的表面。即我得到彩色区域的条纹,而不是一些预期的高斯状结构。 X 和 Y 中的数据是现实生活中的数据。
我的期望:
【问题讨论】:
可以上传你认为不对的剧情图片吗?另外,您没有均值函数,那么您的训练数据是否标准化为近似标准化的高斯?如果你不这样做,你的超参数拟合可能会完全搞砸。 如何在这里上传图片?我认为它应该在没有均值函数的情况下工作,因为我的数据在用眼睛观察时已经足够好了。 编辑你的帖子,有一个图片按钮,点击上传。 如果您的 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) 进行二维高斯过程进行回归?的主要内容,如果未能解决你的问题,请参考以下文章