【问题标题】:Can LSTMs handle incredibly dense time-series data?LSTM 可以处理非常密集的时间序列数据吗?
【发布时间】:2020-07-30 05:59:59
【问题描述】:

我有 50 个时间序列,每个都有至少 500 个数据点(有些系列有多达 2000 多个数据点)。所有时间序列的值都从 1.089 变为 0.886,因此您可以看到每个数据集的分辨率都接近 10e-4,即数据类似于:
对于所有 50 个时间序列,1.079299、1.078809、1.078479、1.078389、1.078362 等等以从 1.089 到 0.886 的递减方式。

因此,我的问题是:

  1. LSTM 可以处理这种密集数据吗?
  2. 为了避免过度拟合,建议的epochs、每批次的时间步长、批次、隐藏层和每层神经元的数量是多少

我已经为此苦苦挣扎了一个多星期,我找不到其他有关此特定案例的消息来源,因此它也可以帮助其他人。

【问题讨论】:

    标签: python keras deep-learning time-series lstm


    【解决方案1】:

    一个好问题,我可以理解为什么你没有找到很多解释,因为有很多教程涵盖了一些基本概念和方面,不一定是自定义问题。

    1. 您有 50 个时间序列。但是,每个时间序列的数据频率并不相同。如果您想正确构建数据集,则必须进行插值以使每个时间序列的样本数量相同。
    2. LSTM 可以处理如此密集的数据。它既可以是分类问题,也可以是回归问题,神经网络可以适应这种情况。
    3. 为了避免过拟合(LSTM 很容易出现这种情况),首先要考虑的主要方面是隐藏层和每层的单元数。通常人们倾向于默认使用 256-512,因为在自然语言处理中,您可以处理大量数据集,它们是合适的。根据我的经验,对于更简单的回归/分类问题,您不需要这么大的数字,它只会导致在较小的问题中过度拟合。

    因此,考虑到(1)和(2),从一个有 32 个单元的 LSTM/GRU 开始,然后是输出层。如果发现效果不佳,再添加一层(前 32 秒 64 层),然后再添加输出层。

    诚然,每批次的时间步长至关重要。这无法在此处确定,您必须手动迭代它的值并查看产生最佳结果的方法。我假设您通过滑动窗口方式创建数据集;考虑这个(窗口大小)也是一个超参数,在到达批次和时期之前要改变。

    【讨论】:

    • 非常感谢@Timbus!我正在寻找这种解释!我没有考虑您解决方案的第一点,因为我认为 LSTM 可能会适应它。我将牢记这些要点并继续解决问题。再次感谢!
    • 不行,有些参数需要修正。即使在序列到序列中,假设您最初具有可变长度输入,其动机是矩阵乘法需要以特定大小执行,即您不能将维度为 [5,1] 的向量与矩阵相乘尺寸为 [10,10],您需要通过填充将初始向量带到 [10,1]。
    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2020-11-06
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多