使用包含季节性和趋势的时间序列训练 LSTM 神经网络

数据挖掘 预测建模 时间序列 rnn lstm 预言
2022-03-01 04:52:02

我正在做一个项目来预测来自站点的 DNS 查询数量: DNS 查询统计我使用的数据是每分钟的数据,也就是每分钟的DNS查询次数。

如果您查看来自韩国或任何其他国家/地区的 DNS 查询数量,它具有季节性和趋势特征:逐日增加然后减少。

对我的要求是:给定每分钟的 DNS 查询次数,然后给定前 20 分钟的数据,预测接下来 20 分钟的 DNS 查询次数。

我的问题是:我训练的 LSTM 无法检测到这些因素,它总是预测我的数据每次都会减少。

我已经使用了一些手动定义的功能,例如一天中的分钟,一天中的某个时段,例如早上/下午......但它仍然存在同样的问题。

所以我想问是否有任何可能的改进让我的 LSTM 了解它什么时候应该减少,什么时候应该随着季节性数据增加?

2个回答

我不知道您的预测是否可以实现季节性,这仅仅是因为您使用的时间框架。如果您看到每天的上下运动,但只提供 20 分钟的预测时间,那么模型如何知道它是否处于转折点?您可能需要包含包含该信息的其他功能 - 甚至时间戳就足够了。

奇怪的是,模型总是预测向下运动——假设你的训练数据中有两个方向,我会期望它简单地继续当前路径(向上或向下)......?


也许您可以研究一些常用时间序列分析方法中使用的想法,例如分离季节性、趋势和噪声并将它们分别提供给模型。搜索术语 SARIMA、ARIMA、季节性和周期。(S)ARIMA 代表“季节性自回归综合移动平均”,表示使用先前值(autoregressivej,当前值与先前值的差异(集成)和过去时间步长的移动平均值来查看数据的常用方法(移动平均线)。

生成的术语当然会捕捉到值改变方向的阶段,因此能够很好地模拟季节性。

在我看来,它是具有 24 小时季节性的 Holt-Winters 模型的完美候选者。趋势在您使用的时间尺度上不应该非常敏感。

另一种方法是通过平均大量的 24 小时周期来计算季节性。然后研究去季节化的数据。

一旦了解了正在发生的事情,你就有机会将它教给你的 LSTM。