深度时间序列模型!全面总结!

时间序列是以固定间隔采样的按时间顺序排序的数值序列。时间序列数据有三个组成部分:趋势、季节性和残差(不规则性)。

趋势代表整体运动,而季节性则捕捉定期变化。去除趋势和周期振荡后的剩余值为残差,可能包括异常值。现实世界的时间序列,其特征在于有意义的不规则成分和非平稳性,为建模提出了挑战。9b52a24ca3ce40abf39518a98fb44de7.png

准确的预测是复杂的,促使经典方法将时间序列分解为这些分量进行单独的预测。基于数据挖掘的技术对于理解不规则分量特别有用,这有助于准确预测。时间序列以图形方式表示,时间在x轴上,记录值在y轴上,便于视觉特征检测,如振荡幅度、季节、周期和异常。

时间序列,或按时间排序的数据序列,提供了对能源,气象,金融,健康,交通和工业等不同领域的见解。时间序列预测对决策至关重要,可预测未来价值,影响减少化石燃料等战略。它有助于评估可再生能源和能源部门的电力需求。2fbf37f20ee69965251c001387a8858e.png

气象学中可以用于预测天气。金融利用它来预测股市,而健康涉及疾病传播预测。交通依赖于速度和流量预测,该行业将其用于生产和耐用性预测。深度学习在机器学习中越来越受欢迎,它被用于基于非线性关系的时间序列预测。

时间序列数据的研究包括操纵数值数据进行分类,预测和预测。统计方法采用多种模型,例如谱分析技术、自回归移动平均(阿尔马)、移动平均(MA)、自回归(AR)和AR集成MA(ARIMA)。ee4e0613a73aef6b92ae2b58960f74f5.png

时间序列预测的深度学习模型

时间序列预测的发展已经从传统的统计方法转向机器学习技术,最近又出现了基于深度学习的解决方案。正如图3所示,现有工作可以根据其主干架构分为五类,即基于MLP(多层感知机)、基于RNN(递归神经网络)、基于CNN(卷积神经网络)、基于GNN(图神经网络)和基于Transformer的模型。

dbb9532bb40c0de8f69c5464d6e34420.png

深度前馈神经网络(DFFNN):DFFNN通常被称为多层感知器,旨在解决单层神经网络在学习特定功能方面的局限性。它的架构包括一个输入层、一个输出层和各种隐藏层。每个隐藏层包含可变数量的神经元,这些神经元在配置过程中确定。

连续层中神经元之间的连接通过在网络训练期间计算的权重来建模。这些权重使用梯度下降优化来最小化成本函数,并且反向传播算法计算成本函数的梯度。每一层中的激活值由前馈过程确定,在时间序列预测中,大多数层采用整流线性单位函数,输出层采用双曲正切函数。1a0a30707133aaeaec04f5134d3e3312.png

递归神经网络(RNN):时间序列预测、语音识别和语言翻译是RNN最适合的顺序数据处理任务。它们处理这些类型的数据所包含的时间依赖性。通常,RNN类型,如Elman RNN,长短期记忆(LSTM)和门控递归单元(GRU),因为它们专门用于解决某些问题,如深度网络中的梯度消失。

如下简单示例使用LSTM预测时间序列:

import numpy as np  
from keras.models import Sequential  
from keras.layers import LSTM, Dense  
from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import MinMaxScaler  
  
# 假设你有一个名为 timeseries_data 的一维numpy数组,代表你的时间序列数据  
# timeseries_data = np.array(...)  
  
# 预处理数据:标准化,并创建监督学习问题所需的输入和输出  
scaler = MinMaxScaler(feature_range=(0, 1))  
scaled_data = scaler.fit_transform(timeseries_data.reshape(-1, 1))  
  
# 创建一个监督学习问题,即使用过去的数据点来预测下一个数据点  
def create_dataset(dataset, look_back=1):  
    X, Y = [], []  
    for i in range(len(dataset)-look_back-1):  
        a = dataset[i:(i+look_back), 0]  
        X.append(a)  
        Y.append(dataset[i + look_back, 0])  
    return np.array(X), np.array(Y)  
  
look_back = 3  # 假设我们使用过去3个时间点来预测下一个点  
X, y = create_dataset(scaled_data, look_back)  
  
# 将数据划分为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 重塑输入数据,以适应LSTM的输入要求:[samples, time steps, features]  
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))  
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))  
  
# 构建LSTM模型  
model = Sequential()  
model.add(LSTM(4, input_shape=(look_back, 1)))  
model.add(Dense(1))  
model.compile(loss='mean_squared_error', optimizer='adam')  
  
# 训练模型  
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)  
  
# 预测  
train_predict = model.predict(X_train)  
test_predict = model.predict(X_test)  
  
# 反标准化预测结果  
train_predict = scaler.inverse_transform(train_predict)  
y_train = scaler.inverse_transform([y_train])  
test_predict = scaler.inverse_transform(test_predict)  
y_test = scaler.inverse_transform([y_test])  
  
