【问题标题】:Squared covariance function of Gaussian process using matlab?使用matlab的高斯过程的平方协方差函数?
【发布时间】:2017-10-20 11:11:53
【问题描述】:

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

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?

【问题讨论】:

  • “但这没有给我任何结果”是什么意思
  • 我的意思是当我运行这段代码时,K 值显示为 null 所以我认为我的编程中有一些小错误,我看不到!!

标签: matlab machine-learning hyperparameters


【解决方案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 的行对应于观测值,列对应于 变量

因此,您应该计算x 的转置,而不是计算pdist(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;

【讨论】:

  • 谢谢。我没有注意到:)
  • 我也有这个问题的第二部分,请看一下,如果可能的话给一些指导
  • 你的第二部分是什么? K 已经是请求的 6x6 矩阵。
  • 你能告诉我这个公式背后的一些概念,特别是最后一个计算K_的概念吗?你使用了sf和sn值?
  • 你不明白哪一部分? K_ 还是 K__?如果我没记错的话,就是你的数学公式到 MATLAB 代码的精确翻译。
猜你喜欢
  • 1970-01-01
  • 2015-10-08
  • 2015-12-16
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 2013-09-14
相关资源
最近更新 更多