深度自回归模型(TensorFlow 2.0) | 翻译征文 | 雷锋字幕组
本文为雷锋字幕组“触摸世界前沿科技 | 翻译征文 ”活动收录稿件
数据科学家从事的大多数与业务相关的时间序列,都主要在处理非连续的或离散的,基于时间的过程。在业务上,了解或能够量化时间序列将来何时会达到高峰或低谷可能会对企业很有用。将来的目标是能够掌握趋势和周期性模式,并预测大于 1 个样本的信号。在本文 Tensorflow Formulation 的部分提供了示例代码的链接。
趋势,周期性和噪音
在大多数与业务相关的应用程序中,时间序列的平均值和方差随时间的变化是非恒定的,或者可以说它们是非平稳的。这与用于电路,音频工程和通信系统分析的固定信号和系统形成对比。平均值的变化方向指示时间序列的趋势。噪声的变化可能是某些随机过程的函数。噪声可能会随时间增加或减少。
对于可捕获的周期性的或重复性的模式存在时间粒度的限制。在数字信号处理中,奈奎斯特速率是捕获以周期 N 重复出现的码型所需的最小采样周期。从本质上讲,采样率必须小于重复模式的一个周期的一半。 例如,假设数据中有一个功能可以衡量每 6 小时的销售数量,那么可以捕获的最精细的模式是每 12 小时重复出现一次。
自回归模型公式
自回归模型与开环反馈系统 (一种控制系统) 之间存在相似之处。开环控制系统和自回归模型都取决于模型的先前输出,不同之处在于自回归模型可以根据多个滞后的输入特征进行预测。
自回归模型的形式如公式 (1) 所示。 自回归公式是递归的,这意味着下一个值取决于先前值的级联。使用 f(t) 的一阶导数,根据一节泰勒级数逼近,获取 y(t+1) 在 f(t) 处的近似值。公式 (2) 显示出了使用一阶泰勒级数逼近的 y(t+1) 的估计值。
将一阶逼近应用于公式 (3.1) 中的自回归函数。 在 (3.1) 上使用链式规则将得出 (3.2) 。 注意,由于该函数是递归的,因此可以继续应用一阶逼近 。
通过将逼近函数 f(t) 替换为每个滞后时间步长的先前时间序列值,可以将 (3.2) 重构为线性模型。 例如,可将 f(t-1) 的值替换为 y(t-1) 。
等式 (4) 中显示了用于训练自回归模型的最终形式。截距为自回归权重的总和。这使得模型可以趋向于集中趋势,并且可以随时间推移进行自适应。
公式中 N 是数据点的数量,T 是滞后特征的总数,w 表示自回归权重,y(t-i) 表示滞后时间序列,y’(t+1) 是在 t+1 时的预测值。等式 (5) 中所示的目标函数 L,在参数方面是可微分的,并且可以使用 TensorFlow 进行优化。
多元时间序列也可以通过相同的逻辑来预测。所有时间序列的先前值都用作协变量,以同时预测所有时间序列的下一个值。在这种情况下,截距是输出节点的自回归权重的总和。多元公式允许将多个自回归层堆叠以创建深层的自回归模型。
澳大利亚墨尔本的每日最低气温和降雨量
使用澳大利亚墨尔本的每日最低气温和降雨量数据集来建立自回归预测模型。该数据集包括从 1981 年开始的横跨 3625 天的温度和降雨量。虽然有一些缺失值,但是每个序列都对这些值进行了插值处理。对这些序列采用深度自回归模型同时进行预测。
温度
下图显示了整个时间范围内墨尔本的温度。温度随时间的变化似乎有着明显的周期性成分。
降雨量
下图显示了整个时间范围内墨尔本的降雨量序列。每天的降雨量被裁剪为零厘米,这使得应用自回归模型很难建模。为了使用降雨量,下面的第二个图中显示了采用了 60 天的降雨量平均值时的情况。
数据集构建
-
训练之前首先对温度和降雨这两个系列进行了标准化。
-
数据集是建立在为时序中的每次观测创建 365 个滞后特征的基础上。例如,365+1 次观测值将具有以前的 365*2 个特征。
-
在训练数据集中排除了前 365 个观察值,以避免丢失值。
-
这两个时间序列的最近 1,130 个(或 3 年)观测值被用作检验测试预测效果的保留集。
TensorFlow 公式
下面的代码块显示了上面公式化自回归模型的 TensorFlow 代码。在这里可以找到对应的代码示例。
该模型输入大小为 (N,M),其中 N 是数据点的数量,M 对应于降雨和温度的 730 个滞后特征。用于自回归激活的隐藏层数量为 30。该模型经过随机梯度下降,均方误差损失,Adam 优化器,提前停止和较小的学习率进行训练。尽管采用了提前停止,但由于自回归模型产生的内容已经进行固有正则化处理,因此可能没有必要。
雪球式自回归时间序列
可以将先前的预测结果,回滚到自回归模型中来创建预测。即使在实际时间序列稳定的情况下,滚雪球时间序列的方差也可能会随时间增加或变得不稳定。拟合度较差的模型可能会随着时间变化变得不稳定或爆炸。如果预测的滚雪球时间序列始终偏向实际趋势之上或之下,则可能发生不稳定。 在模型公式中,截距应设置为随时间变化提供更多的稳定性和适应性。
为了评估预测稳定性,对模型进行了 100 次不同的、随机的训练验证集拆分的训练,并创建了 100 个模型。 为每个模型生成了滚雪球的时间序列。 期望值和标准差分别用于创建预测和置信区间。
温度预测结果
降雨量 (60 天滚动平均值) 预测结果
在上面的图中,实际的观测值,训练预测和滚雪球的预测分别由绿色,蓝色和橙色系列表示。温度的训练预测值和滚雪球的预测值似乎捕获了全局周期性模式。但是,跨时间的变化没有被 100 个预测的变化所捕获。降雨数据 (60 天滚动平均值) 的预测值似乎在训练数据集上过拟合。过拟合可能是由于使用了滚动平均值造成。该系列的趋势在陷入周期性模式之前,已准确地捕获了约 1 年的预测值。大约 1 年后,无法准确捕捉到该趋势。
结论
自回归函数的一阶逼近用于制定目标函数和模型公式。发现自动回归激活层的截距为输入权重的总和。使用 TensorFlow 2.0 通过堆叠自回归层来创建深度自回归模型。该模型用于同时预测澳大利亚墨尔本的温度和降雨量。自回归公式不适用于裁剪的时间序列,因此需要滚动平均变换来预测降雨。预测是通过将先前的预测回滚到模型中来创建的。该模型近似捕获了较短时间的趋势和周期性模式。
FB Prophet 预测比较
该模型与 FB Prophet 对比情况如何?Prophet 是具有许多可调参数的完整的时间序列预测套件。为了进行比较,我使用了快速入门教程中的即用型模型。
Prophet 似乎使用了周期图模型。它挑选出最高的周期性频率 f,并将它们包装在正弦和余弦函数中以创建特征集,即 sin(f) 和 cos(f) 。该软件包似乎还使用了逻辑回归模型的输出。逻辑回归模型可预测该序列是上升还是下降。该软件包似乎支持在预测中添加其他变量,但似乎还不支持同时进行多变量预测。 比较已添加到代码示例中。
温度预测结果
降雨量 (60 天滚动平均值) 预测结果
在上面的图中,实际的观测值,训练预测和滚雪球的预测分别由绿色,蓝色和橙色系列表示。温度的训练预测值和滚雪球的预测值似乎捕获了全局周期性模式。跨时间的变化被 100 个预测的变化所捕获。温度的趋势似乎呈上升趋势,但可能并非实际趋势。降雨数据 (60 天滚动平均值) 的预测值似乎捕获了一个通用的年度周期性模式。在整个验证过程中,模式都是一致的。降雨的趋势似乎呈下降趋势,但也可能不是实际趋势。
原文链接
选题来自雷锋字幕组提供的选题
本文为雷锋字幕组“触摸世界前沿科技 | 翻译征文 ”活动收录稿件