用于预测时间序列数据的 ML 模型

数据挖掘 时间序列 随机森林 有马
2022-02-11 20:49:36

这个问题有三个子部分,回答每个子部分可能不需要大量的文字。我希望没关系。

我正在尝试使用 ML 来理解时间序列预测。我有目标变量,并假设另外两个变量(例如,如果是商品的需求,可以是商品的类型或商品的价格等)。另外,假设我使用的是随机森林模型,因为我读过它通常开箱即用。ytxt,ztytxt

i) 据我了解,如果我将作为预测变量,模型可能只是学习预测,例如与滞后存在自相关。鉴于此,将作为特征包含在内是不是一个坏主意?yt1yt=yt11yt1

ii) 每个预测变量可能具有一个或其他典型的时间序列特征,如非平稳性、自相关或季节性。如果任何预测变量具有任何特殊特征,我是否必须遵循或转换(到预测变量)的一些特殊方法?xt,zt

iii) 通常,进行此类预测的最佳实践是什么?我目前的想法是:使用作为预测变量而不进行转换。使用带有网格搜索参数的 ARIMA 来拟合训练数据并进行验证。用它作为基线。最后,使用随机森林预测差分时间序列 ,使用作为预测变量并与基线进行比较。我在这里遗漏了什么还是应该考虑一些额外的东西?xt,ztytyt1xt1,zt1

提前致谢!

1个回答

i) 时间序列学习根据许多过去的序列预测值。与其他 ML 模型一样,它们使用训练和验证数据集。因此,y(t) 是您的客观数据。您可以预测 t+1 或未来的几个步骤,但一般来说,您预测的越远,预测越差。

ii) 这取决于您使用的型号。LSTM 旨在预测许多不同的动态行为。另一方面,ARIMA 是一个纯统计预测模型,在时间范围上比 LSTM 更有限,不能总是检测季节性(使用 SARIMA 代替)。RNN 非常适合小型数据集。许多预测模型对噪声很敏感,减少它可以改善结果。我建议研究他们的出版物,它们非常有趣。例如,LSTM 使用大约 10 种不同的学习算法。 https://www.researchgate.net/publication/13853244_Long_Short-term_Memory

iii)首先使用易于实现的模型,例如随机森林。然后使用 SARIMA、GRU 或 LSTM 等组合模型增加复杂性。根据您的数据,某些模型的性能将优于其他模型,因此最好建立一个测试平台来监控多个预测模型。

这是一个很好的笔记本,它解释了使用 RNN、LSTM 和 GRU 的时间序列: https ://github.com/ageron/handson-ml2/blob/master/15_processing_sequences_using_rnns_and_cnns.ipynb