在时间序列数据集上使用递归神经网络进行预测
Posted
技术标签:
【中文标题】在时间序列数据集上使用递归神经网络进行预测【英文标题】:Prediction using Recurrent Neural Network on Time series dataset 【发布时间】:2013-09-11 07:24:14 【问题描述】:说明
给定一个包含 10 个序列的数据集 - 一个序列对应于一天的股票价值记录 - 其中每个包含 50 个股票价值的样本记录,从早上或上午 9:05 开始,间隔 5 分钟。但是,有一个额外的记录(第 51 个样本)仅在训练集中可用,它比 50 个样本记录中最后一个记录的样本晚了 2 小时,而不是 5 分钟。第 51 个样本需要在前 50 个样本也给出的测试集中进行预测。
我使用pybrain
循环神经网络解决这个问题,将序列组合在一起,每个样本x_i
的标签(或通常称为目标y
)是下一个时间步的样本@ 987654324@ - 时间序列预测中的典型公式。
示例
A sequence for one day is something like:
Signal id Time value
1 - 9:05 - 23
2 - 9:10 - 31
3 - 9:15 - 24
... - ... - ...
50 - 13:15 - 15
Below is the 2 hour later label 'target' given for the training set
and is required to be predicted for the testing set
51 - 15:15 - 11
问题
现在我的循环神经网络 (RNN) 已经对这 10 个序列进行了训练,如果它遇到另一个序列,我将如何使用 RNN
来预测序列中最后一个样本之后的库存值 2 hours
?
请注意,对于每个训练序列,我也有“比上一个样本股票值晚 2 小时”,但我不确定如何将其纳入训练 RNN
,因为它期望样本之间的时间间隔相同。谢谢!
【问题讨论】:
我不太明白你的解释。您的所有训练集值是否都包含 50 个输入信号,并且所有样本之间的时间增量相同?您的问题实际上是:How do you predict the next sequence output
吗?
是的,前 50 个输入信号具有相同的时间增量 - 5 分钟差异,但是,对于每个序列实际上有 51 个输入信号,最后一个信号具有更大的增量 - 2 小时差异 -比其他的,我需要在给定前 50 个信号的情况下预测最后一个信号。所以问题是如何使用与其他信号不同 delta 的信号来训练 RNN
,以及如何在给定前 50 个信号的情况下预测该信号。
@jorgenkg,我已经更新了问题以澄清,抱歉造成混淆
【参考方案1】:
希望对你有帮助
循环网络结构
一些提示
选择您的循环网络
更成熟的长短时记忆 (LSTM) 神经网络非常适合此类任务。 LSTM 能够检测股票价值“图表”中常见的“形状”和“变化”,并且有很多研究试图证明这种形状确实存在于现实生活中! See this link for an example.
准确度
如果您希望网络达到更高的准确度,我建议您还向网络提供上一年(在完全相同的日期)的股票值,这样输入的数量就会从 50 翻倍到 100。虽然网络可能在您的数据集上得到了很好的优化,它永远无法预测未来不可预测的行为;)
【讨论】:
非常感谢,精彩的描述!不过有一个小问题,因为只有大约前半部分样本和最后一个样本(第 50 个)有一个two hour later
目标样本,是否可以将它们组合在一起在 LSTM
中的序列中?因为前半部分样本相隔 5 分钟,但最后一个样本(第 50 个样本)与前半部分相距甚远,你怎么看?第 51 个样本是第 50 个样本的2 hour later
值。
理论上应该不成问题。只需确保您有足够个数据样本!它可能应该包含至少 20.000 个条目(分为 2/3 training set
和 1/3 validation set
),以确保网络更加准确和健壮!最美好的祝愿!
我也很好奇 LSTM 的替代方法是否包括滞后变量?
您自己创建了图像吗?如果没有,能否请您提供一个来源?这是视觉上最好的图像之一,避免了不必要的复杂性。
是的,我用 Omnigraffle 制作的,但不幸的是该文件被删除了以上是关于在时间序列数据集上使用递归神经网络进行预测的主要内容,如果未能解决你的问题,请参考以下文章
使用 Keras、Tensorflow 进行具有多个时间序列维度的 RNN 时间序列预测