学习过程中发现的几个比较好的资源:
- 论文解读视频:DeepAR:使用自回归RNN预测时序概率分布
- 论文解读博文:DeepAR:自回归循环网络进行时序概率进行预测
- 实战视频:【机器之心× AWS】使用 DeepAR 进行时间序列预测
- torch源码实现:zhykoties/TimeSeries
- keras源码实现:arrigonialberto86/deepar
文章目录
1 Introduction
什么是概率预测,如图所示:
source:图片来源
source:图片来源
即不光要预测未来这条曲线(具体的预测值),还要预测这条曲线的分布情况,以用来评估预测值的风险。
Figure 1: Log-log histogram of the number of items versus number of sales for the 500K time series of ec, showing the scale-free nature (approximately straight line) present in the ec dataset (axis labels omitted due to the nonpublic nature of the data).
图1是论文中的双对数直方图(图中的曲线称为幂律函数,power-low, y = x a y=x^a y=xa),该函数是用来观察多条单独的时间序列数据是否存在长尾分布。正常情况下,满足该函数的数据呈正态分布,反映在双对数直方图中是一条从左上角到右下角的直线。图1中右下角的曲线说明多条时间序列曲线存在长尾分布,即各个商品的销量是不一样的。
这种长尾分布对于模型的影响是巨大的,比如一个数据集中,大部分都是长尾分布(scale小,比如100)的的时间序列数据,就会导致模型的预测值偏向于长尾分布,而原来非长尾分布(scale大,比如1000)的时间序列将会受到影响,会出现明显的欠拟合,最后导致模型学习失败。
对于这种尺度不一致的时间序列数据,通常的处理方式使用标准化,将数据统一到同一个scale。在模型中,也可以通过Batch Normalization 层进行batch的标准化,但是在图1这样的数据中不是很有效。
协变量(covariates)是指时间序列数据相关的特征,比如如果是预测某一商品的销量(sales),数据集中肯定还有其它的特征列,比如星期几,商品的种类,颜色等等,这些与被预测变量相关的特征列称为协变量。具体的解释在论文3.4部分中提到了。
DeepAR的优势:
- 首先,可以通过多条时间序列数据输入模型进行训练,模型可以学习季节性行为和对给定协变量的依赖关系,这样的好处是减少了人工来获复杂的、与组相关的行为的特征工程。
- 其次,DeepAR 以 Monte Carlo 样本的形式进行概率预测,可用于计算预测范围内所有子范围内的一致分位数估计(打破传统方法比如只能预测某一个分位数估计的局限性),以便做决策。
- 此外,通过从相似项目中学习,我们的方法能够为历史很少或根本没有历史的项目提供预测,这是传统单项目预测方法失败的情况。
- 最后,DeepAR 不假设高斯噪声,但允许用户选择一个符合数据的概率分布特性的似然函数。
2 Related Work
3 Model
注意协变量是在所有时刻(past 和 future)模型都可以看到的。
模型参数:
DeepAR模型架构:
DeepAR模型为seq2seq结构,编码器和解码器部分使用相同的网络结构,并且共享权重。
3.1 Likelihood model
论文中有两种选择,针对连续型数据(real-valued data,比如温度)的高斯似然和针对正计数数据(positive count data,比如销量)的负二项似然(negative-binomial likehood,负二项分布)。负二项分布与二项分布类似,都是基于N重伯努利实验,比如抛100次硬币,正面的概率是多少。泊松分布描述的是单位时间内随机事件发生的次数,理论上泊松分布更适合处理positive count data。但是泊松分布假设均值等于方差,这在真实环境中的数据不一定成立,而负二项分布可以解决这问题。也可以使用其他似然模型,例如单位区间中数据的 beta 似然,二元数据的伯努利似然,或者混合以处理复杂的边际分布,只要能容易地获得分布中的样本,对数似然及其关于可评估参数的梯度。
我们使用其均值和标准差
θ
=
(
µ
,
σ
)
θ = (µ, σ)
θ=(µ,σ) 对高斯似然进行参数化,其中均值由网络输出的仿射函数给出,为了确保
σ
>
0
σ > 0
σ>0,标准差通过应用仿射变换和 softplus 激活函数获得:
为什么不使用ReLU激活函数,二者的对比如下图所示。softplus激活函数在负值区间内更加平滑,这样的平滑操作在求解方差时,认为方差是个缓慢的增加的过程。而ReLU直接置零,导致方差为零。
source:图片来源
3.2 Training
模型参数可以通过最大化对数似然来学习,使用随机梯度下降求解。
需要注意,对于所有训练示例,保持总长度
T
T
T 以及条件和预测范围的相对长度固定。用零填充未观察到的目标值。这允许模型在考虑所有其他可用特征的情况下学习“新”时间序列的行为。通过使用这个窗口化过程来扩充数据,确保关于绝对时间的信息只能通过协变量提供给模型,而不是通过时间序列中
z
i
,
t
z_{i,t}
zi,t 的相对位置。
3.3 Scale handling
文中的精华部分。
将模型应用于如图 1 所示的幂律数据存在两个挑战。
首先,由于模型的自回归性质,自回归输入 z i , t − 1 z_{i,t-1} zi,t−1 以及网络的输出(例如 µ µ µ)都直接与观测值 z i , t z_{i,t} zi,t 成比例,但两者之间的网络非线性具有有限的操作范围。在没有进一步修改的情况下,网络因此必须学会将输入缩放到输入层中的适当范围,然后在输出处反转这种缩放。DeepAR通过将自回归输入 z i , t z_{i,t} zi,t 除以与项目相关的比例因子 v i v_{i} vi 来解决这个问题,并反过来将与比例相关的似然参数乘以相同的因子。例如,对于负二项式似然,使用 µ = ν i l o g ( 1 + e x p ( o µ ) ) µ = ν_i log(1 + exp(o_µ)) µ=νilog(1+exp(oµ)) 和 α = l o g ( 1 + e x p ( o α ) ) / √ ν i α = log(1 + exp(o_α))/√ν_i α=log(1+exp(oα))/√νi,其中 o µ , o α o_µ, o_α oµ,oα 是这些参数的网络输出。注意,对于连续型数据,可以在预处理步骤中选择缩放输入,但对于计数分布不可以。选择适当的比例因子本身可能具有挑战性(尤其是在存在数据缺失或数据内差异较大的情况下)。然而,文中实验表明,按平均值缩放 ν i = 1 + 1 t 0 ∑ t = 1 t 0 z i , t ν_i = 1 + \frac{1}{t_0} \sum ^{t0}_{t=1} z_{i,t} νi=1+t01∑t=1t0zi,t 是一种在实践中表现较好的启发式方法。
其次,由于数据的不平衡性,随机均匀地选择训练实例的随机优化过程将很少访问大规模数据中的少量时间序列,从而导致这些时间序列的拟合不足。这在需求预测设置中可能尤其成问题,其中销售速度快的商品可能表现出与销售速度慢的商品质量不同的行为,对销售速度快的商品进行准确预测对于满足某些业务目标可能更重要。为了抵消这种影响,我们在训练期间对样本进行非均匀采样(weighted sampling scheme)。文中加权采样方案中,从尺度为 ν i ν_i νi 的示例中选择窗口的概率与 ν i ν_i νi 成正比。这种采样方案很简单,但有效地补偿了图 1 中的偏差。
3.4 Feature
详细解释了用到的特征。注意,对于像星期几,小时等离散特征并没有进行one-hot编码,而是直接使用递增的数值。另外,针对商品类别的分类特征使用了Embedding。
4 Applications and Experiments
DeepAR模型大概每秒可以训练14条时间序列,速度还是非常快的。
4.1 Accuracy comparison
对于 parts 和 ec/ec-sub 数据集,我们与以下基线模型进行比较,这些基线代表了我们所知的最先进的需求整数数(demand integer)据集:
- Croston: the Croston method developed for intermittent demand forecasting from R package
- ETS: the ETS model [11] from R package with automatic model selection. Only additive models are used as multiplicative models shows numerical issues on some time series.
- Snyder the negative-binomial autoregressive method of [20]
- ISSM the method of [19] using an innovative state space model with covariates features
此外,与两个基线 RNN 模型进行比较,以了解DeepAR的效果:
- rnn-gaussian 使用与具有高斯似然性的 DeepAR 相同的架构;但是,它使用统一采样和更简单的缩放机制,其中时间序列 zi 除以 νi,输出乘以 νi。
- rnn-negbin 使用负二项分布,但不缩放 RNN 的输入和输出,并且均匀绘制训练实例,而不是使用加权采样。
4.2 Qualitative analysis
Figure 3: Example time series of ec. The vertical line separates the conditioning period from the prediction period. The black line shows the true target. In the prediction range we plot the p50 as a blue line (mostly zero for the three slow items) and the 80% confidence interval (shaded). The model learns accurate seasonality patterns and uncertainty estimates for items of different velocity and age.
Figure 4: Uncertainty growth over time for ISSM and DeepAR models. Unlike the ISSM, which postulates a linear growth of uncertainty, the behavior of uncertainty is learned from the data, resulting in a non-linear growth with a (plausibly) higher uncertainty around Q4. The aggregate is calculated over the entire ec dataset.
图 3 显示了来自 ec 数据集的示例预测。在图 4 中,ec 数据集上 DeepAR 和 ISSM 的边际预测分布的不同分位数的总和。与 [19] 等 ISSM 模型(其中不确定性的线性增长是建模假设的一部分)相比,不确定性增长模式是从数据中学习的。在这种情况下,模型确实会学习到不确定性随时间的整体增长。然而,这不是简单的线性增长:不确定性(正确地)在第四季度增加,并在不久之后再次减少。
Figure 5: Coverage for two spans on the ec-sub dataset. The left panel shows the coverage for a single time-step interval, while the right panel shows these metrics for a larger time interval with 9 time-steps. When correlation in the prediction sample paths is destroyed by shuffling the samples for each time step, correlation is destroyed and the forecast becomes less calibrated. This shuffled prediction also has a 10% higher 0.9-risk.
预测分布的校准如图 5 所示。对于每个百分位数 p p p, C o v e r a g e ( p ) Coverage (p) Coverage(p) 定义为数据集中时间序列中预测分布的百分位数大于真正的目标。对于完美校准的预测,它认为 C o v e r a g e ( p ) = p Coverage (p)=p Coverage(p)=p,对应于对角线。与 ISSM 模型相比,校准总体上有所改进。
关于图5,是用来评估模型预测准确度的。其中,横坐标可以认为是预测值,纵坐标可以认为是真实值。如果预测和真实值相等,那么理想情况下,应该是一条对角线,图中细线所示。越接近细线的曲线,模型的预测效果越好。
为了评估输出中建模相关性的影响,即它们与每个时间点的独立分布有多少不同,我们绘制了打乱的预测(shuffled forecast)的校准曲线,其中对于每个时间点,原始预测的实现已被打乱,破坏时间步长之间的任何相关性。对于仅由一个时间点组成的 short lead-time span(左),这没有影响,因为它只是边际分布。然而,对于 longer lead-time span(右),破坏相关性会导致更差的校准,这表明在时间步长之间捕获了重要的时间相关性。
关于模型在三个数据集上的预测结果如表1所示。
- 模型的风险分位数越小越好,可以看出DeepAR模型显著优于其它模型。
- rnn-negbin由于rnn-gaussian,因为这三个数据集符合负二项分布。说明模型预测时,应该选择合适的数据分布进行建模。
三个模型的比较:
- rnn-gauss:均匀采样,加入scale因子
- rnn-negbin:均匀采样,不加入scale因子
- DeepAR:加权采样,加入scale因子
ρ
\rho
ρ-risk 定义:
表2对比了DeepAR和矩阵分解的效果。
ND和RMSE的计算公式:
5 Conclusion
我们已经证明,基于现代深度学习技术的预测方法可以大大提高对各种数据集的最先进预测方法的预测准确性。我们提出的 DeepAR 模型有效地从相关时间序列中学习了一个全局模型,通过重新缩放和基于速度的采样来处理广泛变化的尺度,生成高精度的校准概率预测,并且能够学习复杂的模式,例如随时间推移的季节性和不确定性增长从数据中。有趣的是,该方法几乎不需要或不需要对各种数据集进行超参数调整,并且适用于仅包含几百个时间序列的中型数据集。
Experiment details
我们使用具有提前停止功能的 ADAM 优化器 [16] 和在所有实验中将遗忘偏差设置为 1.0 的标准 LSTM 单元,并从我们的解码器中抽取 200 个样本来生成预测。
对于每个数据集,使用网格搜索来找到超参数项输出嵌入维度和LSTM 节点(例如隐藏的单元数)的最佳值。为此,将预测开始时间之前的数据用作训练集并分成两个分区。对于每个候选超参数,我们将模型拟合到包含 90% 数据的训练集的第一个分区上,并选择在剩余 10% 上具有最小负对数似然的那个。为每个数据集手动调整学习率,并在超参数调整中保持固定。在更大的数据集上增加batch size。