Matlab 用GPML构造后验协方差
我想使用Matlab包GPML从回归问题的后验分布中提取样本。函数gp函数返回一个三元组Matlab 用GPML构造后验协方差,matlab,bayesian,Matlab,Bayesian,我想使用Matlab包GPML从回归问题的后验分布中提取样本。函数gp函数返回一个三元组post=[alpha,sW,L],其中 alpha=inv(K)*(mu-m),其中m为先验均值,mu为后验均值(K为先验协方差) sW=diag(sqrt(W))(W与结果变量的方差成对角线) L=-inv(K+inv(W)) 后验分布为高斯分布,平均值m+K*alpha和协方差inv(inv(K)+W))。然而,似乎没有办法通过使用这个三元组变量或其他GPML函数来获得矩阵K或m。然而,似乎有一个很
post=[alpha,sW,L]
,其中
,其中alpha=inv(K)*(mu-m)
为先验均值,m
为后验均值(mu
为先验协方差)李>K
(sW=diag(sqrt(W))
与结果变量的方差成对角线)李>W
L=-inv(K+inv(W))
m+K*alpha
和协方差inv(inv(K)+W))
。然而,似乎没有办法通过使用这个三元组变量或其他GPML函数来获得矩阵K
或m
。然而,似乎有一个很好的理由将这些变量作为输出给出。恢复后验分布的正确方法是什么
这是手册中作为MWE的(稍加修改)示例代码:
x = gpml_randn(0.8, 20, 1);
y = sin(3*x) + 0.1*gpml_randn(0.9, 20, 1);
xs = linspace(-3, 3, 61)';
meanfunc = [];
covfunc = @covSEiso;
likfunc = @likGauss;
hyp = struct('mean', [], 'cov', [0 0], 'lik', -1);
[mu, s2, latentmeans, latentvars, dummyVar, post] = gp(hyp, @infGaussLik, meanfunc, covfunc, likfunc, x, y, xs);
我不熟悉您正在谈论的包,但在我看来,您可以重新安排输出以(重新)计算所需的变量。例如,从
sW
可以得到W
,给定L
和W
可以得到K
,等等。。