高斯过程的平方协方差函数

问题描述 投票:0回答:1

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

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

平方指数协方差函数的公式为

我编写的 matlab 代码为:

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

其中

sf
是信号标准差,
ell
是特征长度尺度,
sn
是噪声标准差,
Ntr
是训练输入数据的长度
x
。 但这没有给我任何结果。我的编码有错误吗?

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

如果

x_ = 0.2
那么我们如何计算:

a)

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

b)

K__ = k(x_,x_)

使用matlab?

matlab machine-learning hyperparameters gaussian-process
1个回答
1
投票

我收到以下错误消息:

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)
返回一个
1x0
向量。在
pdist
的文档中解释了
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_
(您提到的公式中的
x'
),您几乎可以将给定的公式转换为MATLAB:

K_ = sf^2*exp(-0.5*(x-x_).^2/ell^2)+(sn)^2*(x == x_);

要计算

K__
,您可以使用上面的公式并设置
x = x_
,或者您可以将公式简化为:

K__ = sf^2+sn^2;
© www.soinside.com 2019 - 2024. All rights reserved.