machine-learning - 这是使用状态 LSTM 神经网络预测时间序列的正确方法吗?

标签 machine-learning neural-network keras lstm stateful

我正在使用 LSTM 神经网络(有状态)进行时间序列预测。

我希望有状态的LSTM能够捕获隐藏的模式并做出令人满意的预测(导致时间序列变化的物理定律尚不清楚)。

我有一个时间序列X,长度为1500(实际观测数据),我的目的是预测 future 的100

我认为预测下一个 10 比预测下一个 100 更有希望(对吗?)。

因此,我像这样准备训练数据(始终使用 100 值来预测下一个 10x_n 表示 X 中的第 n 个 元素):

shape of trainX: [140, 100, 1]
shape of trainY: [140, 10, 1]
---
0: [x_0,  x_1, ...,  x_99]  -> [x_100, x_101, ..., x_109]
1: [x_10, x_11, ..., x_109] -> [x_110, x_111, ..., x_119]
2: [x_20, x_21, ..., x_119] -> [x_120, x_121, ..., x_129]
                     ...
139: [x_1390, x_1391, ..., x_1489] -> [x_1490, x_1491, ..., x_1499]
---

训练结束后,我想使用模型通过 [x_1400 - x_1499] 预测接下来的 10 个值 [x_1500 - x_1509] >,然后使用 [x_1410 - x_1509] 预测接下来的 10 个值 [x_1510 - x_1519]

这是正确的方法吗?

经过大量阅读文档和示例后,我可以训练模型并进行预测,但结果似乎并不令人满意。

为了验证该方法,我假设最后的 100 (x_1400 - x_1499) 值未知,并将它们从 trainXtrainY 中删除>,然后尝试训练模型并预测它们。最后,将预测值与观测值进行比较。

如有任何建议或意见,我们将不胜感激。

时间序列如下所示: enter image description here

最佳答案

你的问题确实很复杂。在我尝试回答这个问题之前,我将与您分享我的疑问,即使用 LSTM 来完成您的任务是否明智。您想要对看似相对简单的时间序列使用真正高级的模型(LSTM 能够学习真正复杂的模式)。而且 - 你的数据量非常小。老实说 - 我会首先尝试训练更简单、更容易的方法(例如 ARMAARIMA)。

回答你的问题 - 如果你的方法很好 - 它似乎是合理的。其他合理的方法是预测所有 100 步或例如50 步两次。使用 10 步骤,您可能会遇到错误累积 - 但这仍然可能是一个好方法。

正如我之前提到的 - 我宁愿尝试更简单的 ML 方法来完成此任务,但如果您确实想使用 LSTM,您可以通过以下方式解决此问题:

  1. 定义元参数,例如您想要预测的前进步数、输入网络的输入大小。
  2. 尝试使用例如网格搜索以找到该元参数的最佳值。使用k-fold交叉验证评估每个设置。
  3. 使用最佳元参数设置重新训练最终模型。

您的数据量相对较少,因此您可以轻松找到超参数的最佳值。这还将告诉您您的方法是否良好 - 只需检查最佳解决方案提供的结果即可。

关于machine-learning - 这是使用状态 LSTM 神经网络预测时间序列的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652526/

相关文章:

python - python中的序列到序列建模

python - 为什么我们必须在深度神经网络中嵌入列,而不是在 tensorflow 的线性分类器中嵌入列?

tensorflow - keras.load_model()无法识别Tensorflow的激活功能

python - 具有图像数据和预提取特征的 CNN 模型

python - 如何提高 Python 中图像分类 keras 模型的准确性?

python - 为特定领域微调 Bert(无监督)

python - 如何用卷积层代替密集层?

python - 错误: from keras.预处理.文本导入base_filter

machine-learning - 如何在 sklearn::LGBMClassifier() 中的 LightGBM 分类器的 feature_importances_ 中将 'gain' 设置为特征重要性度量

algorithm - 我的梯度下降算法有什么问题