如何使用深度学习开发可解释的时间序列预测

原文标题How to Develop Interpretable Time Series Forecasts with Deep Learning

如何使用深度学习开发可解释的时间序列预测

NeuralProphet 的简明透彻的总结。

时间序列预测很烂。这很麻烦,需要主题和技术专长。也就是说,直到现在。

2020 年,斯坦福大学和 Facebook 的研究人员对 Prophet 算法进行了重组,以包含深度学习组件。主要卖点是准确度提高了 55-92%。该模型的深度学习部分建立在 PyTorch 之上,因此它们很容易扩展。运行时间平均增加了约 4 倍,但时间序列预测很少是实时的,因此运行时间不是主要问题。[0]

如果您需要可解释但功能强大的时间序列预测,NeuralProphet 可能是您的最佳选择。这是一个实现示例。[0]

让我们潜入。

Technical TLDR

NeuralProphet 是原始 Prophet 库的深度学习扩展。模型的 GAM 结构保持不变,我们只包含几个深度学习术语。这些术语用于滞后协变量、未来(预测)协变量和自回归。下面描述了三种复杂度增加的神经网络配置。

但是,究竟发生了什么?

好吧,让我们慢一点。我们将从一开始,假设你对 Facebook Prophet 一无所知。

1 — 什么是 Facebook Prophet?

最初的 Facebook Prophet 算法(2017)是非常轻量级但有效的时间序列预测模型。它易于使用和解释,描述很少与时间序列建模相关联。[0]

根据原始论文,该模型之所以成功,是因为研究人员将时间序列预测重新定义为曲线拟合问题,而不是自回归问题。许多先前的模型,例如 ARIMA,滞后和拟合数据,而不是试图找到我们趋势的函数形式。[0]

该模型具有三个主要组成部分,如图 2 所示。T(t) 对应于我们的时间序列在去除季节性后的趋势。 S(t) 对应于我们的季节性,无论是每周、每月还是每年。最后,E(t) 对应于预先指定的事件和假期。

这些组件中的每一个都有一个拟合过程,一旦拟合,它们通常会结合起来产生可靠的预测。

为了更直观地展示这些组件,这里是 Prophet 文档中的分解图。

现在我们对 NeuralProphet 的前身有了一些基础,让我们继续。

2 — NeuralProphet 是如何工作的?

NeuralProphet 在我们原来的框架中添加了三个组件,如图 4 的第二行所示。

前三个术语在两个模型之间基本保持不变。最后三个是深度学习术语,将新模型与旧模型区分开来。让我们依次看一下。

2.1 — Trend T(t)

趋势与之前的 Prophet 模型没有变化。简而言之,我们希望使用指数或线性增长函数来模拟趋势。下面我们来看看指数增长(图 5):

使用逻辑增长是一种非常传统且广为接受的解决方案,但是原始 Prophet 模型的创新之处在于它允许函数的参数发生变化。这些变化点由模型动态确定,并为其他静态增长率和偏移参数提供了更大的自由度。

2.2 — Seasonality S(t)

季节性被定义为以特定的定期间隔发生的变化。众所周知,它很难解释,因为它可以采用多种形式。

该模型的最初开发人员提出了另一个好主意——他们没有尝试使用自回归(即滞后数据)对季节性进行建模,而是尝试对季节性曲线进行建模。这就是傅立叶级数的用武之地。

傅立叶级数只是一堆加在一起的正弦曲线,可用于拟合任何曲线。一旦我们有了数据的每日、每周、每月等季节性的函数形式,我们就可以简单地将这些术语添加到我们的模型中并准确预测未来的季节性。[0]

2.3 — Events E(t)

对于初始 Prophet 模型中的最后一项,用于处理事件。

季节性和事件的处理方式几乎相同 – 使用傅立叶级数。然而,我们希望傅立叶变换不是平滑曲线,而是在给定特定假期时产生非常尖的曲线。而且,由于底层函数是正弦函数,它们很容易扩展到未来。

现在让我们继续讨论新模型。

2.4 – 回归量 F(t), L(t)

Prophet 和 NeuralProphet 模型的强大方面之一是它们允许协变量。大多数时间序列预测模型都是单变量的,尽管它们有时会提供多变量版本——ARIMA 与 MARIMA。

在处理带有时间序列预测的协变量时,我们需要确保这些协变量会提前 n 个时间段出现,否则我们的模型将无法预测。我们可以通过将当前协变量滞后 n 个时间段来做到这一点,这由 L(t) 项建模,或者对这些协变量进行预测,由 F(t) 项建模。

一旦我们有了各自的协变量,我们就会对其进行深度学习(第 3 节)。

2.5——自回归 A(t)

最后,自回归是回顾先前值并将其用作未来值的预测器的概念。最初的先知模型之所以如此有效,是因为它偏离了这一理念,但是为了利用深度学习,我们必须回归。

自回归项使用滞后值来预测未来值。在实践中,我们很少使用协变量,因此这是 Neural Prophet 的大部分功能的来源。

有了这个结构,让我们放大 NeuralProphet 使用的深度学习模型。

3 – 深度学习模型

NeuralProphet 构建在 PyTorch 和 AR-Net 之上,因此其模块易于定制和扩展。

有几种配置。第一个是线性 AR,它只是一个没有偏差或激活函数的单层神经网络 (NN)。它非常轻量级,可以将特定的滞后回归到特定的预测步骤,这使得模型的解释变得非常容易。

Deep AR 是一个完全连接的 NN,具有指定数量的隐藏层和 ReLU 激活函数。随着线性 AR 和深度 AR 之间复杂性的增加,训练时间更长,并且您失去了可解释性。但是,您通常会看到预测准确性有所提高。还需要注意的是,您可以使用每个输入位置的第一层的绝对权重之和来近似线性 AR 中权重的信息。它并不完美,但总比没有好。

稀疏 AR 是深度 AR 的扩展。对于自回归部分,通常最好有一个高阶的 AR(在前面的时间步有更多的值),因为我们可以添加一个正则化项。通过在拟合过程中添加更多数据并自动删除其重要性,我们更有可能找到信号。

上述三种方法中的任何一种都可以使用协变量和自回归值来实现。

Summary

有了它,NeuralProphet 这就是荣耀!

为了深入了解这些概念,我们将快速总结一下。

NeuralProphet 是 Facebook Prophet 的深度学习扩展。它通过在时间序列中包含协变量和数据的深度学习术语来添加到先前的模型。

初始模型(Prophet)利用曲线拟合,这是一种新的时间序列预测方法。它提供了无与伦比的开箱即用性能和可解释性,但是我们需要更多的建模能力。 NeuralProphet 为 Prophet 添加了深度学习术语,由三种神经网络配置控制。 NeuralProphet 显着提高了模型拟合能力,但会降低性能并降低可解释性。

如果 Facebook Prophet 没有解决问题,请尝试 NeuralProphet。

谢谢阅读!我将再写 25 篇将学术研究带入 DS 行业的文章。查看我的评论以获取这篇文章主要来源的链接和一些有用的资源。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年4月28日
下一篇 2022年4月28日

相关推荐