如何使用 GPML 包进行多维输入?

机器算法验证 回归 机器学习 matlab 随机过程 非参数贝叶斯
2022-04-12 18:51:35

我已经从网站下载了机器学习的高斯过程 (GPML) 包 (gpml-matlab-v3.1-2010-09-27.zip),我可以在Octave中运行回归示例 ( demoRegression ) 它工作得很好。

现在我有自己的回归数据,其中 x(输入)矩阵是 54x10 矩阵(54 个样本,10 个输入变量),y(目标)向量是 54x1。

问题是我不明白如何计算 meanfunc 和 covfunc,为回归示例提供的代码不适用于多个输入数据集。

我对 Octave 的理解不足以解码用于计算它的特定代码。

有没有人试过这个,也许可以举个例子?

1个回答

这是一个更小的二维回归问题示例(我没有八度音阶,只有 matlab,但希望差异无关紧要)。meanfunc 和 covfunc 应该对任意数量的输入感到满意,前提是协方差函数没有每个输入特征的超参数(例如covSEiso)。希望这可以帮助

[X1,X2] = meshgrid(-pi:pi/16:+pi, -pi:pi/16:+pi);

Y = sin(X1).*sin(X2) + 0.1*randn(size(X1));

imagesc(Y); drawnow;

x = [X1(:) X2(:)];
y = Y(:);

covfunc = @covSEiso; 
  likfunc = @likGauss; sn = 0.1; hyp.lik = log(sn);

hyp2.cov = [0 ; 0];    
hyp2.lik = log(0.1);
hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, x, y);
exp(hyp2.lik)
nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, x, y)

[m s2] = gp(hyp2, @infExact, [], covfunc, likfunc, x, y, x);

m = reshape(m, size(Y));

figure(2); imagesc(m);