新闻  |   论坛  |   博客  |   在线研讨会
时序预测的深度学习算法介绍(4)
数据派THU | 2023-07-25 07:33:57    阅读:982   发布文章

2.3.13 FEDformer(2022)

Paper:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series 

ForecastingCode: https://github.com/MAZiqing/FEDformer

FEDformer是一种基于Transformer模型的神经网络结构,专门用于分布式时序预测任务。该模型将时间序列数据分成多个小的分块,并通过分布式计算来加速训练过程。FEDformer引入了局部注意力机制和可逆注意力机制,使得模型能够更好地捕捉时序数据中的局部特征,并且具有更高的计算效率。此外,FEDformer还支持动态分区、异步训练和自适应分块等功能,使得模型具有更好的灵活性和可扩展性。

图片

2.3.14 Crossformer(2023)

Paper:Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series 

ForecastingCode: https://github.com/Thinklab-SJTU/Crossformer

Crossformer提出一个新的层次Encoder-Decoder的架构,如下所示,由左边Encoder(灰色)和右边Decoder(浅橘色)组成,包含Dimension-Segment-Wise (DSW) embedding,Two-Stage Attention (TSA)层和Linear Projection三部分。

图片

2.4 Mix类

将ETS、自回归、RNN、CNN和Attention等算法进行融合,可以利用它们各自的优点,提高时序预测的准确性和稳定性。这种融合的方法通常被称为“混合模型”。其中,RNN能够自动学习时间序列数据中的长期依赖关系;CNN能够自动提取时间序列数据中的局部特征和空间特征;Attention机制能够自适应地关注时间序列数据中的重要部分。通过将这些算法进行融合,可以使得时序预测模型更加鲁棒和准确。在实际应用中,可以根据不同的时序预测场景,选择合适的算法融合方式,并进行模型的调试和优化。

2.4.1 Encoder-Decoder CNN(2017)

Paper:Deep Learning for Precipitation Nowcasting: A Benchmark and A New Model

Encoder-Decoder CNN也是一种可以用于时序预测任务的模型,它是一种融合了编码器和****的卷积神经网络。在这个模型中,编码器用于提取时间序列的特征,而****则用于生成未来的时间序列。

具体而言,Encoder-Decoder CNN模型可以按照以下步骤进行时序预测:

  • 输入历史时间序列数据,通过卷积层提取时间序列的特征。
  • 将卷积层输出的特征序列送入编码器,通过池化操作逐步降低特征维度,并保存编码器的状态向量。
  • 将编码器的状态向量送入****,通过反卷积和上采样操作逐步生成未来的时间序列数据。
  • 对****的输出进行后处理,如去均值或标准化,以得到最终的预测结果。

需要注意的是,Encoder-Decoder CNN模型在训练过程中需要使用适当的损失函数(如均方误差或交叉熵),并根据需要进行超参数调整。此外,为了提高模型的泛化能力,还需要使用交叉验证等技术进行模型评估和选择。

2.4.2 LSTNet(2018)

Paper:Modeling Long- and Short-Term Temporal Patterns with Deep Neural Networks

LSTNet是一种用于时间序列预测的深度学习模型,其全称为Long- and Short-term Time-series Networks。LSTNet结合了长短期记忆网络(LSTM)和一维卷积神经网络(1D-CNN),能够有效地处理长期和短期时间序列信息,同时还能够捕捉序列中的季节性和周期性变化。LSTNet最初是由中国科学院计算技术研究所的Guokun Lai等人于2018年提出的。

LSTNet模型的核心思想是利用CNN对时间序列数据进行特征提取,然后将提取的特征输入到LSTM中进行序列建模。LSTNet还包括一个自适应权重学习机制,可以有效地平衡长期和短期时间序列信息的重要性。LSTNet模型的输入是一个形状为(T, d)的时间序列矩阵,其中T表示时间步数,d表示每个时间步的特征维数。LSTNet的输出是一个长度为H的预测向量,其中H表示预测的时间步数。在训练过程中,LSTNet采用均方误差(MSE)作为损失函数,并使用反向传播算法进行优化。

