分析时序数据的三步骤:使数据平稳、时序模型、评估


作者: Chris St. Jeor & Sean Ankenbruck,Zencos

贪心科技编译


时间序列预测是一个易于使用,成本较低的方案,它可以提供强大的解决问题能力。这篇文章将介绍建立一个质量模型的三个基本步骤。


这篇文章将围绕如何构建一个时间序列模型,并将列举三个基本步骤:使数据平稳,选择正确的模型,以及评估模型的准确性。本篇文章所使用的历史页面视图数据示例来源于一家大型汽车营销公司。


步骤 1: 使数据平稳


时间序列包括按照时间间隔的递增 (以分钟、小时、天、周为单位等) 来分类的数据使用。由于时间序列数据的离散性,许多时间序列数据集都有一个周期性的以及/或着内置在数据中的趋势元素。时间序列建模的第一步是计算现有周期 (在平稳时间段内的周期性模式)以及/或着数据向上或向下移动的趋势。这些嵌入模式的核算是我们所说的使数据平稳。如图1和表2所示,可以看到趋势和周期性数据的例子。

图 1:趋势向上数据的示例


图 2: 周期性数据示例


什么是平稳(Stationarity)?

 
正如前面提到的,时间序列建模的第一步是消除数据中存在的趋势或周期的影响,以使其平稳。我们不断抛出平稳这个术语,但它到底是什么意思?


平稳系列是指系列的平均值不再是一个有关于时间的函数。随着趋势数据的增加以及时间的推移,系列的平均值会随时间而增加或减少 (比如随着时间推移房价的稳步上升)。对于周期性数据,系列的平均值随周期波动 (比如每24小时中,温度的上升和降低)。

 

我们如何实现平稳?

 
有两种方法可用于实现平稳:
差分数据或线性回归。差分数据指的是,你计算了两个连续观测中的差异;而线性回归则是,你可以在模型中为了周期性组件采用二进制指示器变量。在我们决定使用哪种方法之前,让我们来研究一下我们的数据。我们使用SAS视觉分析绘制了历史的每日页面视图。


图 3: 原始页面视图的时间序列图


可以清楚地看到最初的模式每七天重复一遍,表明每周为一个周期。随着时间的推移,页面视图数量的持续增加表明有一个略微上升的趋势。运用对数据的大致了解,我们随后应用了平稳的统计测试,即Augmented Dickey-Fuller (ADF)  测试。ADF 测试是平稳的单元根测试。我们不会讨论这里的细节,简单来说一个单位根表明,该系列是否为非平稳的,因此我们使用这个测试来确定适当的方法来处理趋势或周期 (差分或回归)。基于上述数据的 ADF 测试,我们通过对一周中的虚变量的回归,消除了七天的周期,并通过对数据进行差分来消除该趋势。所得到的平稳数据可以在下面的图中看到。

图 4: 移除周期和趋势后的平稳数据


步骤 2: 构建时间序列模型

 
既然数据是平稳的,时间序列建模的第二步就是建立基准水平预测。我们还应该注意到,大多数基本级别的预测并不需要使数据平稳的第一步。第一步一般只需要应用于更高级的模型,如 ARIMA 建模等,我们将稍后讨论。

 

建立基本水平预测

 
有几种类型的时间序列模型。为了构建能够准确预测未来页面视图(或任何您对感兴趣领域的数据预测) 的模型,必须确定适合您的数据的模型类型。


最简单的方法是假设 y 的未来值 (您想要预测的变量)等于 y 最近的当前的值。这被认为是最基本的,或者说是 "幼稚的模式",越靠近明天的观察就越有可能是明天的结果。


第二种模型是平均模型。在该模型中,数据集中的所有观测值都相等。y 的未来预测会被计算为观测数据的平均值。如果数据是水平的,则生成的预测可能相当准确,但如果数据呈趋势或周期性成分,那么预测结果将会非常糟糕。使用平均模型的页面视图数据的预测值如下所示。

图 5: 平均模型预测


如果数据具有周期性或趋势元素,则实现指数平滑模型 (ESM)将会是基级别模型的更好选项。ESM在上面提到的简单和平均模型之间做出了平衡,最近的观察被给予较大的权重,并且相对应的,所有之前观察的权重都被减少。ESM还允许将周期性和/或趋势才对组件合并到模型中。下表提供了一个初始权重为0.7 ,指数递减率为0.3的例子。

