- 单变量预测单变量
- 多变量预测单变量
- 多变量预测多变量
2016-DeepMind-WAVENET
只用cnn来做序列预测
2017-IJCAI-DARNN
A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction
1. 两个attentionn机制,input attn是使用非线性变化直接求权重,temporal attn是传统的seq2seq结构的attention机制
2. input attn的q是 temporal attn中encoder过程(LSTM)输出的hidden变量。k和v是所有衍生变量的序列信息。目的是focus当前时间t下,衍生变量的序列信息的权重。
3. temporal attn就是在衍生变量加权的情况下,focus时间步长上的权重信息
4. input attn没有加权求和操作,只是用权重乘以原始特征。 temporal attn有加权求和操作。
5. input attn的decoder过程在temporal attn的encoder过程中,作为组件包含在整个seq2seq结构。
6. 是用多变量预测单变量结构
2017-NIPS-MQRNN
A Multi-Horizon Quantile Recurrent Forecaster
有点类似于attention操作,这里是每个decoder的context vector都用一个MLP来学习
2018-CMU-TCN
An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
和WAVENET有点类似,基于cnn和rnn构建序列预测
2018-SIGIR-LSTNet
Modeling Long- and Short-Term Temporal Patterns with Deep Neural Networks
1. 卷积模块学习多变量以及short-term关系
2. LSTM+Skip Connection学习long-term和周期性关系
3. Autoregressive学习线性趋势
4. 需要提前定义skip的周期间隔p
5. 适用于多变量预测多变量
6. 是基于 y1-yt,预测y(t+h)类型
1. 卷积设计:从 168 x 862 卷积成 163 x 1, 然后有100个卷积核
2. RNN都是取最后一个step的输出hidden
3. Skip是从cnn输出构建数据以skip_period为周期聚合成6个长度的序列再用GRU提取周期序列特征
4. AR是学习近期线性变化,需要指定window长度
5. 输出是多变量维度输出
2019-TaiwanUniversity-TPA-LSTM
Temporal Pattern Attention for Multivariate Time Series Forecasting
基于LSTNet的改进,在lstm后加cnn,再用attention
2019-Amazon-DeepAR
DeepAR: Probabilistic forecasting with autoregressive recurrent networks
1. z表示item序列,x表示时间相关的衍生变量
2. 多变量预测单变量结构
3. 主要是基于LSTM去学习分布的参数
code:
训练方式:
1. 多变量预测多变量,但是不是把多变量一起作为dim输入LSTM,
而是把多变量看做多个序列,然后从多序列里面采用形成窗口数据来预测对应序列的值。
模型输入的多变量是 [序列值,日期特征(周几,小时,月份),序列编号],其中序列编号用embedding编码
2. x是 [batch,window_size,dim], y是 [batch, 1], 对应N+1的预测结果
3. 训练过程评估的是每个step输出的分布和label的分布,用likehood做损失函数,测试的时候再看传统多步长预测的RMSE
2020-ICLR-NBeats
N-BEATS: NEURAL BASIS EXPANSION ANALYSIS FOR INTERPRETABLE TIME SERIES FORECASTING
1. 基于深度网络来预测,重点还是全连接,没有用rnn, 即输入为 batch x input_size, 输出为 batch x output_size
2. 主要是可解释部分,即block的最后一个操作,
一种不操作,直接用前面的FC学好的向量分成backcast和forecast。
一种是可解释部分,主要把FC学好的向量用trend和seasoanlity的形式来表示,然后分别有backcast和forecast去训练,使模型学习到trend和seasonality的信息
3. 一个stack有多个block,一个stack就是学习一种序列的信息