使用LSTM RNN改组训练数据

hel*_*l89 24 machine-learning lstm keras recurrent-neural-network

由于LSTM RNN使用先前的事件来预测当前序列,为什么我们将训练数据混洗?我们不会失去训练数据的时间顺序吗?在对改组后的训练数据进行训练后,如何进行预测仍然有效?

Bri*_*son 32

通常,当您对训练数据(一组序列)进行随机排列时,您会将序列送入RNN的顺序改变,您不会在单个序列中随机排序.当您的网络处于无状态时,这很好:

无国籍案件:

网络的内存仅在序列持续时间内持续存在.在序列A之前对序列B进行训练并不重要,因为网络的内存状态不会在序列之间持续存在.

另一方面:

有状态案例:

网络的内存在序列中持续存在.在这里,您不能盲目地改变数据并期望获得最佳结果.序列A应该在序列B之前被馈送到网络,因为A在B之前,我们希望网络用序列B来记录序列B的内存.

  • 我想我现在明白了你的意思.您想通过重叠序列从100个价格创建超过25个序列(例如,第一个序列是第1-4天,第二个序列是第2-5天,等等)?听起来没问题,但是不要让训练数据中的子序列(例如,第2-4天)显示为测试数据中的子序列.你最初的预感是正确的:你会这样做会污染测试数据. (3认同)
  • 我认为这取决于您的数据。尝试查看有关 Keras LSTM 和状态性的讨论 http://philipperemy.github.io/keras-stateful-lstm/。作者谈到什么时候洗牌很重要。Lmk 如果它没有意义。 (2认同)
  • "有状态"是一种选择.如果您认为最后N个观察结果都是您需要预测未来股票价格的,那么您可以在没有状态和序列长度= N的情况下进行训练(这意味着您可以自由地对您的序列进行随机排列).否则,您应该考虑使用有状态方法来允许隐藏状态在批处理中保持不变.我的选择取决于观察的频率.如果我每天都有观察,我可能会认为我可以用长度为N = 50天的序列对未来股票价格进行建模. (2认同)