使用matlab进行高斯过程的平方协方差函数?

时间:2017-05-20 10:53:43

标签: matlab machine-learning hyperparameters

这是我第一次尝试编写协方差函数。我有以下价值观,

x = [-1.50 -1.0 -.75 -.40 -.25 0.00]; 
sf = 1.27;
ell = 1;
sn = 0.3;

平方指数协方差函数的公式是 enter image description here

我写的matlab代码为:

K = sf^2*exp(-0.5*(squareform(pdist(x)).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr);

其中sf是信号标准差,ell是特征长度标度,sn是噪音标准偏差,Ntr是培训输入数据的长度{{1 }}。  但这没有给我任何结果。我的编码是否有任何错误?

一旦我计算,我想总结成矩阵形式,如下所示, enter image description here

请帮忙吗?

如果x那么我们如何计算:

a)x_ = 0.2

b)K_ =[k(x_,x1) k(x_,x2)..........k(x_,xn)]

使用matlab?

1 个答案:

答案 0 :(得分:1)

我收到以下错误消息:

f

表示您的矩阵尺寸不一致。如果您分别评估代码的各个部分,您会注意到Error using + Matrix dimensions must agree. Error in untitled3 (line 7) K = sf^2*exp(-0.5*(squareform(pdist(x)).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr); 会返回pdist(x)向量。在pdist的文档中,解释了1x0的预期格式:

  

X行对应于观察,列对应于   变量

因此,不应计算x,而应计算pdist(x)的转置,即x

pdist(x.')

作为结论,请务必仔细阅读错误消息和文档,尤其是输入参数的预期格式。

<强>子问题

要计算K = sf^2*exp(-0.5*(squareform(pdist(x.')).^2)/ell^2)+(sn)^2*eye(Ntr,Ntr); 特定值K(在您提到的公式中为x_),您可以将您给定的公式几乎字面转换为MATLAB:

x'

要计算K_ = sf^2*exp(-0.5*(x-x_).^2/ell^2)+(sn)^2*(x == x_); ,您可以使用上面的公式并设置K__,或者您可以将公式简化为:

x = x_