图片

2.4.3 TDAN(2018)

Paper:TDAN: Temporal Difference Attention Network for Precipitation Nowcasting

TDAN(Time-aware Deep Attentive Network)是一种用于时序预测的深度学习算法,它通过融合卷积神经网络和注意力机制来捕捉时间序列的时序特征。相比于传统的卷积神经网络,TDAN能够更加有效地利用时间序列数据中的时间信息,从而提高时序预测的准确性。

具体而言,TDAN算法可以按照以下步骤进行时序预测:

  • 输入历史时间序列数据,通过卷积层提取时间序列的特征。
  • 将卷积层输出的特征序列送入注意力机制中,根据历史数据中与当前预测相关的权重,计算加权特征向量。
  • 将加权特征向量送入全连接层,进行最终的预测。


需要注意的是,TDAN算法在训练过程中需要使用适当的损失函数(如均方误差),并根据需要进行超参数调整。此外,为了提高模型的泛化能力,还需要使用交叉验证等技术进行模型评估和选择。

TDAN算法的优点在于可以自适应地关注历史数据中与当前预测相关的部分,从而提高时序预测的准确性。同时,它也可以有效地处理时间序列数据中的缺失值和异常值等问题,具有一定的鲁棒性。

2.4.4 DeepAR(2019)

Paper:DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks

DeepAR 是一个自回归循环神经网络,使用递归神经网络 (RNN) 结合自回归 AR 来预测标量(一维)时间序列。在很多应用中,会有跨一组具有代表性单元的多个相似时间序列。DeepAR 会结合多个相似的时间序列,例如是不同方便面口味的销量数据,通过深度递归神经网络学习不同时间序列内部的关联特性,使用多元或多重的目标个数来提升整体的预测准确度。DeepAR 最后产生一个可选时间跨度的多步预测结果,单时间节点的预测为概率预测,默认输出P10,P50和P90三个值。这里的P10指的是概率分布,即10%的可能性会小于P10这个值。通过给出概率预测,我们既可以综合三个值给出一个值预测,也可以使用P10 – P90的区间做出相应的决策。

2.4.5 N-BEATS(2020)

Paper:N-BEATS: Neural basis expansion analysis for interpretable time series 

ForecastingCode: https://github.com/amitesh863/nbeats_forecast

N-BEATS(Neural basis expansion analysis for interpretable time series forecasting)是一种基于神经网络的时序预测模型,由Oriol Vinyals等人在Google Brain团队开发。N-BEATS使用基于学习的基函数(learned basis function)对时间序列数据进行表示,从而能够在保持高精度的同时提高模型的可解释性。N-BEATS模型还采用了堆叠的回归模块和逆卷积模块,可以有效地处理多尺度时序数据和长期依赖关系。

图片

model = NBEATSModel(    input_chunk_length=30,    output_chunk_length=15,    n_epochs=100,    num_stacks=30,    num_blocks=1,    num_layers=4,    dropout=0.0,    activation='ReLU')

图片

2.4.6 TCN-LSTM(2021)

Paper:A Comparative Study of Detecting Anomalies in Time Series Data Using LSTM and TCN Models

TCN-LSTM是一种融合了Temporal Convolutional Network(TCN)和Long Short-Term Memory(LSTM)的模型,可以用于时序预测任务。在这个模型中,TCN层和LSTM层相互协作,分别用于捕捉长期和短期时间序列的特征。具体而言,TCN层可以通过堆叠多个卷积层来实现,以扩大感受野,同时通过残差连接来防止梯度消失。而LSTM层则可以通过记忆单元和门控机制来捕捉时间序列的长期依赖关系。

