【问题标题】:Measure the STD of RMSE测量 RMSE 的 STD
【发布时间】:2015-07-22 05:58:18
【问题描述】:

我正在研究时间序列预测问题,我想确认计算均方根误差的标准偏差是否有意义。如果是这样,这是正确的方法吗?

STD_test = std(sqrt((y_real-y_pred).^2))

另外,假设模型的输出为 100,RMSE 为 20,STD 为 10。这意味着实际值在 [70,120] 之间?

【问题讨论】:

  • 您在 RMSE 的定义中缺少 meansqrt(mean((y - yhat).^2))。因此,RMSE 是单个数值,而不是数组。那个 STD 没有任何意义,但你可以拿你的样本的 STD。此外,您无法就样本的限制得出结论,只能得出关于它们在平均值周围分布的一些信息(即 10 的 STD = 68% 的样本在平均值的 +/- 10 个单位内)

标签: matlab time-series forecasting


【解决方案1】:

术语y_real-y_pred 是错误向量。表达式对它的每个元素求平方,然后对它的每个元素求平方,因此具有abs() 的效果。然后std() 在错误向量上运行。因此,这是计算 S.D.的(绝对)错误。这是一个有意义的指标,但不太可能是您所追求的。试试:

e = y_real-y_pred;
MSE = mean(e.^2);
RMSE = sqrt(MSE);
sd = std(RMSE);

这将计算出你想要的。但是,由于 RMSE 是一个标量值,sd 的值将为零,因此要回答您问题的第一部分,不,它没有意义。有意义的是看s.d。错误本身:

sd = std(e);

RMSE 和 s.d.有一定的相关性,但它们是不同的。

【讨论】:

  • 我的一部分认为这没有意义,但另一部分......如果 RMSE = 15 mg/dl,我们可以说每个 ± 15 mg/dl 的预测都有一个误差对吧?
  • 嗯,你可以说 RMSE 是 15mg/dl,这意味着精确。 +- 指的是一个范围,尽管它有时用于表示标量误差度量,例如 s.d。或 RMSE(在某些领域,这样做甚至没有错误)。但是,我会坚持报告您使用的确切指标。
  • 我想知道的是如何解释 RMSE?这是与每个预测相关的平均误差吗?我的数据单位是 mg/dl 这就是我使用它的原因 ;)
  • RMSE 是 2 阶误差度量,而等效的 1 阶误差度量是平均绝对误差,例如 (MAE)。 RMSE 对异常值更敏感,这是一个区别。在许多领域,都使用了 RMSE(或 MSE),因为它使用自动优化非常容易实现(我猜,自动减少 MSE 是最常见的优化技术)。对于模型/数据分析,两者都很好,它在一定程度上取决于数据(和分析)的性质,这会提供更多信息。在大多数情况下,它们会在语义上给你非常相似的答案。
  • 抱歉,这不是一个真正的答案。粗略地说,RMSE 的值可以让您了解任何一个样本的错误的预期值,是的。至少,对于零均值高斯数据。对 RMSE 含义的最准确描述是 RMSE。然而,对于许多源自物理系统的问题(众所周知,这些问题都是零均值和高斯...)。
【解决方案2】:

你的 RMSE 没问题;但最后的结论不是!标准为 10 意味着您的输出有大约 68% 的机会位于 +- 标准范围内。您可以参考this wiki link了解更多规则。

【讨论】:

  • 顺便说一句,您的 RMSE 给出了您的系列的每个元素的错误。如果您正在寻找一个数字来代表整个系列的 RMSE,您必须采用 Sebastien 提到的平均值。
  • 我知道 rmse 函数缺少平均值,但就像你所说的那样,我会得到一个标量。这就是我从公式中提取它的原因。
猜你喜欢
  • 2019-05-26
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2014-12-14
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多