论文名称:A hybrid method of exponential smoothing and recurrent neural networks for time series forecasting 论文下载:https://www.sciencedirect.com/science/article/pii/S0169207019301153 论文年份:2020 273(2022/04/30) 论文代码:https://github.com/M4Competition/M4-methods
论文总结
论文组织
【时间序列预测两种建模方法】:
- 交叉学习:使用多个序列训练单个模型。
- 统计时间序列算法:为每个序列训练一个单独的模型。
【本文提出的方法概述】
本文提出了将指数平滑的模型和混合方法LSTM结合起来,预处理参数来自指数平滑族中某些模型的更新公式。ES 方程使这种方法。在这方面,,这意味着使用局部和全局组件提取和组合序列或数据集级别的信息,以提高预测准确性。该方法具有以下两个特点:
- 它是从某种意义上说,统计建模(ES 模型)与 ML 算法(LSTM 同时结合网络)。
- 它本质上是的,从某种意义上说,全局(适用于所有序列的大子集)和局部(分别适用于每个序列)参数被用来实现交叉学习,同时也强调被预测时间序列的特殊性。
这种混合预测方法有三个主要要素:
-
i)去季节化和自适应标准化(deseasonalization and adaptive normalization)
-
ii)预测的生成(generation of forecasts)
-
iii)集成(ensembling)
【本文提出的方法细节?
由于数据没有给出每个时间序列,因此使用指数平滑模型进行去季节性。此外,神经网络对输入数据的小变化不敏感,在两个差异较大的范围内,归一化后几乎相同,导致损失趋势。因此,归一化应该是自适应和局部的。事实上,实现也很简单,即每次使用窗口使用窗口水平的最后一个值时,窗口中的每个值都可以除以它。至于去季节性,假设乘法是季节性的,将时间序列除以指数平滑学习的季节性分量。
本文使用的 LSTM 一般有三种LSTM,膨胀LSTM和注意力LSTM。
同时采用了不同的模型集成策略,称为专家组合。。该算法在 3.2.2 介绍。另外,还是用不同的。epoch集成获得的模型,如使用最后五个模型epoch集成训练模型。
Abstract
This paper presents the winning submission of the M4 forecasting competition. The submission utilizes a that enables a standard exponential smoothing model to be mixed with advanced long short term memory networks into a common framework. The result is a hybrid and hierarchical forecasting method.
本文介绍了 M4 预测比赛的获奖作品。提交使用,将标准指数平滑模型与先进的长期短期记忆网络混合到一个通用框架中。结果是一种。
1. Introduction
近几十年来,神经网络 (NN) 和其他机器学习 (ML) 算法在图像和语音识别、自然语言处理等各个领域都取得了显著的成功 (NLP)、自动驾驶汽车和游戏 (Makridakis, 2017) 等等。成功的关键在于,在给定大型代表性数据集时,。因此,,这允许数据自己说话。
然而,。虽然 ML 能源预测算法 (Dimoulkas, Mazidi, & Herre, 2019) 一些应用程序取得了成功 (Weron, 2014),在这些应用中,预测(extrapolated)序列通常很多、很长并且伴随着解释变量,但 (Makridakis、Spiliotis 和 Assimakopoulos,2018b)。尚未为时间序列预测创造流行 ML 用于预测算法和预处理时间序列数据。
ML 算法的优点实际上是它们成功使用的要求,即。这与标准的不同,后者。但是,。 NNs 这方面特别敏感,稍后会扩大。
预处理有很多好的规则,但仍然是实验密集型艺术。这种方法是 M4 成功的最重要因素之一是,这是训练过程的固有部分。重要的是,。
实际上,。所以这里介绍的是一种,它在通用框架中。 ES 方程使这种方法。在这方面,,这意味着。
本文的其余部分安排如下。 2 第一节介绍了这种方法,并在一般意义上描述了它 3 实现细节更多。 4 最后,节日总结了最近 NN 在此背景下,系统和概率编程语言提供的一些通用建模可能性可以追溯到本文所描述的模型的发展。
2. Methodology
2.1. Intuition and overview of the hybrid method
。这种混合预测方法有三个主要要素:
-
i)去季节化和自适应标准化(deseasonalization and adaptive normalization)
-
ii)预测的生成(generation of forecasts)
-
iii)集成(ensembling)
使用第一个元素实现的。(例如,季度序列设置为 4)和(在单个季节性系统中,设置为 2),。了解这些参数和序列值。。此外,。
第二个元素是一个,。
最后一个元素是。这包括。该过程进一步(Petropoulos, Hyndman, & Bergmeir, 2018),同时还(Chan & Pauwels, 2018)。
基于以上所述,可以说该方法具有以下两个特殊特征:
- 它是的,从某种意义上说,统计建模(ES 模型)与 ML 算法(LSTM 网络)同时结合。
- 它本质上是的,从某种意义上说,,同时也强调被预测时间序列的特殊性。
2.2. Method description
2.2.1. Deseasonalization and normalization
M4 时间序列,即使在同一频率(例如每月)子集中,也来自许多不同的来源,并表现出季节性模式。此外,。在这种情况下,。一个标准的。该解决方案足够但并不理想,因为它将预处理与预测完全分开,并且,在该序列中它对预测最重要。。经典统计模型,例如来自。
在包括 LSTM 在内的大多数 NN 变体中,。因此,NN 的行为类似于模拟设备,即使在数字计算机上实现也是如此:。。最后,。因此,虽然。
2.2.2. Exponential smoothing formulas
请记住,M4 序列都具有正值,因此选择了 (Gardner, 2006) 和 Holt and Winters (Hyndman, Koehler, Ord, & Snyder, 2008) 模型。然而,这些通过消除线性趋势得到了简化:。此外,(Taylor,2003)。每种情况的更新公式如下:
参数说明:
- y t y_t yt :序列在点 t t t 处的值
- l t l_t lt :水平分量
- s t s_t st :季节性分量
- u t u_t ut :第二季节性分量
- K K K :每个季节期间的观察次数,即对于季度,其值为 4,对于每月,其值为 12,对于每周,其值为 52。
- 。
- s t s_t st 和 u t u_t ut 始终为正,而平滑系数 α α α、 β β β 和 γ γ γ 取值介于 0 和 1 之间。通过将 e x p ( ) exp() exp() 应用于初始季节性分量的基础参数,并将 s i g m o i d ( ) sigmoid() sigmoid() 应用于平滑系数的基础参数,可以轻松实现这些限制。
2.2.3. On-the-fly preprocessing
。然后,这些。此步骤是该方法的关键部分,在本节中进行了描述。
。 应用了恒定大小、滚动输入和输出窗口的标准方法,如图 1 所示,对于每月序列的情况。(例如,每周序列为 13),而。但是,确切的大小是在进行实验(回测)之后定义的。请注意,。
预处理相当简单:。这导致输入和输出值接近 1,而与序列的原始幅度及其历史无关。最后,应用了一个压缩函数 log()。。
此外,。。
在对 NN 进行预处理时,,但由于多种原因,这里没有采用这种方法。最重要的是,。另一个原因是,。直到比赛结束后,我才注意到一个(Hyndman, Wang, & Laptev, 2015; Kang, Hyndman, & Smith-Miles, 2017)。
2.2.4. Forecast by NNs
如上所述,NNs 在去季节化、自适应归一化和压缩值上运行。他们的输出需要通过以下方式“展开”:
对于非季节性模型: 其中 x 是预处理的输入(向量),NN(x) 是 NN 输出(向量),lt 是时间 t(最后一个已知数据点)的水平值,h 是预测范围。。 请注意,最终预测实际上是许多此类预测的集合,该过程将在本文后面解释。
2.2.5. Architectures of neural networks
为了更好地理解实现,将预测系统的参数分为以下三组:
- :这些参数反映了单个序列的行为;在我们浏览该序列时,它们不会改变。例如,ES 模型的以及是局部不变(恒定)参数。
- :这些参数随着时间的推移而变化。例如,水平和季节成分,以及循环的 NN 状态,都是局部状态。
- :这些参数反映了在大序列集合中学习到的模式,并且是常数;它们不会在我们浏览序列内容时发生变化。例如,用于 NN 系统的权重是全局常数。
。另一方面,。这里描述的混合方法使用所有三种类型的参数,部分是全局的,部分是特定于时间序列的。通过使用 系统,这种类型的建模成为可能,例如 DyNet (Neubig, Dyer, Goldberg, Matthews, Ammar, Anastasopoulos, et al., 2017), PyTorch (Paszke, Gross, Chintala, Chanan , Yang, DeVito, et al., 2017) 和 TensorFlow 在“急切模式”(Abadi, Agarwal, Barham, Brevdo, Chen, Citro, et al., 2015)。。
(Chang, Zhang, Han, Yu, Guo, Tan, et al., 2017),有时后跟一个非线性层,并且总是后跟一个线性“适配器 (adapter)”层,其目标是。LSTM堆栈由许多块 (这里是1–2) 组成。在两个 (理论上更多) 块的情况下,使用 Resnet 风格的快捷方式将一个块的输出添加到下一个块的输出。每个块都是一到四层的序列,。
使用来自先前(但不一定是最新)步骤的隐藏状态作为其输入的一部分。。。按照膨胀 LSTM 的惯例 (Chang et al., 2017),它们被部署在。类似的标准非膨胀 LSTM 块的表现稍差。如果将循环神经网络替换为非循环神经网络,性能会出现更大的下降,这表明。
的一般思想是,。这允许系统动态地 “关注” 特定的单个状态或一组过去的状态。我的实现是膨胀 LSTM 的扩展,因此最大后视范围等于扩张。在每周序列的情况下,网络由具有两层的单个块组成,。(当它们变得可用时,因此在第 53 点或更晚的时候逐步通过一序列时)。权重是使用嵌入到 LSTM 中的单独的标准两层 NN 计算的;它的输入是 LSTM 输入和最后一个隐藏状态的串联,它的权重通过对所有其他参数进行操作的相同梯度下降机制进行调整。 图 3 显示了三个配置示例:
- a)。最后一个元素是“适配器层”,它只是一个标准线性层(传递函数等于恒等式),它将来自第四层(膨胀 = 8 的层)的隐藏输出(通常为 30-40 长)调整为预期的输出大小(此处为 8)。
- b)。请注意,快捷箭头正确指向残差 LSTM 单元的内部;这是一个。
- c)。注意机制 (Qin et al., 2017) 显着减慢了计算速度,但有时表现最好。
后来,我提供了一个表格,列出了所有案例的架构和超参数,而不仅仅是这三个。请记住,虽然图表仅显示模型的全局部分,但每个序列的部分同样重要。
3. Implementation details
本节提供了关于混合方法的更多实现细节。这包括关于损失函数、模型的超参数和集合过程的信息。
3.1. Loss function
3.1.1. Point forecasts
M4竞赛中针对 PFs 案例使用的误差测量是 和 的组合 (Makridakis、Spiliotis和Assimakopoulos,2018a)。这两个指标在本质上非常相似,因为它们都是。回想一下,。然而,在回溯测试期间,很明显模型倾向于具有正偏差,这可能是由于对神经网络的时间序列导出输入和输出应用了压缩函数 log() 的结果。。为了应对这种情况,。pinball loss 定义如下: 。它本身就是一个重要的损失函数;最小化它会产生 (Takeuchi,Le,Sears,&Smola,2006)。
3.1.2. Prediction intervals
弹球损失函数也可以用于生成 PI。要求的覆盖率为95%,因此可以尝试预测 2.5% 和 97.5% 的间隔。然而,PI 的竞争度量并不是基于上下弹球的单独损失;相反,它是一个称为 的单一公式 (Makridakis et al., 2018a)。。应当指出的是,尽管该方法在所有提交的方法中提供了最精确的指标值,但在指标值的情况下仍然可以观察到上述正偏差,。
在这一点上,我想提请读者注意基于神经网络的系统的伟大实用特征:。对于此应用程序,损失函数与 M4 竞赛中使用的精度指标保持一致。
3.1.3. Level wiggliness penalty
直观上,。人们会认为这是次要的,更多的是审美层面的要求。然而,事实证明,。似乎。平稳的水平也意味着季节性成分适当地吸收了季节性。在函数数据分析中,(Ramsay & Silverman,2002)。然而,这种惩罚可能过于严格,在应用于偶尔有较大偏移的时间序列时不够稳健。在这方面,使用了这一惩罚的修改版本,计算如下: 该惩罚,乘以50-100范围内的常数参数,称为。水平摆动罚分显著影响了该方法的性能,可以想象,如果没有它,该提交物就不会赢得M4竞赛。
3.2. Ensembling and data subsetting
。
3.2.1. Independent runs
一次运行包括模型的完整训练以及为子集中的所有序列生成预测。然而,由于参数初始化是随机的,所以对给定序列的每次运行都会产生稍微不同的预测。由不同运行构建的集成模型可以减轻随机性的影响,降低不确定性。。
3.2.2. Ensemble of specialists or simple ensemble
当它在计算上可行时,除了月度和季度序列之外,结果是所有的模型都是这样的,。这种方法被称为**“专家集合”**,最初是由 Smyl (2017) 提出的,现总结如下。
。但是,没有直接执行分组任务的方法,因为来自不同来源的序列可能看起来和行为类似。此外,。在这方面,。该算法总结如下:
- 创建一个模型池 (如七个模型),并随机分配一部分 (如时间序列的一半) 给每个模型。
- 对于每个模型:
- (a) 在分配的子集上执行单个训练。
- (b) 记录整个训练集的表现 (样本内,一个序列训练部分所有点的平均值)。
- 。
- 。
因此,。这里的主要假设是连续性:。用于各个模型的架构和输入保持不变。不同时期之间的不同并被积极操纵的是每个模型的训练数据集的组成。图 4 显示了十个序列在总共七个模型和两个顶级模型中的分配示例。 一种更简单的方法,这里称为简单集合,用于月度和季度数据,而不是专家集合。在这种情况下,。这是一种装袋,而且效果也很好。
值得一提的是,在 Smyl (2017) 的工作中,专家团队将 M3 月度数据集的预测准确度提高了约 3%。然而,报告的差异并不稳定,这取决于数据和所用模型的质量。因此,。
3.2.3. Stage of training
由最近训练时期中的几个(例如 4-5 个)生成的预测被集成以提供单一预测。整个训练通常使用 10-30 个 epoch;因此,。
3.3. Backtesting
(例如,每月数据为 18 或 36 个),。然而,虽然训练步骤从未暴露于移除的值,但系统在每个 epoch 之后都在验证(移除)区域进行了测试,结果指导了架构和超参数的选择。在实践中,在最后一个水平点数和倒数第二个水平点数上进行测试时,验证结果之间存在非常强的相关性,通常使用前一种方法,因为它也承认更大数量的序列(许多也是如果删除了一个以上的水平点数,则用于回测)。
虽然许多序列很短,但也有许多非常长,例如代表 300 多年的月度数据。此类序列的早期部分对预测准确性的用处并不明显,但它们涉及明显的计算需求。。。它与其他超参数一起列在表 1 中。
3.4. Hyperparameters
。用于防止过拟合的主要工具是提前停止:在训练期间,验证区域的平均准确率(通常是最后输出水平的点数,参见图 1)在每个训练时期后计算。。。
表 1 列出了所有使用的 NN 架构和超参数。,则不会重复这些值。关于每个的一些评论:
简单的集成或专家的集成。在后一种情况下,它被详细描述为 ,例如4/5,见第 3.2.2 节。在年度数据的情况下,两种集成方法都进行了尝试,但在每日、每周和每小时数据的情况下,。
它被编码为一个块序列,在括号中,参见第 2.2.5 节。块周围的残差捷径,或在根据 Kim (2017) 的LSTMs 的特殊情况下,层周围的剩余快捷方式。每种序列的架构:
- 月度序列使用单个块的特殊残差层。
- 每季度、每天和每小时的序列使用了可能应该是标准架构的东西(因为它似乎在 M4 竞赛之外的其他环境中也能很好地工作):两个扩展的 LSTM 层的两个块。
- 年度序列的点预测模型使用单个带有注意力的扩张 LSTM 块,编码为注意力 (1,6),而预测间隔模型添加了一个标准的带 tanh() 激活的密集层,我称之为非线性层 (NL ),因此这被编码为attentive (1,6), NL。
- 如上所述,每周序列的架构使用了细心的 LSTM。
- 与表中的其他情况一样,所选择的架构是一些推理/信念和实验的结果。我认为,在季节性序列的情况下,至少一个膨胀应该等于季节性,而另一个应该在预测范围的范围内。架构很可能过度拟合回测结果;例如,更标准的架构 (1,3)– (6,12) 或 (1,3,12) 几乎肯定也适用于月度序列(没有特殊的剩余架构)。
LVP 代表水平可变性惩罚,是应用于水平摆动惩罚的乘数。它仅适用于季节性车型。该值不是很敏感,因为即使更改 50% 也不会产生太大影响。但是,它仍然很重要。
- 时期数(Number of epochs):最终训练和预测运行的训练时期数是通过实验选择的,以使验证区域的误差最小化。学习率和 epoch 数之间存在明显的相互作用:。影响它们的另一个因素是子集的计算要求:(因此更高的学习率)。
- 学习率:第一个数字是。例如,在年度 PI 模型的情况下,它从 1e-4 开始,但在第 17 期减少到 3e-5,在第 22 期再次减少到 1e-5。时间表是观察验证行为的结果每个训练时期后的错误。当他们在大约两个 epoch 上趋于平稳时,学习率降低了 3-10 倍。
- 最大长度:该参数列出了所用系列的最大长度,请参见第 3.3 节。在每小时系列的情况下,没有截断,所有系列都以原始长度使用。
- 训练百分比:见第 3.1.1 节。
- LSTM 的状态大小:LSTM 单元维护一个数字向量,称为状态,它是它们的记忆。。
3.5. Implementation
该方法通过四个程序实现:两个使用专家集成,两个使用简单集成,如前所述。每对包含一个用于生成 PF 的程序和另一个用于估计 PI 的程序。如果比赛今天发生,可能只需要两个程序,一个使用专家集成,另一个使用简单集成,因为 PI 和 PF 可以通过修改损失函数和架构从单个程序生成。该方法是用 C++ 编写的, (Neubig et al., 2017)。它可以在Windows、Linux或Mac上编译运行,并且可以选择写入关系数据库,如 SQL Server 或 MySQL,方便分析回测结果,在实践中非常有用。这些程序使用 CPU,而不是 GPU,并且旨在并行运行。该代码可在 M4 GitHub 存储库 (https://github.com/M4Competition/M4-methods) 上公开获得,以促进可复制性并支持未来的研究 (Makridakis, Assimakopoulos, & Spiliotis, 2018)。代码注释很好,是对方法的最终描述。
3.6. What did not work well and recent changes
。这可以部分解释为作者专注于“三大”子集:月度、年度和季度,因为它们涵盖了 95% 的数据,并且在它们上表现出色是竞争成功的关键。。
自比赛结束以来,已经尝试了几项改进。其中一项尝试在每日和每周数据的准确性上取得了显着提高,使性能达到最佳基准的水平如下。。
4. Hybrid, hierarchical, and understandable ML models
本节首先总结模型的主要特征,然后概述其技术和方法的概括和更广泛的含义。同样在这种情况下,我回顾了导致本文描述的模型制定的步骤。
获胜的解决方案是一种混合预测方法,它混合了受指数平滑启发的公式,用于对序列进行去季节化和标准化,并使用先进的神经网络来推断序列。同样重要的是该方法的层次结构,它将通过许多时间序列(NN 的权重)学习的全局部分与时间序列的特定部分(平滑系数和初始季节性分量)相结合。该方法的第三个主要组成部分是在多个层次上广泛使用集成。前两个功能是由现代神经网络自动微分系统和动态计算图提供的强大功能实现的(Paszke et al., 2017)。
自动微分允许构建使用由两组组成的表达式的模型:一个相当广泛的基本函数列表,如 sin()、exp() 等,以及一个运算符列表,如矩阵和元素乘法、加法,倒数等。使用矩阵运算和一些非线性函数的神经网络只是允许的表达式的示例。梯度下降机制适合所有这些表达式的参数。在这里描述的模型中,既有 NN 部分也有 nonNN 部分(受指数平滑启发的公式)。构建对复杂的技术或业务知识进行编码的模型是非常可行的。
。也可以有每组部分。模型可以很笼统;例如以经典的统计方式:
Student performance = School impact + Teacher impact + Individual impact.
请注意,。但是,我们可以观察和量化每个黑匣子的影响,无论是一般情况下还是在每种情况下,我们都会得到一个部分可理解的 ML 模型。
的一个基本特征(Carpenter, Hoffman, Brubaker, Lee, Li, & Betancourt, 2015)。它主要。 Stan 和 DyNet 之间建模能力的相似性导致了所提出模型的制定,如下文更详细描述的那样。
到 2016 年年中,我和我的合作者在 Stan 中成功地创建了 Holt 和 Holt-Winters 模型的扩展和推广(我将这个模型家族称为 ;参见 Smyl & Zhang,2015 和 Smyl , Bergmeir, Wibowo, & Ng, 2019),并尝试将它们与 NN 模型一起使用 (Smyl & Kuber, 2016)。后来,我还尝试为 M3 Competition 数据集构建 NN 模型(Smyl,2017)。我能够在年度(因此非季节性)子集上击败经典统计算法,但无法在月度子集上做到这一点。对于季节性系列,我使用 STL 分解作为预处理的一部分,因此显然它效果不佳。此外,在 M3 数据的每个类别中,我的 LGT 模型都比我的 NN 模型更准确。。这就是 M4 获胜解决方案的诞生方式。