TCN-LSTM模型可以按照以下步骤进行时序预测:

  • 输入历史时间序列数据,通过TCN层提取时间序列的短期特征。
  • 将TCN层输出的特征序列送入LSTM层,捕捉时间序列的长期依赖关系。
  • 将LSTM层输出的特征向量送入全连接层,进行最终的预测。


需要注意的是,TCN-LSTM模型在训练过程中需要使用适当的损失函数(如均方误差),并根据需要进行超参数调整。此外,为了提高模型的泛化能力,还需要使用交叉验证等技术进行模型评估和选择。

2.4.7 NeuralProphet(2021)

Paper:Neural Forecasting at Scale

NeuralProphet是Facebook提供的基于神经网络的时间序列预测框架,它在Prophet框架的基础上增加了一些神经网络结构,可以更准确地预测具有复杂非线性趋势和季节性的时间序列数据。

  • NeuralProphet的核心思想是利用深度神经网络来学习时间序列的非线性特征,并将Prophet的分解模型与神经网络结合起来。NeuralProphet提供了多种神经网络结构和优化算法,可以根据具体的应用需求进行选择和调整。NeuralProphet的特点如下:
  • 灵活性:NeuralProphet可以处理具有复杂趋势和季节性的时间序列数据,并且可以灵活地设置神经网络结构和优化算法。
  • 准确性:NeuralProphet可以利用神经网络的非线性建模能力,提高时间序列预测的准确性。
  • 可解释性:NeuralProphet可以提供丰富的可视化工具,帮助用户理解预测结果和影响因素。
  • 易用性:NeuralProphet可以很容易地与Python等编程语言集成,并提供了丰富的API和示例,使用户可以快速上手。

NeuralProphet在许多领域都有广泛的应用,例如金融、交通、电力等。它可以帮助用户预测未来的趋势和趋势的变化,并提供有用的参考和决策支持。

2.4.8 N-HiTS(2022)

Paper:N-HiTS: Neural Hierarchical Interpolation for Time Series Forecasting

N-HiTS(Neural network-based Hierarchical Time Series)是一种基于神经网络的层次时序预测模型,由Uber团队开发。N-HiTS使用基于深度学习的方法来预测多层次时间序列数据,如产品销售、流量、股票价格等。该模型采用了分层结构,将整个时序数据分解为多个层次,每个层次包含不同的时间粒度和特征,然后使用神经网络模型进行预测。N-HiTS还采用了一种自适应的学习算法,可以动态地调整预测模型的结构和参数,以最大程度地提高预测精度。

图片

model = NHiTSModel(    input_chunk_length=30,    output_chunk_length=15,    n_epochs=100,    num_stacks=3,    num_blocks=1,    num_layers=2,    dropout=0.1,    activation='ReLU')

图片

2.4.9 D-Linear(2022)

Paper:Are Transformers Effective for Time Series Forecasting?

Code: https://github.com/cure-lab/LTSF-Linear

D-Linear(Deep Linear Model)是一种基于神经网络的线性时序预测模型,由李宏毅团队开发。D-Linear使用神经网络结构来进行时间序列数据的线性预测,从而能够在保持高预测精度的同时提高模型的可解释性。该模型采用了多层感知器(Multilayer Perceptron)作为神经网络模型,并通过交替训练和微调来提高模型的性能。D-Linear还提供了一种基于稀疏编码的特征选择方法,能够自动选择具有区分性和预测能力的特征。与之相近,N-Linear(Neural Linear Model)是一种基于神经网络的线性时序预测模型,由百度团队开发。

model = DLinearModel(    input_chunk_length=15,    output_chunk_length=13,    batch_size=90,    n_epochs=100,    shared_weights=False,    kernel_size=25,    random_state=42)model = NLinearModel(    input_chunk_length=15,    output_chunk_length=13,    batch_size=90,    n_epochs=100,    shared_weights=True,    random_state=42)

图片图片


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客