使用时间序列的每小时预测

机器算法验证 时间序列 预测 多重季节性
2022-03-21 14:57:37

我想建立一个基于时间序列的模型。我有一个数据集,三个月内每 30 分钟记录一次。

使用以下类型的模型对这些数据进行建模有什么区别?

  • 提取小时/工作日/月并将它们用作机器学习算法中的特征
  • 使用 ARMA 模型

我的数据包含天气信息。我正在研究的场景之一是预测“自行车的使用”,它与天气/温度/风/时间(天/小时,我认为那个月没有意义)等信息有关......在这种情况下,我应该使用时间序列 ARMA 模型还是只提取小时/周/日/月并将它们用作特征来应用树/随机森林等算法。

任何人都可以解释其中的区别,或者指着纸/书来检查吗?

注意:我是自学者,没有参加任何数据科学课程。如果这很明显,请道歉。

1个回答

好吧,不同之处在于……它们是不同的方法。(“谁能解释一下苹果和橙子的区别?”)

  • ARIMA 模型在任何介绍时间序列的书中都有解释。(我永远不会厌倦推荐这本免费的开源在线预测教科书。)如果您想包含天气信息,您需要带有解释性或外部信息的 ARIMA 模型,或 ARIMAX 模型。这些也是标准的。

  • 任何数据科学教科书甚至维基百科页面都解释了树/CART/随机森林。当然,这些将“按原样”对解释变量进行建模。在这种情况下,您使用天、小时和月作为特征的想法确实有意义。但是,简单地将“上午 9 点到 10 点”、“上午 10 点到 11 点”等的独立假人输入到您的模型中可能会或可能不会考虑到您在上午 9 点到 10 点和上午 10 点到 11 点时间段的观察结果会更多的事实比上午 9 点到 10 点和下午 1 点到 2 点的高度相关。

一些随机的想法:

  • ARIMA(X) 将难以应对所涉及的多个季节性因素(与去年同期相比,一周内人们通勤周一至周五但不是周六/周日,白天有更多人骑自行车) . 原则上,您可以在 ML 模型中使用假人对这些季节性进行建模。或者,在指数平滑/状态空间模型的背景下,有几种方法可以处理多个季节性。

  • 天气当然与一年中的时间和一天中的时间高度相关:夏季和白天比冬季和夜间更热。如果您已经按照上面的方式对季节性进行了建模,您可能会发现添加天气信息并不能大大改善预测的效果,超出了季节性的效果。

  • 如果您想使用天气进行预测,请记住您也需要天气预报!不要根据它们如何与实际天气一起工作来评估您的样本外预测——当您进行“生产”预测时,您不会知道明天的实际天气。天气预报中的不确定性为您的自行车预测增加了另一个不确定性来源。尤其是超过 15 天的天气预报不太可靠,因此它们对于预测那么远的自行车骑行不会很有帮助。(顺便说一句,获取历史天气数据比获取历史天气预报更容易也更便宜

  • 您可能需要查看电价或负荷预测文献 - 该用例处理您的许多挑战(高频数据、多个季节性、天气影响)。我还没有阅读这篇评论,但它可能会有所帮助。