LSTM 模型用于预测当天的每分钟季节性数据

数据挖掘 深度学习 预测建模 时间序列 lstm
2022-03-08 13:42:12

我正在制作一个模型来预测我们数据中心的网络流量。让我先描述一下我的数据集。这个时候,我们有90天的模型,每一天,我们记录每分钟的网络流量。而且这个数据也有季节性模式:网络流量在晚上波动并保持不变,早上减少,下午增加(我可以观察到,这种模式发生在我数据集中的所有数据上)

我现在想要的是一个模型,用于预测接下来几分钟(例如 25 分钟)的网络流量,假设数据是之前所有分钟的数据。新的预测值将用于下一次预测。例如,将第i分钟的值添加到具有特定长度的数据窗口中,以预测第i+1分钟的值。

这个时候,我已经尝试过LSTM-RNN,我使用的特征是当天的分钟和那一分钟的网络流量(在输入到LSTM网络之前进行归一化)。但是,我的问题是:我的模型可能会捕捉到错误的数据模式:当下午网络流量应该增加时,我的模型预测它会减少。我尝试过不同结构的 LSTM 网络(增加 LSTM 层,在 LSTM 层之后更改全连接层中的节点数......);还有窗口的长度,但这个问题仍然存在。

所以我想问一下LSTM模型在预测像我的数据一样具有季节性趋势的数据时是否有任何问题?如果没有,有人可以为我的数据推荐一个 LSTM 模型或任何其他合适的模型吗?

先感谢您 :-)

1个回答

当以分钟水平表示时,该模式将在近 1440 分钟后重现。所以你的 LSTM 需要在这里学习一个真正长期的依赖。而 LSTM 在这种长期依赖方面并不出色。

在这里我会有相反的意见。丢弃神经网络,拟合一个好的线性模型以获得基准。如果线性模型(下面列出的示例)目前超过了您的 LSTM 错误率,请投资于构建更好的(广义)线性回归模型。此外,从更粗略的输出定义开始(预测接下来 15 分钟/1 小时的总数)。

  1. 为您的数据创建手动功能。从昨天同一时间的流量开始,过去 7 天同一时间的流量,上周同一工作日同一时间的流量。

  2. 通过定义比小时更好的聚合窗口来添加更多高级功能。比如下午 6 点到 9 点,午夜 12 点到早上 6 点。

  3. 添加与最近数据相关的功能(今天的累积流量与昨天同一时间的累积流量的比率)。

  4. 在此数据上建立合适的线性模型,对错误率进行基准测试。如果流量是以点击次数来衡量的,请使用泊松回归而不是简单的线性回归。

当手动滚动特征极难思考和实现时,最好使用像 LSTM 这样的复杂神经网络模型。对于许多时间序列应用程序,自己生成特征是直观的、易于实现的(大多数库,如 Python pandas 具有出色的日期时间功能)和良好的第一步。这比教 LSTM 区分上午和下午要好得多。

François Chollet 关于深度学习的书有一章是关于类似应用的。他解决了基于过去数据在特定时间窗口内预测天气的问题。他表明,许多复杂的神经网络架构很难超越简单的基线,比如过去同一时间段的平均。