在时间序列预测中可以实现多种类型的 ESM。理想模型的取用将取决于您拥有的数据类型。下表提供了一个快速指南,来帮助您如何根据数据中的趋势和周期的组合,来确定使用哪种类型的 ESM。

由于可以明显看出七天为一个周期以及数据的上升趋势,我们选择了一个附加的Winters ESM 作为新的基准水平模型。我们得到了一个较为理想的预测,即轻微上升趋势以及稳定的七天周期。但是,可以删除的数据中还有被应用到更多的模式中。

图 6: 附加的WintersESM 预测


ARIMA 建模

 
在确定了最适合数据趋势和周期的模型之后,您还必须有足够的信息来生成较为准确的预测,如上文图2所示。然而,这些模型的能力仍然是有限的,因为它们并没有考虑到在过去的一段时间内,兴趣变量本身的相关性。我们将这种相关性称为自相关,这在时间序列数据中是十分常见的。如果数据具有自相关性,就像我们所做的那样,那么可能会需要额外的建模来进一步改进基线预测。


为了在时间序列模型中捕获自相关的影响,我们有必要采用自回归集成移动平均值 (AutoregressiveIntegrated Moving Average或ARIMA)模型。ARIMA 模型包含了用于描述周期和趋势的参数 (例如,在一周中有几天使用了虚变量和差分),还包含了自回归和/或移动平均数条件来处理数据中嵌入的自相关性。通过使用适当的 ARIMA 模型,我们可以进一步提高页面视图预测的准确性,如下面的图3所示。


图 7: 周期性 ARIMA 模型预测


步骤 3: 评估模型准确性

 
虽然您可以看到每个模型的改进精度,但直观地看出哪个模型具有最佳精度并不现实。计算 MAPE (MeanAbsolute Percent Error,平均绝对百分比误差)是一种快速、简便的方法,用于比较所提出模型的总体预测精度——具有较低的 MAPE则预测精度会更好。比较以往讨论的每个模型的 MAPE,可以很容易看出周期性 ARIMA 模型提供了最佳的预测精度。
请注意,还有几种其他类型的比较统计数据可用于模型比较。

总结


总而言之,建立一个强大的时间序列预测模型的诀窍是尽可能地去除“杂质” (趋势、周期和自相关等),以便在数据中剩余的唯一变量只有纯粹的随机性。数据方面,我们发现一周中有回归变量的周期性,并且ARIMA 模型提供了最准确的预测。与上面提到的天真、平均和 ESM 模型相比,ARIMA 模型预测更为准确。


虽然没有时间序列模型能够帮助你何时遇到真爱,但有许多类型的时间序列模型可以帮助你来完成从页面视图到能源销售的各种方面的预测。准确预测您感兴趣的变量的关键,首先就是要了解数据,其次就是要采用最符合数据需求的模型。


此为贪心科技编译,转载请联系本公众号获得授权。



加入贪心科技、广告&商务合作:hr@greedyai.com

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
神经网络模型是一种统计模型,通过模拟人类大脑的神经网络结构来进行预测和分类的任务。在时序数据预测中,神经网络模型也是一种常用的方法。下面我将介绍如何用Python实现神经网络模型进行时序数据预测。 首先,我们需要准备好时序数据的输入和输出。输入数据通常是以时间为顺序的序列数据,输出数据是对应的预测结果。可以使用Python库如NumPy来处理和准备数据。 接下来,我们可以使用Python的深度学习库,如TensorFlow、Keras或PyTorch来构建神经网络模型。这些库提供了丰富的神经网络层和模型架构,以及训练和评估的功能。 神经网络模型的架构可以选择根据数据特点和预测任务来设计。一般情况下,可以选择使用循环神经网络(RNN)或卷积神经网络(CNN)来处理时序数据。例如,对于RNN模型,可以使用LSTM(长短期记忆网络)或GRU(门控循环单元)等层来构建模型。 构建完神经网络模型后,可以使用训练数据模型进行训练。在训练过程中,通过反向传播算法来更新神经网络模型中的参数,使得模型能够更好地拟合输入和输出数据之间的关系。 训练完成后,可以使用验证数据模型进行评估,看模型是否达到了预期的性能。如果需要,可以调整模型的超参数或网络结构来进一步改进模型的预测能力。 最后,可以使用训练好的模型对新的时序数据进行预测。通过将输入数据传入模型中,可以得到相应的输出结果。 总结起来,使用Python中的深度学习库可以方便地构建、训练和评估神经网络模型,实现对时序数据的预测。这些库提供了丰富的功能和易于使用的API,使得时序数据预测任务变得简单而高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值