时间序列预测-深度学习方法

一、LSTM

class LSTM(nn.Module):
    def __init__(self, input_size=1, hidden_layer_size=100, output_size=1):
        super().__init__()
        self.hidden_layer_size = hidden_layer_size

        self.lstm = nn.LSTM(input_size, hidden_layer_size)

        self.linear = nn.Linear(hidden_layer_size, output_size)

        self.hidden_cell = (torch.zeros(1,1,self.hidden_layer_size),
                            torch.zeros(1,1,self.hidden_layer_size)) # (num_layers * num_directions, batch_size, hidden_size)

    def forward(self, input_seq):
        lstm_out, self.hidden_cell = self.lstm(input_seq.view(len(input_seq) ,1, -1), self.hidden_cell)
        predictions = self.linear(lstm_out.view(len(input_seq), -1))
        return predictions[-1]

细节问题:
在这里插入图片描述

二、Transformer

transformer-time-series-prediction时序预测代码
在这里插入图片描述

三、Informer

大名鼎鼎的Informer,AAAI 2021 Best Paper提出的模型,是对Transformer的改进。

首先介绍一个新任务,LSTF(Long Sequence Time-Series Forecasting),即长序列预测任务。刚刚我们提到的LSTM模型,往往以滑动窗口(或动态解码)的形式做长序列预测,随着时间步的增长,预测误差会逐渐放大。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Informer2020原作者代码

args.seq_len = 48 # input sequence length of Informer encoder
args.label_len = 24 # start token length of Informer decoder
args.pred_len = 24 # prediction sequence length

代码中的以上参数配置表示:1~48时间步为encoder输入,25~72时间步为decoder输入(其中49~72时间步被置为0),25~72时间步为decoder输出。可以结合着下图来理解。

在这里插入图片描述

另一个容易混淆的参数是timeenc。timeenc = 0 if args.embed!=‘timeF’ else 1,如果timeenc为1,将考虑更多可能的周期信息。

四、一些重要的库

以下是一些学习过程中接触到的、关于时序任务的开源库的整理。

https://github.com/linkedin/luminol

luminol支持两大功能:时序异常检测、两条时间序列的相关性计算。

GitHub - jdb78/pytorch-forecasting: Time series forecasting with PyTorch

pytorch-forecasting是一个基于pytorch的时序预测库,内嵌了一系列模型,如LSTM、DeepAR、Transformer、N-BEATS等。

Anomaly Detection Toolkit (ADTK)

adtk提供了通过三大组件,提供基本的异常检测算法(Detector)、异常特征加工(Transformer)、处理流程控制(Aggregator)等功能。注意这里真的只是基本算法,例如在异常检测中,通过阈值/分位数/滑动窗口/自回归等方式判断异常,没有高级的检测模型。

https://github.com/alexminnaar/time-series-classification-and-clustering

https://github.com/FilippoMB/Time-series-classification-and-clustering-with-Reservoir-Computing

GitHub - wannesm/dtaidistance: Time series distances: Dynamic Time Warping (DTW)

tslearn’s documentation - tslearn 0.5.1.0 documentation

以上几个项目与时间序列聚类任务相关。

GitHub - MaxBenChrist/awesome_time_series_in_python: This curated list contains python packages for time series analysis

时间序列相关工具、模型、数据集汇总。

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值