使用 LSTM 进行预测

Posted

技术标签:

【中文标题】使用 LSTM 进行预测【英文标题】:Forecasting using LSTM 【发布时间】:2018-09-24 09:11:22 【问题描述】:

如何使用长短期记忆 (LSTM) 根据历史数据集预测未来值 x(t+1)(样本外预测)。我阅读并尝试了许多使用 lstm 进行预测和预测的网络教程,但仍然离题很远。进行此预测的确切程序是什么?是否就像移动目标数组 (n) 步一样简单,其中 n 是未来预测的数量并进行预测操作?还是有其他技术? 请帮助或提出建议。

【问题讨论】:

【参考方案1】:

你能提供你正在使用的框架吗?张量流?火炬?具体是哪些网络教程?

假设您要使用 tensorflow,您可以从其中之一复制和粘贴代码,测试它是否适用于提供的数据集,然后修改输入编码函数以适合您的数据集,然后在您的数据集上运行。

https://github.com/llSourcell/How-to-Predict-Stock-Prices-Easily-Demo(最佳)

https://github.com/sebastianheinz/stockprediction

https://github.com/talolard/MarketVectors/blob/master/preparedata.ipynb(你必须用 lstm 替换 fc 层,并调整输入)

一般程序是这样的(假设 tensorflow):

    下载数据集 创建一个函数来批量加载数据 创建一个函数来对一批数据进行编码(标准化、其他转换) 创建 LSTM 层以接收一系列输入。 创建输出层(通常是全连接的)以获取最后的 lstm 状态并预测所需大小的输出。 创建一个 tf 会话将所有内容连接在一起,然后点击运行。

一些关于使用哪个网络的概念性问题:

多少输入对应多少输出 - 请参阅 Karpathy 撰写的优秀 http://cs231n.stanford.edu/slides/2016/winter1516_lecture10.pdf

您认为股票价格有多远,例如 t-100... t 或 t-10 ...t 可能决定隐藏层的大小。

您认为还有哪些其他信息与模型相关?股票A会影响股票B吗?在这种情况下,您可能有 2 个 lstms 将状态输出到您的全连接层...

【讨论】:

我正在使用TensorFlow框架,我在预测测试数据方面没有问题,您能告诉我如何预测未来值吗?即,如果我的数据集中有 3000 行,我将要预测行号 3001 处的值,它可以做到吗?我应用了这个教程:python36.com/predict-cryptocurrency-price-using-lstm 和这个:kaggle.com/jphoon/bitcoin-time-series-prediction-with-lstm 当然可以。我们需要知道 - 您的数据是什么样的?每行的列是什么 - 请在您的问题中发布此内容,因为它是 ***s 指南的一部分。然后,可能会修改网络的输入大小。在第二个链接中,输出是第 t+1 天给定天 t-5 到 t,因此可以更改为 300...这与您的问题有何不同? 我认为我没有得到预测操作的全貌。能否请您总结一下第二个教程中在执行完 model.fit() 操作后发生了什么?

以上是关于使用 LSTM 进行预测的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tensorflow 进行 LSTM 单步预测

Keras LSTM:如何预测超越验证与预测?

使用 lstm 进行基本时间序列预测

使用 LSTM 进行时间序列预测

如何使用 LSTM 单元训练 RNN 以进行时间序列预测

LSTM - 进行预测时输入中的 Matmul 错误