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

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

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是训练输入数据x的长度。但这没有给我任何结果。我的代码是否有错误?

一旦我计算出来,我想将结果总结成如下的矩阵形式,enter image description here

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

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

b) K__ = k(x_,x_)

使用MATLAB?


回答:

我得到了以下错误消息:

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);

总之,务必仔细阅读错误消息和文档,尤其是输入参数的预期格式。

子问题

要为x_的特定值计算K(你在提到的公式中为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;

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注