# 评估模型  
train_score = np.sqrt(np.mean(((train_predict - y_train) ** 2))  
print('Train Score: %.2f RMSE' % (train_score))  
test_score = np.sqrt(np.mean(((test_predict - y_test) ** 2))  
print('Test Score: %.2f RMSE' % (test_score))

双向RNN(BRNN):BRNN解决需要来自过去和未来数据序列的信息以进行准确预测的问题。与单向网络不同,BRNN利用前向和后向处理来生成预测,需要整个数据序列进行预测。

深度递归神经网络(DRNN):DRNN或堆栈RNN包含多个层以增强预测能力。然而,它们的性能可能会随着冗长的输入序列而降低。为了解决这个问题,可以将注意力机制(深度学习的一项重大创新)集成到模型中。

卷积神经网络(CNN):CNN广泛用于图像处理,由卷积、池化和全连接层组成。这些层共同学习特征,减少输入大小,并执行预测。最近的一个变体,时间卷积网络(TCN),在执行时间和内存需求方面与DRNN竞争。TCN利用膨胀卷积来捕获局部和时间信息。

生成模型:深度学习研究已经将生成模型-特别是扩散模型(DM)和生成对抗网络(GAN)-置于最前沿,因为它们具有生成合成图像的创造性能力。这些模型的能力已经扩大到包括时间序列和顺序数据。

GAN和DM的应用包括时间序列预测。GAN包括一个生成器和一个经过对抗训练的机器人。时间序列预测中的GAN既可以用于数据增强,也可以作为端到端模型。在数据增强中,GAN使用合成时间序列增强小数据集,在增强集上训练传统模型,如LSTM。

对于端到端预测,GAN本身成为预测模型。扩散模型是一种新的生成式模型结构,在许多领域都有很好的应用前景。他们采用去噪扩散概率模型,基于分数的生成模型和随机微分方程。最近基于扩散的短期时间序列预测方法,如TimeGrad和ScoreGrad,展示了这些模型在捕获底层数据分布中的应用。

Transformers:Transformer模型在自然语言处理和计算机视觉等任务中表现出色。它们在长期时间序列预测(LTSF)中也是有效的。对于LTSF而言,Transformer功效的普遍信念存在挑战。基线模型LTSF-Linear在各种基准测试中的表现令人惊讶地优于复杂的基于transformer的模型。结果质疑变压器的时间建模能力在LTSF,并建议重新评估其适用性的额外的时间序列分析工作。如下示例transformer在时间序列的预测:

import torch  
import torch.nn as nn  
import torch.nn.functional as F  
  
class TimeSeriesTransformer(nn.Module):  
    def __init__(self, input_dim, d_model, nhead, num_layers, dropout=0.1):  
        super(TimeSeriesTransformer, self).__init__()  
        self.encoder_layer = nn.TransformerEncoderLayer(d_model, nhead, dropout=dropout)  
        self.encoder = nn.TransformerEncoder(self.encoder_layer, num_layers=num_layers)  
        self.linear = nn.Linear(d_model, input_dim)  
          
        self.positional_encoding = nn.Parameter(torch.randn(1000, d_model))  # 假设最大序列长度为1000  
          
        self.input_dim = input_dim  
        self.d_model = d_model  
          
    def forward(self, src, src_mask=None):  
        src = src + self.positional_encoding[:src.size(0), :]  
        output = self.encoder(src, src_mask=src_mask)  
        output = self.linear(output)  
        return output  
  
# 设置模型参数  
input_dim = 1  # 时间序列特征维度  
d_model = 512  # Transformer模型的维度  
nhead = 8  # 多头注意力机制的头数  
num_layers = 6  # Transformer编码器的层数  
dropout = 0.1  # dropout率  
  
# 实例化模型  
model = TimeSeriesTransformer(input_dim, d_model, nhead, num_layers, dropout)

时间序列预测的应用领域

时间序列预测的应用是多样的和有影响力的。处理商业数据中的趋势和季节性模式对于知情决策至关重要。时间序列预测是估计未来需求的关键,有助于企业进行准确的规划。为了强调时间序列预测的重要性,请按应用领域和流行的网络架构(LSTM、GRU、BRNN、DFFNN、CNN和TCN)对深度学习研究进行分类。

能源和燃料:可再生能源使用量的激增需要精确估计,以加强电力系统规划。各种深度学习架构,包括LSTM、ENN、GRU、BRNN和TCN,已被证明在预测电力需求消耗、光伏能源负荷甚至柴油发动机的碳烟排放方面是有效的。混合架构也用于预测碳价格和能源消耗等应用。

图像和视频:广泛的研究集中在不同领域的图像和视频分析。基于卷积的网络,特别是CNN,在预测燃烧不稳定性、交通速度和检测冠状动脉狭窄方面占据主导地位。TCN在诸如从视频中估计密度图或通过面部照片动态检测压力等任务中表现突出。

金融:金融分析是一个长期存在的挑战,可以看到CNN、DNN、GRU和LSTM等各种架构的应用。比较研究分析了这些架构的有效性,强调了对创新方法的持续追求,以解决金融问题的复杂性。

环境:环境数据分析是一个流行的研究领域,利用深度学习技术进行时间序列预测。CNN和LSTM用于预测风速和温度,而TCN和ENN架构用于预测水质和需求。深度学习被应用于解决各种环境挑战,如二氧化碳排放和洪水预测。

行业:深度学习技术可用于各种工业任务,从使用TCN和BRNN的交通流量预测到LSTM在工艺规划和建筑设备识别中的应用。ENN和GRU网络有助于预测材料的使用寿命或降解。

健康状况:虽然深度学习架构在健康领域的应用非常广泛,但由于序列短和计算成本高,该领域的时间序列预测面临挑战。基于卷积的架构,如CNN,普遍用于监测睡眠阶段或预测肺炎发病率等任务。将LSTM应用于危重患者的状态预测。

其他:TCN作为通用时间序列预测的通用架构出现。其他架构,包括CNN和RNN,在不同的领域找到了应用,例如检测人类活动或异常,特别是在网络安全中。

0b053c44ba53f35d250fe555c923e896.png

项目链接:

https://github.com/thuml/Time-Series-Library

 
 
 
 

8665e438c78d369f8cf70b170299aec0.jpeg

 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)

d7944fefaa6d79e20124ea3365a27acb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值