时序数据预测方法

作者:云智慧
链接:https://www.zhihu.com/question/390044856/answer/2751290273
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

引言

在以往的时序预测中,大部分使用的是基于统计和机器学习的一些方法。然而,由于深度学习在时间序列的预测中表现并不是很好,且部分论文表述,在训练时间方面,用 Transformer、Informer 、Logtrace 等模型来做时间序列预测的效果甚至不如通过多层感知机与线性回归做加权。

基于以上背景,近年来,学术界针对时间序列的特点,设计了一系列的深度学习架构模型。本篇文章将介绍 N-BEATS、N-BEATSx、N-HiTS、FEDformer 以及 DeepTiMe 五个最新深度学习架构模型。

模型介绍

N-BEATS 与 N-BEATSx 是加拿大一家公司最先提出。N-HiTS 是在 N-BEATS 的基础上做了一些改进。FEDformer 是由阿里达摩院发表一个基于傅立叶变换和小波变换用于深度模型做提取特征工作的模型。DeepTiMe 是利用元学习的思想,在非常简单的神经网络上结合随机傅立叶特征即可取得很好的预测效果。

N-BEATS

时间序列预测当中,算法大致分为基于回归与基于分解两大类。N-BEATS 则是一种基于时间序列分解的算法。
基于学界以及工业界的应用经验,在时间序列预测中,分解算法会更加鲁棒。因此,如何将上述分解思想应用与深度学习之中,是这篇文章的一个重要出发点,另一个出发点则是解决针对深度学习在做时间序列预测时所面临的可解释性不强等问题。

下图为 N-BEATS 模型的整体网络架构。可以明显看出 N-BEATS 属于分类模型,即该模型是将神经网分成单个 Stack。如图所示, N-BEATS 模型的神经网络被分成了 M 个 Stack,每一个 Stack 两个输出值,一个向右传递值和一个向下传递值。最终,汇总每一个 Stack 向右传递的值便作为该模型的综合输出。此时,每一个 Stack 输出结果便可以看成每一个 Stack 上时间序列预测的结果。此外,每一个 Stack 由很多个 Block 组成,Block 与 Block 之间连接方式为残差连接,每个 Block 使用的是全连接神经网络


为解决深度学习在做时间序列预测时可解释性不强的问题,该模型作者采用了两种方法。如下图所示,假设该模型只设计两个 Stack,一个 Stack 用于输出该模型的趋势,另一个 Stack 用于输出该模型的周期。在 Stack 用于输出趋势时,该 Stack 输出的值作为多样式的系数,随后用该多样式函数来拟合它的趋势。相对来说,这种方法是较为原始的。


在Stack 用于输出周期时,该 Stack 输出的值作为傅立叶级数的系数。


最后,将上述两个值加起来,即可得到整个网络的输出。反之,如果预测趋势出现问题,则有可能为第一个 Stack 出问题,如果预测周期出现问题,则有可能是第二个 Stack 出问题。
下图为 N-BEATS 模型在 M4、M3 以及其他数据集上的一些表现。可以看出, 相比与深度学习、时间序列等其他模型,N-BEATS 模型在部分指标下的结果是较为显著的。

N-BEATSx

由于 N-BEATS 只能进行单指标时间序列预测的问题,因此,N-BEATSx 在 N-BEATS 的基础上对神经网络做了部分改动以实现多指标时间序列预测。即在预测过程中,输入的值不局限于时间序列,也可以是外部变量,以此实现多对一的预测。如下图所示,N-BEATSx 模型的网络架构与 N-BEATS 基本一致,没有出现额外的变化。即 N-BEATSx 可以理解为加了外部变量的 N-BEATS。

 


如下图所示,左侧是未输入外部变量的 N-BEATS,残差较大。右侧是加了外部变量的 N-BEATSx,预测结果更准确。

N-HiTS

N-HiTS 与前两个模型的网络结构一致,不同点在于在 Stack 方面,N-HiTS 是通过多重采样的方式将时间序列分成高频和低频。若时间序列如下图左上角所示,例如,可以通过每隔100个点采样一次的方式得到低频采样信息。为实现与其他时间序列对齐并各个预测结果相加,随后做插值。此外,如需获取高频采样信息,只需将采集频次提高即可。

