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

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

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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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