发表时间:2019年7月30日
平台: International Journal of Forecasting
来源:美国Uber
本文介绍了 M4预测比赛 的获奖作品。该提交利用了一个动态计算图神经网络系统,使标准指数平滑( Exponential Smoothing-ES)模型与先进的 LSTM 网络混合到一个共同的框架。结果是一种混合层次预测方法。
关键词:预测比赛,M4,动态计算图,自动微分,LSTM网络,指数平滑
这里的动态计算图、自动微分估计是凑字数的,不用提吧
不过ES和LSTM 怎么结合好像是个不错的观点,估计2021年的Autoformer可能也被这个启发。
在过去的几十年里,神经网络(NNs)以及其他机器学习(ML)算法在各个领域取得了显著的成功,其中包括图像和语音识别、自然语言处理(NLP)、自动驾驶汽车和游戏(Makridakis, 2017)。他们成功背后的关键是,提供一个大型的代表性数据集,ML算法可以学习识别复杂的非线性模式,并探索非结构化关系,而无需先验假设。因此,ML算法不受假设或预定义的数据生成过程的限制,允许数据自己说话。
说白了就是数据驱动。
然而,在预测方面,ML的优越性并不明显。虽然在一些应用中,如能源预测(Dimoulkas等人,2018),被推测的序列往往很多,很长,并伴随解释变量,ML算法是成功的(Weron, 2014),但在更典型的时间序列预测中,数据可用性往往有限,回归变量不可用,ML算法的性能往往低于预期(Makridakis等人,2018c)。
意思是数据不够时候ML算法性能不好呗
没有一个流行的ML算法是为时间序列预测而创建的。为了将它们用于预测,需要对时间序列数据进行预处理。成功使用ML算法的优势和实际要求是交叉学习,即使用多个序列来训练单个模型。这与基于统计的标准时间序列算法不同,在基于统计的标准时间序列算法中,每个序列都要开发一个单独的模型。但是,为了学习多个时间序列,需要对数据的预处理进行仔细的考虑。NNs(神经网络)在这一领域特别敏感,这个话题将在后面展开。
预处理有许多好的规则,但它仍然是一种实验密集型的艺术。该方法在M4比赛中取得成功的最重要的因素之一是训练过程中固有的一个部分——动态预处理。至关重要的是,这一预处理的参数与神经网络权重一起更新通过整体优化过程(SGD),其首要目标是准确预测(最小化预测误差)。
以上两段是:把预处理的参数和神经网络一起训练,共同优化。
预处理参数实际上是指数平滑族中某些模型的更新公式(稍作简化)。因此,这里提出了一种混合预测方法,将指数平滑(ES)模型与LSTM神经网络混合在一个共同的框架中。ES方程使该方法能够有效地捕捉单个序列的主要成分,如 seasonality and level,,而LSTM网络允许非线性 trend 和 cross-learning 。在这方面,数据以分层的方式被利用,这意味着局部和全局成分被利用来提取和组合来自序列级或数据集级的信息,因此,提高预测的准确性。
这段是对上两段的补充,所谓的预处理就是ES,所谓的NNs就是LSTM。然后又意淫解释了一波这两个东西搞一起可能有用的假设。
本文的其余部分组织如下。在第2节中介绍并描述了一般意义上的方法,而第3节给出了更多的实现细节。第四部分总结了由最近的神经网络系统和概率编程语言提供的一些一般建模可能性,并在此背景下追溯了本文中描述的模型的发展。
概率编程语言不懂,往下看。
该方法有效地将ES模型与LSTM网络混合在一起,从而提供了比纯统计或ML方法生成的预测更准确的预测,从而利用了它们的优势,同时避免了它们的缺点。这种混合预测方法有以下三个主要要素:(1)消除季节性因素 和自适应归一化;(2)预测的生成;(3)集成。
第一个元素是用状态空间ES风格( state-space ES-style) 的公式实现的。每个序列参数都是初始季节性成分( Initial seasonality components)(例如季度序列为4)和平滑系数(单个季节系统为2个),并使用随机梯度下降(SGD)与全局NN权值一起拟合。知道这些参数和序列的值可以计算出所有的季节性成分和水平( seasonality components and levels),这些用于消除季节性因素 和归一化。在M4 Competition中,季节序列的消除季节性因素非常重要,因为季节序列是作为数字向量提供的,没有任何时间戳,所以无法合并日历特征,如星期几或月数。此外,序列的来源也很多,所以它们的季节性模式是不同的。
意思就是ES 和NNs一起来优化
第二个要素是一个神经网络,它对消除季节性因素和归一化数据进行操作,提供未来水平步( 比如月序列输出18个月的数据)的输出,随后进行重新归一化和重新季节性处理,以提供预测。神经网络是全局性的,在许多时间序列上学习。
感觉的意思是利用神经网络迭代消除季节性因素。
最后一个元素是前一步所做预测的集成。这包括几个独立运行的单个模型产生的预测结果的集成,同时训练的模型的子集产生的预测结果的集成,对最近一个epoch产生的预测结果进行平均。这一过程进一步增强了方法的鲁棒性,减轻了模型和参数的不确定性(Petropoulos等人,2018),同时也利用了组合的有益效果(Chan & Pauwels, 2018)。
就是模型集成,比赛中必用。
基于以上,可以说该方法具有以下两个特点:
- 它是混合的,在某种意义上,统计建模(ES模型)与ML算法(LSTM网络)同时结合。
- 它具有层次性,在某种意义上,全局参数(适用于所有序列的大子集)和局部参数(分别应用于每个序列)都被用来实现交叉学习,同时还强调要推理的时间序列的特殊性。
总结下,什么全局参数,什么局部参数,什么交叉学习,要往后看。
2.2.1. 消除季节性因素(deseasonalization) 和归一化
M4时间序列,即使在相同的频率子集内,例如每月,也来自许多不同的来源,并表现出不同的季节性模式。此外,该序列的开始日期没有提供。在这种情况下,NNs无法学习有效地处理季节性问题。一种标准的补救方法是在预处理时应用消除季节性因素处理。这是一个适当的解决方案,但不是最好的解决方案,因为它将预处理与预测完全分开,而且在序列末尾的分解质量可能会更差,因为它在预测中起着最重要的作用。人们还可以观察到,消除季节性因素算法,无论多么复杂和健壮,都不是被设计成用于NNs的良好的预处理器。经典的统计模型,如指数平滑族的模型,展示了一种更好的方法:预测模型包含必要的处理季节性的部分。
在包括LSTMs 在内的大多数神经网络变体中,权值的更新大小与最终误差成正比,同时也与相关信号(来自当前层神经元 i 到下一层神经元 j )强度的绝对值成正比。因此,即使是在数字计算机上实现的神经网络,其行为就像模拟设备:小值输入在学习过程中影响很小。将每个序列整体归一化到一个区间(如[0-1])也是有问题的,因为要预测的值可能在这个范围之外,更重要的是,对于在其生命周期内变化很大的序列,数值较小的部分也会被忽略。最后,关于趋势强度的信息丢失了:两个相同长度和形状相似的序列,一个从100增长到110,另一个从100增长到200,在[0-1]归一化之后,看起来非常相似。因此, 归一化是必要的,但应该是自适应的和局部的,这里“归一化器”遵循序列值。
以上两段讲了消除季节性因素 和归一化的问题
.2.2. 指数平滑公式
考虑到M4序列都是正值,我们选择了具有乘法季节性的Holt (Gardner, 2006)和Holt- winters (Hyndman et al., 2008)模型。然而,通过去除线性趋势,这些都被简化了:神经网络的任务是产生一个很可能是非线性的趋势。此外,取决于数据的频率,非季节性(年度和每日数据)模型、单季节性(月度、季度和每周数据)模型或双季节性(每小时数据)模型(Taylor, 2003)被使用。下面列出了每种情况的更新公式。
非季节性模型:
单季节模型:
双季节模型:
其中为 t 点的序列值, 和 分别为水平、季节性和第二季节性成分,K为每个季节周期的观测次数,月为12次,季为4次,周为52次,最后 L 为每个季节周期每秒的观测次数(小时数据为168次??)。注意和总是正的,而平滑系数α, β和γ的值在0和1之间。通过将exp()应用于初始季节成分的基础参数和sigmoid()应用于平滑系数的基础参数,这些限制很容易实现。
2.2.3. 动态预处理
上述公式允许计算每个序列所有点的水平和季节性成分。然后在动态预处理过程中使用这些组件进行 deseasonalization 和自适应归一化处理。这一步是该方法的关键部分,本节将对此进行描述。
每个序列对每个训练epoch都进行新的预处理,因为参数(初始季节性成分和平滑系数)和结果水平和季节性成分在每个epoch都是不同的。
图1:显示如何使用滚动窗口对随机月度序列进行预处理的示例。最后一步用于验证。
采用 constant size、滚动输入和输出窗口的标准方法,如图1所示。输出窗口的大小总是等于预测视界(例如,每周序列为13),而输入窗口的大小是由一个规则决定的,即它应该至少涵盖一个完整的季节期(例如,在季度序列列中等于或大于4),而对于非季节序列,输入窗口的大小应该接近预测视界。然而,确切的大小是在进行实验(回测)后确定的。请注意,与许多其他基于RNN的序列处理系统相比,输入大小大于1。这样做效果更好,因为它可以让NN直接接触到该序列的直接历史。
预处理过程很简单:每一步输入窗口和输出窗口中的值都被归一化,归一化指的是:除以输入窗口中最后一个level值(图1中蓝色的粗点),如果是季节时间序列,再除以相关的季节成分。这导致输入和输出值接近1,而不考虑序列的原始振幅及其历史。最后,应用了一个压缩函数log()。压缩函数防止异常值对学习产生过大的干扰影响。
此外,时间序列的领域(如Finance或Macro)被 one-hot 编码为长度为6的向量,并附加到时间序列衍生的特征。领域信息是唯一可用的元信息,我考虑将NN暴露给它。
一般来说,在对神经网络进行预处理时,增加输入窗口的大小和提取更复杂的特征,如季节性或可变性的强度,是值得尝试的想法,但由于一些原因,这里没有采用这样的方法。最重要的一个问题是,许多序列太短,无法提供大的输入窗口,这意味着它们不能用于回测。另一个原因是,创建有效总结序列特点而不考虑其长度的功能并不简单。只有在比赛结束后,一个被称为tsfeatures的有前途的R包才引起了我的注意(Hyndman等人,2015;Kang et al., 2017)。
2.2.4. NNs预测
如上所述,NNs对 deseasonalized,、 adaptively normalized和 squashed 值进行操作。他们的产出需要通过以下方式“解开”:
对于非季节性模型:
对于单一季节性模型:
对于双季节性模型:
其中 x 为预处理后的输入(向量),NN(x)为NN输出(向量), 为 t 时刻(最后已知数据点)的水平值,h 为预测视界。所有操作都是element-wise。图2总结了上述内容.
请注意,最终的预测实际上是许多这样的预测的集合,这个过程将在本文后面解释。
2.2.5. 神经网络结构
为了更好地了解预报系统的实施情况,可以将预报系统的参数分为以下三组:
- 局部常量: 这些参数反映单个序列的行为。它们不会随着我们逐步完成这个序列而改变。例如,ES模型的平滑系数,以及初始的季节成分,都是局部不变(常数)参数。
- 局部状态: 这些参数随着我们逐步通过一序列而变化,它们随着时间而演变。例如,水平和季节成分,以及一个循环NN状态,是局部状态。
- 全局常量: 这些参数反映了在大型序列集合中学习到的模式,并且是常量,不会随着我们逐步通过一序列而改变。例如,用于神经网络系统的权值是全局常数。
典型的统计时间序列方法是针对每个序列进行训练的,这意味着它们只涉及局部常数和局部状态参数。另一方面,标准的ML方法通常在大型数据集上训练,只涉及全局参数。这里描述的混合方法使用了所有三种类型的参数,部分是全局的,部分是特定于时间序列的。这种类型的建模通过动态计算图(DCG)系统成为可能,如Dynet (Neubig等人,2017),Pytorch (Paszke等人,2017)和Tensorflow在“eager 模式”(Abadi等人,2015)。静态和动态计算图系统之间的区别在于后者对每个样本(这里是每个时间序列)重建计算图(由NN系统在幕后构建)的能力。因此,每个序列可能具有部分独特和部分共享的模型。
对于每个频率和输出类型(点预测或预测区间),部署的架构是不同的。
在较高的层次上,模型的神经网络是基于扩展 LSTM的堆栈(Chang et al., 2017),有时会紧接着一个非线性层,并始终跟随一个线性 "adapter"层,其目标是使最后一层的状态大小适应输出层的大小(在预测区间( prediction intervals -PI)模型中,预测视界或预测视界的两倍)。LSTM堆栈由一些(这里是1-2)块组成。在两个(理论上更多)块的情况下,块的输出使用 Resnet-style 的 shortcuts (He et al., 2015)添加到下一个块的输出。每个块是一个1 - 4层的 sequence,属于三种类型的 Dilated LSTMs之一: standard (Chang et al., 2017), with Attention mechanism(Qin et al., 2017)和 a special Residual version(Kim et al., 2017)。
扩展的 LSTMs 使用来自前面step的隐藏状态,但不一定是最新的,作为输入的一部分。
在标准 LSTMs 和相关单元中,在时间 t 时,部分输入是step t-1 的隐藏状态。在一个 k-dilated 的cell中,例如3,隐藏状态是从step t-k 取的,这里是 t-3 。这提高了长期记忆的性能。由于Dilated LSTMs 的惯例(Chang et al., 2017),它们被部署在扩张不断增加的 cells 堆栈中。类似的标准、 non-dilated LSTMs 块的表现稍差。如果将 recurrent NNs 替换为 non-recurrent NNs,性能将会出现更大的下降,这表明RNN状态在处理更一般的时间序列和 sequences 时是有用的。
循环神经网络注意力机制的一般思想是,与其在标准LSTMs中使用之前的隐藏状态,或在扩张的LSTMs中使用延迟状态,不如计算应用于一些过去隐藏状态的权重,以创建一个人工加权平均状态。这允许系统动态地“集中”或“关注”过去某个特定的单个或一组状态。我的实现是一个扩展的 Dilated LSTM,所以最大的后视视界等于 dilation.。对于每周序列,网络由两层的单个块组成,编码为Attentive(1,52)。第一层 dilation 等于1,所以它是一个标准的LSTM,但第二层确实计算过去52个隐藏状态的权重(当它们可用时,所以在第53点或更晚的时候逐步通过一个序列)。权值的计算采用嵌入LSTM的标准2层神经网络;它的输入是LSTM输入和最后隐藏状态的 concatenations,它的权值由运行于所有其他参数的相同梯度下降机制调整。
图3:用于生成一些 PFs 和 PIs的NN架构。
图3显示了三个配置示例,第一个生成季度序列的点预测(PFs),第二个生成月序列的点预测(PFs),而第三个生成年序列的预测区间( PIs):
(a) 该神经网络由两个块组成,每个块涉及两个 Dilated LSTMs,由第二个块周围的一条shortcut连接。最后一个元素是“adapter layer”——它只是一个标准的线性层(传递函数等于恒等式),它将第四层( dilation=8)的隐藏输出(通常为30-40长)调整为预期的输出大小,例如这里的8。
(b)神经网络由一个由4个 dilated LSTMs组成的单一块组成,如Kim等人(2017)所示,该神经网络具有 residual 连接。请注意, shortcut 箭头正确地指向 Residual LSTM cell的内部-这是一个非标准的 residual shortcut。
(c)该神经网络由两个带Attention机制的 dilated LSTMs 组成的单个块,然后是密集的非线性层(tanh()激活),然后是输出大小为两倍的线性 adapter 层,从而同时生成下界和上界的预测。注意力机制(Qin et al., 2017)大大减缓了计算速度,但偶尔表现最好。
稍后,我将提供一个表,列出所有情况(而不仅仅是这三种情况)的架构和超参数。请记住,该图只显示了模型的全局部分,但每个序列的部分也同样重要。
本节提供关于混合方法的更多实现细节。这包括损失函数的信息,模型的超参数,以及集成过程。
3.1.1. Point Forecast
M4 竞赛中用于 PFs 情况的误差度量是对称平均绝对误差 ( symmetric Mean Absolute Error--sMAPE) 和平均标度误差 ( Mean Scaled Error --MASE) 的组合 (Makridakis et al., 2018b)。这两个指标在本质上非常相似,从某种意义上说,两者都是序列的预测值和实际值之间的归一化绝对差异。回顾 NN 的输入已经在这个系统中 deseasonalized 和 normalized,我假设训练损失函数不需要包括 normalization ,它可能只是目标值和预测值的简单绝对差。然而,在回测过程中,很明显这些模型往往具有正偏差。这很可能是将压缩函数 log() 应用于时间序列派生到 NN 的输入和输出的结果。系统在对数空间中学习,但最终的预测误差在线性空间中计算。为了解决这个问题,使用了一个 τ 值略小于 0.5(通常为 0.45-0.49)的 pinball loss。 pinball 损失定义如下:
因此, pinball 函数是不对称的,对于高于和低于分位数的实际存在不同的惩罚,从而允许该方法处理偏差。 它本身就是一个重要的损失函数——最小化它会产生分位数回归(Takeuchi et al., 2006)。
3.1.2 预测区间
也可以采用 pinball 损失函数来生成 PIs。要求的覆盖率为 95%,因此一个可以尝试预测 2.5% 和 97.5% 的区间。( The requested coverage was 95%, so one could try to forecast 2.5% and 97.5% intervals.)然而,PIs 的竞争指标并不是基于单独的 upper and lower pinball 损失,而是一个称为平均比例间隔得分 ( Mean Scaled Interval Score--MSIS) 的单一公式(Makridakis 等人,2018b)。再一次,考虑到 NN 的输入已经过 deseasonalized 和 normalized,MSIS 的分母被省略了。值得注意的是,尽管该方法在提交的方法中提供了最精确的 PIs,但对于 PIs 的情况也可以观察到上面提到的正偏差,上限区间被超过的频率低于下限区间。
在这一点上,我想提请读者注意基于 NN 的系统的重要实用特性:易于创建与业务/科学目标一致的损失函数。对于此应用程序,损失函数与 M4 竞赛中使用的准确度指标保持一致。
3.1.3. Level wiggliness penalty 水平摆动惩罚
直观地说,该 level 应该是时间序列的平滑版本,没有季节性模式。 有人会认为这是次要的,更像是审美层面的要求。 然而,事实证明, level 的平滑性极大地帮助了预测的准确性。 看起来,当 NN 的输入平滑时,NN 专注于预测趋势,而不是过度拟合一些虚假的、季节性相关的模式。 平滑的 level 还意味着季节性成分适当地吸收了季节性。 在功能数据分析( Functional Data Analysis)中,二阶导数平方的平均值是针对曲线摆动的一个流行的惩罚(Ramsay 和 Silverman,2002 年)。 但是,当应用于偶尔发生大偏移的时间序列时,这样的惩罚可能过于严格且不够稳健。 在这方面,应用了该惩罚的修改版本,计算如下:
- 计算对数差异,即 其中 yt 是序列的点 t
- 计算上述差异:
- 对每个序列进行平方和平均。
惩罚乘以 50-100 范围内的常数参数,称为水平可变性惩罚 ( Level Variability Penalty (LVP)),被添加到 PFs 和 PIs 损失函数中。 水平摆动惩罚( level wiggliness penalty)显著影响了该方法的性能,可以想象,如果没有它,提交将不会赢得 M4 比赛。
为 6 个单频子集(每日、每周等)中的每一个构建了两个模型(一个用于 PFs,一个用于 PIs) 。 每个模型实际上都是多个 levels 的集合,如下所示。
3.2.1.独立运行
单次运行涉及模型的完整训练以及为子集的所有序列生成预测。 然而,鉴于参数初始化是随机的,每次运行都会产生不同的预测。 由不同运行构建的集成模型可以减轻随机性的影响并减少不确定性。 回测表明,将运行次数增加到 6-9 范围以上并不能提高预测准确性。 结果,独立运行的数量相应地受到限制。
3.2.2. Ensemble of Specialists or Simple Ensemble 专家集成和简单集成
当它在计算上可行时,除了每月和每季度的序列之外,在所有情况下都证明,而不是训练单个模型,而是使用几个同时训练的模型,从不同的序列子集中学习。 这种称为 Ensemble of Specialists 的方法最初由 Smyl (2017) 提出,总结如下。
主要思想是,当数据集包含大量来自未知来源的序列时,可以合理地假设这些可能被分组为子集,这样通过使用每个组的单独模型而不是 一个用于整个数据集。 但是,没有直接的方法来执行分组任务,因为来自不同来源的序列可能看起来和行为相似。 此外,通过通用指标对序列进行聚类可能对提高预测准确性没有用处。
在这方面,Ensemble of Specialists 算法同时训练多个模型(NN 和每个序列的参数),并迫使它们专注于序列的一个子集。算法总结如下:
1. 创建一个模型池,例如7个模型,随机分配一个部分对每个模型,例如时间序列的一半,
2. 对于每个模型:
(a) 对分配的子集执行一次训练
(b) 记录整个训练集的性能(样本内,一个序列的部分训练的所有点的平均值)
3. 对每个序列的模型进行排名,然后将每个序列分配到 top N 个最佳模型,例如2
4. 重复步骤 2 和 3,直到验证区域的平均误差开始增长。
因此,特定序列的最终预测是前 N 个模型产生的预测的平均值。这里的主要假设是连续性:如果特定模型擅长预测序列的样本内部分,那么它也有望在序列的样本外部分显示准确的结果。用于各个模型的架构和输入保持不变。不同的,并且在不同epochs之间被积极操纵的是每个模型的训练数据集的组成。图 4 显示了 10 个序列在 7 个模型和 2 个顶级模型中的示例分配。
图 4:集成专家算法( Ensemble of Specialists algorithm)对 10 个序列到 7 个模型执行的分配示例,每个序列使用前 2 个模型。
对于月度和季度数据,使用了一种更简单的方法(此处称为 Simple Ensemble),而不是 Ensemble of Specialists。在这种情况下,在每次运行开始时,数据被分成两个不重叠的集合,然后对模型进行训练并对两半中的每一半进行预测。这是一种 bagging,效果也很好。
值得一提的是,在 Smyl (2017) 的工作中,Ensemble of Specialists 在 M3 月度数据集上将预测准确率提高了 3% 左右。然而,报告的差异并不稳定,这取决于数据和所用模型的质量。因此,需要做更多的工作来明确界定每种方法的优势领域。
3.2.3 训练阶段
由最近训练 epochs 中的几个(例如 4-5 个)生成的预测被集成以提供单一预测。 整个训练通常使用 10-30 个 epoch,例如 在 20 个 epoch 的情况下,最终的预测实际上是 16、17、18、19 和 20 个 epoch 产生的预测的平均值。
3.3. Backtesting 回测
3.4. Hyper-parameters 超参数
3.5. Implementation 实现
3.6. What did not work well and recent changes
在本节中,将总结该模型的主要特性,然后概述其技术和方法的一般化和更广泛的含义。在此背景下,我还回溯了导致本文中描述的模型形成的步骤。
获胜的解决方案是一种混合预测方法,它混合了受指数平滑启发的公式,用 deseasonalizing 和normalizing 一个序列,和利用先进的神经网络,用于推测序列。同样重要的是该方法的层次结构,将多个时间序列学习到的全局部分(NN的权重)与时间序列特定部分(平滑系数和初始季节成分)相结合。该方法的第三个主要组成部分是在多个层次上广泛使用集成。现代神经网络系统提供的强大功能使前两个特征成为可能:自动微分和动态计算图(Paszke等人,2017)。
自动微分允许使用由两组表达式组成的模型:一个相当广泛的基本函数列表,如sin()、exp()等,以及一个操作符列表,如矩阵和元素相乘、加法、倒数等。使用矩阵运算和一些非线性函数的神经网络只是允许表达式的例子。梯度下降机制拟合所有这些表达式的参数。在这里描述的模型中,既有神经网络部分,也有非神经网络部分(指数平滑启发公式)。构建编码复杂技术或业务知识的模型是相当可行的。
动态计算图允许使用全局和局部(这里是每个时间序列)表达式和参数构建分层模型。也可能是每组的部分。这些模型可以是非常普遍的,例如在经典的统计脉络中:
Student performance = School impact + Teacher Impact + Individual impact
请注意,每个组件可以是一个单独的NN,一个神秘的黑匣子。然而,我们可以观察和量化每个黑匣子的影响,一般情况下,在每个情况下。因此,我们得到了一个部分可以理解的ML模型。
自动微分也是Stan - a probability Programming Language (Carpenter等人,2015)的一个基本特征。它主要用 Hamiltonian Markov Chain Monte Carlo 来拟合模型,因此优化是不同的,但潜在的自动微分感觉非常相似。Stan和Dynet之间在建模能力上的相似性导致了所提议模型的形成,如下面的详细描述。
到2016年年中,我和我的合作者已经成功地在Stan中创建了Holt和Holt-Winters模型的扩展和推广(我将这一系列模型称为 LGT - Local and Global Trend models(Smyl&Zhang,2015),(Smyl等人,2019)),并尝试将它们与NN模型一起使用(Smyl&Kuber,2016)。后来,我也尝试了很多为M3竞赛数据集建立神经网络模型(Smyl,2017)。我能够在年度(因此是非季节性)子集上击败经典统计算法,但在月子集上做不到。对于季节性序列,我使用STL分解作为预处理的一部分,所以显然它不能很好地工作。此外,在每一类M3数据中,我的LGT模型都比我的NN模型更准确。因此,当我意识到Dynet和Stan一样,允许自由编写多种模型的代码时,我决定将LGT的想法应用到NN模型中,比如处理季节性。这就是M4制胜解决方案的诞生。
在深度学习的早期,预测比赛一直是推动其发展的主要驱动力。通过比赛,可以比较各种预测方法,交流想法,分享代码。竞争数据集往往会成为未来几年的宝贵资源。
参考资料:
https://github.com/kdgutier/esrnn_torch
M4 Forecasting Competition: Introducing a New Hybrid ES-RNN Model
https://github.com/damitkwr/ESRNN-GPU
以上就是本篇文章【【时间序列预测】ESRNN】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/1097.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多