信息采集完成后,传递至每个 Stack 中,随后进行预测。如果发现预测趋势出现问题,则可通过分析低频、高频信息的方式定位问题根源。


下图为 N-HiTS 模型预测结果对比图,可明显看出好于 Informer、Autoformer 以及 ARIMA 等模型。


下图为 N-HiTS 模型的计算复杂度与空间复杂度。可看出基于 N-HiTS、N-BEATS 以及 N-BEATSx 的时间复杂度要远远低于 Transformer 等模型的复杂度。且在空间复杂度上面, N-HiTS 模型甚至比N-BEATS 模型还要低一些。

FEDformer

FEDformer 模型主要采用了 Transformer 模型的结构,在此基础上提出了两个创新点。第一个创新点是频率增强捕捉机制,第二个创新点是基于频率增强的注意力机制。频率增强捕捉机制与频率增强的注意力机制有傅立叶变换和小波变换两个版本。


下图为傅立叶变换实现的版本。首先将原始时域上的输入序列投影到频域;随后再在频域上进行随机采样;其次进行频域补全,频域补全过程与频域采样相对,为了使得信号能够还原回原始的长度,需要对频域采样未被采到的频率点补零;最后进行投影回时域,因为上述补全操作,投影回频域的信号和之前的输入信号维度完全一致。

DeepTiMe

DeepTiMe 模型利用了元学习模型的思想,是一个基于 Time-Index 的模型。下图为 DeepTiMe 模型网络架构,DeepTiMe 也利用了随机傅立叶特征。首先传递一个 Time-Index 告知今天是几号,随后预测出yt。上述便是 DeepTiMe 模型网络整体输入输出流程。


下图为未使用语言模型和使用语言学习(DeepTiMe)的对比图,可看出,使用 DeepTiMe 模型的预测效果明显高于未使用 DeepTiMe 模型的预测效果。


下图为使用 DeepTiMe 模型预测线性、三次多项式等模型的预测结果,可以看出 DeepTiMe 模型在该方面的预测结果也较为精准。


下图为 DeepTiMe 模型与其他模型预测结果对比。在多指标预测当面,DeepTiMe 模型好于 N-HiTS 模型与 FEDformer 模型以及其他 Former 类模型。在单指标预测中,N-HiTS 模型则好于 DeepTiMe 模型。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LightGBM是一种基于梯度提升决策树(Gradient Boosting Decision Tree)的机器学习算法,用于时序数据预测。它在处理大规模数据集和高维特征时表现出色。 在使用LightGBM进行时序数据预测时,首先需要对数据进行预处理。常见的预处理步骤包括数据清洗、特征工程和数据归一化等。然后,将预处理后的数据划分为训练集和测试集。 接下来,需要定义预测问题的目标,如预测下一个时间点的数值或预测一段时间内的趋势。在LightGBM中,可以选择回归问题或分类问题,根据问题的性质选择相应的模型。 为了应用LightGBM进行时序数据预测,需要根据时间序列的特性进行特征工程。这包括提取时间相关的特征,如时间间隔、滞后特征等。还可以利用统计学特征、滑动窗口特征和滚动统计特征等方法,获取更多有用的特征。 然后,将预处理后的时序数据输入到LightGBM模型中进行训练。可以选择合适的超参数,如学习率、树的深度、子样本比例等,以及适当的验证集来调优模型。利用交叉验证方法可以帮助评估模型的性能并防止过拟合。 在训练完模型后,可以使用该模型对测试集进行预测。根据具体的问题和需求,可以对预测结果进行后处理和评估,如计算误差、绘制预测曲线等。 总结来说,利用LightGBM进行时序数据预测需要进行数据预处理、定义预测问题,进行特征工程、模型训练、参数调优和预测评估等步骤。通过合理的数据处理和特征提取,结合LightGBM的优势,可以提高时序数据预测的准确性和效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值