2 算法展示

2.1 RNN類

在RNN中,每個時刻的輸入和之前時刻的狀態被映射到隱藏狀態中,同時根據當前的輸入和之前的狀態,預測下一個時刻的輸出。RNN的一個重要特性是可以處理變長的序列數據,因此非常適用于時序預測中的時間序列數據。另外,RNN還可以通過增加LSTM、GRU、SRU等門控機制來提高模型的表達能力和記憶能力。

2.1.1 RNN(1990)

Paper:Finding Structure in Time

RNN(循環神經網絡)是一種強大的深度學習模型,經常被用于時間序列預測。RNN通過在時間上展開神經網絡,將歷史信息傳遞到未來,從而能夠處理時間序列數據中的時序依賴性和動態變化。在RNN模型的構建中,LSTM和GRU模型常被使用,因為它們可以處理長序列,并具有記憶單元和門控機制,能夠有效地捕捉時間序列中的時序依賴性。

# RNN
model = RNNModel(
model="RNN",
hidden_dim=60,
dropout=0,
batch_size=100,
n_epochs=200,
optimizer_kwargs={"lr": 1e-3},
# model_name="Air_RNN",
log_tensorboard=True,
random_state=42,
training_length=20,
input_chunk_length=60,
# force_reset=True,
# save_checkpoints=True,
)

2.1.2 LSTM(1997)

Paper:Long Short-Term Memory

LSTM(長短期記憶)是一種常用的循環神經網絡模型,經常被用于時間序列預測。相對于基本的RNN模型,LSTM具有更強的記憶和長期依賴能力,可以更好地處理時間序列數據中的時序依賴性和動態變化。在LSTM模型的構建中,關鍵的是對LSTM單元的設計和參數調整。LSTM單元的設計可以影響模型的記憶能力和長期依賴能力,參數的調整可以影響模型的預測準確性和魯棒性。

# LSTM
model = RNNModel(
model="LSTM",
hidden_dim=60,
dropout=0,
batch_size=100,
n_epochs=200,
optimizer_kwargs={"lr": 1e-3},
# model_name="Air_RNN",
log_tensorboard=True,
random_state=42,
training_length=20,
input_chunk_length=60,
# force_reset=True,
# save_checkpoints=True,
)

2.1.3 GRU(2014)

Paper:Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

GRU(門控循環單元)是一種常用的循環神經網絡模型,與LSTM模型類似,也是專門用于處理時間序列數據的模型。GRU模型相對于LSTM模型來說,參數更少,運算速度也更快,但是仍然能夠處理時間序列數據中的時序依賴性和動態變化。在GRU模型的構建中,關鍵的是對GRU單元的設計和參數調整。GRU單元的設計可以影響模型的記憶能力和長期依賴能力,參數的調整可以影響模型的預測準確性和魯棒性。

# GRU
model = RNNModel(
model="GRU",
hidden_dim=60,
dropout=0,
batch_size=100,
n_epochs=200,
optimizer_kwargs={"lr": 1e-3},
# model_name="Air_RNN",
log_tensorboard=True,
random_state=42,
training_length=20,
input_chunk_length=60,
# force_reset=True,
# save_checkpoints=True,
)

2.1.4 SRU(2018)

Paper:Simple Recurrent Units for Highly Parallelizable Recurrence

SRU(隨機矩陣單元)是一種基于矩陣計算的循環神經網絡模型,也是專門用于處理時間序列數據的模型。SRU模型相對于傳統的LSTM和GRU模型來說,具有更少的參數和更快的運算速度,同時能夠處理時間序列數據中的時序依賴性和動態變化。在SRU模型的構建中,關鍵的是對SRU單元的設計和參數調整。SRU單元的設計可以影響模型的記憶能力和長期依賴能力,參數的調整可以影響模型的預測準確性和魯棒性。

2.2 CNN類

CNN通過卷積層和池化層等操作可以自動提取時間序列數據的特征,從而實現時序預測。在應用CNN進行時序預測時,需要將時間序列數據轉化為二維矩陣形式,然后利用卷積和池化等操作進行特征提取和壓縮,最后使用全連接層進行預測。相較于傳統的時序預測方法,CNN能夠自動學習時間序列數據中的復雜模式和規律,同時具有更好的計算效率和預測精度。

2.2.1 WaveNet(2016)

Paper:WAVENET: A GENERATIVE MODEL FOR RAW AUDIO

WaveNet是由DeepMind團隊在2016年提出的一種用于生成語音的神經網絡模型,它的核心思想是利用卷積神經網絡來模擬語音信號的波形,并使用殘差連接和門控卷積操作來提高模型的表示能力。除了用于語音生成,WaveNet還可以應用于時序預測任務。在時序預測任務中,我們需要預測給定時間序列的下一個時間步的取值。通常情況下,我們可以將時間序列看作是一個一維向量,并將其輸入到WaveNet模型中,得到下一個時間步的預測值。

在WaveNet模型的構建中,關鍵的是對卷積層的設計和參數調整。卷積層的設計可以影響模型的表達能力和泛化能力,參數的調整可以影響模型的預測準確性和魯棒性。

2.2.2 TCN(2018)

Paper:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling

TCN(Temporal Convolutional Network)是一種基于卷積神經網絡的時序預測算法,其設計初衷是為了解決傳統RNN(循環神經網絡)在處理長序列時存在的梯度消失和計算復雜度高的問題。。相比于傳統的RNN等序列模型,TCN利用卷積神經網絡的特點,能夠在更短的時間內對長期依賴進行建模,并且具有更好的并行計算能力。TCN模型由多個卷積層和殘差連接組成,其中每個卷積層的輸出會被輸入到后續的卷積層中,從而實現對序列數據的逐層抽象和特征提取。TCN還采用了類似于ResNet的殘差連接技術,可以有效地減少梯度消失和模型退化等問題,而空洞卷積可以擴大卷積核的感受野,從而提高模型的魯棒性和準確性。

TCN模型的結構如下圖所示:

TCN模型的預測過程包括以下幾個步驟:

TCN模型的優點包括:

# 模型構建
TCN = TCNModel(
input_chunk_length=13,
output_chunk_length=12,
n_epochs=200,
dropout=0.1,
dilation_base=2,
weight_norm=True,
kernel_size=5,
num_filters=3,
random_state=0,
)
# 模型訓練,無協變量
TCN.fit(series=train,
val_series=val,
verbose=True
)
# 模型訓練,有協變量
TCN.fit(series=train,
past_covariates=train_month,
val_series=val,
val_past_covariates=val_month,
verbose=True
)
# 模型推理
backtest = TCN.historical_forecasts(
series=ts,
# past_covariates=month_series,
start=0.75,
forecast_horizon=10,
retrain=False,
verbose=True,
)
# 成果可視化
ts.plot(label="actual")
backtest.plot(label="backtest (D=10)")
plt.legend()
plt.show()

數據歸一化對時序預測影響探究?

原始數據是否按月份生成協變量,是否歸一化,對最終時序預測效果影響重大,就本實驗場景而言,原始數據為百分制更適用于無歸一化&有協變量方式,協變量需根據實際業務表現進行選擇

歸一化&無協變量

歸一化&有協變量


無歸一化&無協變量

無歸一化&有協變量

2.2.3 DeepTCN(2019)

Paper:Probabilistic Forecasting with Temporal Convolutional Neural Network

Code:deepTCN

DeepTCN(Deep Temporal Convolutional Networks)是一種基于深度學習的時序預測模型,它是對傳統TCN模型的改進和擴展。DeepTCN模型使用了一組1D卷積層和最大池化層來處理時序數據,并通過堆疊多個這樣的卷積-池化層來提取時序數據的不同特征。在DeepTCN模型中,每個卷積層都包含多個1D卷積核和激活函數,并且使用殘差連接和批量歸一化技術來加速模型的訓練。

DeepTCN模型的訓練過程通常涉及以下幾個步驟:

模型訓練輸入輸出長度對時序預測影響探究?

就本實驗場景而言,受原始數據樣本限制,輸入輸出長度和batch_size無法過大調整,從性能角度建議選用大batch_size&短輸入輸出方式

# 短輸入輸出
deeptcn = TCNModel(
input_chunk_length=13,
output_chunk_length=12,
kernel_size=2,
num_filters=4,
dilation_base=2,
dropout=0.1,
random_state=0,
likelihood=GaussianLikelihood(),
)
# 長輸入輸出
deeptcn = TCNModel(
input_chunk_length=60,
output_chunk_length=20,
kernel_size=2,
num_filters=4,
dilation_base=2,
dropout=0.1,
random_state=0,
likelihood=GaussianLikelihood(),
)
# 長輸入輸出,大batch_size
deeptcn = TCNModel(
batch_size=60,
input_chunk_length=60,
output_chunk_length=20,
kernel_size=2,
num_filters=4,
dilation_base=2,
dropout=0.1,
random_state=0,
likelihood=GaussianLikelihood(),
)
# 短輸入輸出,大batch_size
deeptcn = TCNModel(
batch_size=60,
input_chunk_length=13,
output_chunk_length=12,
kernel_size=2,
num_filters=4,
dilation_base=2,
dropout=0.1,
random_state=0,
likelihood=GaussianLikelihood(),
)

短輸入輸出

長輸入輸出

長輸入輸出,大batch_size

短輸入輸出,大batch_size

2.3 Attention類

注意力機制(Attention)是一種用于解決序列輸入數據中重要特征提取的機制,也被應用于時序預測領域。Attention機制可以自動關注時間序列數據中的重要部分,為模型提供更有用的信息,從而提高預測精度。在應用Attention進行時序預測時,需要利用Attention機制自適應地加權輸入數據的各個部分,從而使得模型更加關注關鍵信息,同時減少無關信息的影響。Attention機制不僅可以應用于RNN等序列模型,也可以應用于CNN等非序列模型,是目前時序預測領域研究的熱點之一。

2.3.1 Transformer(2017)

Paper:Attention Is All You Need

Transformer是一種廣泛應用于自然語言處理(NLP)領域的神經網絡模型,其本質是一種序列到序列(seq2seq)的模型。Transformer將序列中的每個位置視為一個向量,并使用多頭自注意力機制和前饋神經網絡來捕捉序列中的長程依賴性,從而使得模型能夠處理變長序列和不定長序列。

在時序預測任務中,Transformer模型可以將輸入序列的時間步作為位置信息,將每個時間步的特征表示為一個向量,并使用編碼器-解碼器框架進行預測。具體來說,可以將預測目標的前N個時間步作為編碼器的輸入,將預測目標的后M個時間步作為解碼器的輸入,并使用編碼器-解碼器框架進行預測。編碼器和解碼器都是由多個Transformer模塊堆疊而成,每個模塊由多頭自注意力層和前饋神經網絡層組成。

在訓練過程中,可以使用均方誤差(MSE)或平均絕對誤差(MAE)等常見的損失函數來度量模型的預測性能,使用隨機梯度下降(SGD)或Adam等優化算法來更新模型參數。在模型訓練過程中,還可以使用學習率調整、梯度裁剪等技術來加速模型的訓練和提高模型的性能。

# Transformer
model = TransformerModel(
input_chunk_length=30,
output_chunk_length=15,
batch_size=32,
n_epochs=200,
# model_name="air_transformer",
nr_epochs_val_period=10,
d_model=16,
nhead=8,
num_encoder_layers=2,
num_decoder_layers=2,
dim_feedforward=128,
dropout=0.1,
optimizer_kwargs={"lr": 1e-2},
activation="relu",
random_state=42,
# save_checkpoints=True,
# force_reset=True,
)

2.3.2 TFT(2019)

Paper:Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting

TFT(Transformer-based Time Series Forecasting)是一種基于Transformer模型的時序預測方法,它是由谷歌DeepMind團隊于2019年提出的。TFT方法的核心思想是在Transformer模型中引入時間特征嵌入(Temporal Feature Embedding)和模態嵌入(Modality Embedding)。時間特征嵌入可以幫助模型更好地學習時序數據中的周期性和趨勢性等特征,而模態嵌入可以將外部的影響因素(如氣溫、節假日等)與時序數據一起進行預測。

TFT方法可以分為兩個階段:訓練階段和預測階段。在訓練階段,TFT方法使用訓練數據來訓練Transformer模型,并使用一些技巧(如隨機掩碼、自適應學習率調整等)來提高模型的魯棒性和訓練效率。在預測階段,TFT方法使用已訓練好的模型來對未來時序數據進行預測。

與傳統的時序預測方法相比,TFT方法具有以下優點:

# TFT
model = TransformerModel(
input_chunk_length=30,
output_chunk_length=15,
batch_size=32,
n_epochs=200,
# model_name="air_transformer",
nr_epochs_val_period=10,
d_model=16,
nhead=8,
num_encoder_layers=2,
num_decoder_layers=2,
dim_feedforward=128,
dropout=0.1,
optimizer_kwargs={"lr": 1e-2},
activation="relu",
random_state=42,
# save_checkpoints=True,
# force_reset=True,
)

2.3.3 HT(2019)

HT(Hierarchical Transformer)是一種基于Transformer模型的時序預測算法,由中國香港中文大學的研究人員提出。HT模型采用分層結構來處理具有多個時間尺度的時序數據,并通過自適應注意力機制來捕捉不同時間尺度的特征,以提高模型的預測性能和泛化能力。

HT模型由兩個主要組件組成:多尺度注意力模塊和預測模塊。在多尺度注意力模塊中,HT模型通過自適應多頭注意力機制來捕捉不同時間尺度的特征,并將不同時間尺度的特征融合到一個共同的特征表示中。在預測模塊中,HT模型使用全連接層對特征表示進行預測,并輸出最終的預測結果。

HT模型的優點在于,它能夠自適應地處理具有多個時間尺度的時序數據,并通過自適應多頭注意力機制來捕捉不同時間尺度的特征,以提高模型的預測性能和泛化能力。此外,HT模型還具有較好的可解釋性和泛化能力,可以適用于多種時序預測任務。

2.3.4 LogTrans(2019)

Paper:Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting

Code:Autoformer

LogTrans提出了一種 Transformer 時間序列預測改進方法,包括卷積自注意力(生成具有因果卷積的查詢和密鑰,將局部環境納入注意力機制)和LogSparse Transformer(Transformer 的內存效率較高的變體,用于降低長時間序列建模的內存成本),主要用于解決Transformer時間序列預測與位置無關的注意力和記憶瓶頸兩個主要弱點。

2.3.5 DeepTTF(2020)

DeepTTF(Deep Temporal Transformational Factorization)是一種基于深度學習和矩陣分解的時序預測算法,由美國加州大學洛杉磯分校的研究人員提出。DeepTTF模型將時間序列分解為多個時間段,并使用矩陣分解技術對每個時間段進行建模,以提高模型的預測性能和可解釋性。

DeepTTF模型由三個主要組件組成:時間分段、矩陣分解和預測器。在時間分段階段,DeepTTF模型將時間序列分為多個時間段,每個時間段包含連續的一段時間。在矩陣分解階段,DeepTTF模型將每個時間段分解為兩個低維矩陣,分別表示時間和特征之間的關系。在預測器階段,DeepTTF模型使用多層感知機對每個時間段進行預測,并將預測結果組合成最終的預測序列。

DeepTTF模型的優點在于,它能夠有效地捕捉時間序列中的局部模式和全局趨勢,同時保持較高的預測精度和可解釋性。此外,DeepTTF模型還支持基于時間分段的交叉驗證,以提高模型的魯棒性和泛化能力。

2.3.6 PTST(2020)

Probabilistic Time Series Transformer (PTST)是一種基于Transformer模型的時序預測算法,由Google Brain于2020年提出。該算法采用了概率圖模型來提高時序預測的準確性和可靠性,能夠在不確定性較大的時序數據中取得更好的表現。

PTST模型主要由兩個部分組成:序列模型和概率模型。序列模型采用Transformer結構,能夠對時間序列數據進行編碼和解碼,并利用自注意力機制對序列中的重要信息進行關注和提取。概率模型則引入了變分自編碼器(VAE)和卡爾曼濾波器(KF)來捕捉時序數據中的不確定性和噪聲。

具體地,PTST模型的序列模型使用Transformer Encoder-Decoder結構來進行時序預測。Encoder部分采用多層自注意力機制來提取輸入序列的特征,Decoder部分則通過自回歸方式逐步生成輸出序列。在此基礎上,概率模型引入了一個隨機變量,即時序數據的噪聲項,它被建模為一個正態分布。同時,為了減少潛在的誤差,概率模型還使用KF對序列進行平滑處理。

在訓練過程中,PTST采用了最大后驗概率(MAP)估計方法,以最大化預測的概率。在預測階段,PTST利用蒙特卡洛采樣方法來從后驗分布中抽樣,以生成一組概率分布。同時,為了衡量預測的準確性,PTST還引入了均方誤差和負對數似然(NLL)等損失函數。

2.3.7 Reformer(2020)

Paper:Reformer: The Efficient Transformer

Reformer是一種基于Transformer模型的神經網絡結構,它在時序預測任務中具有一定的應用前景。可以使用Reformer模型進行采樣、自回歸、多步預測和結合強化學習等方法來進行時序預測。在這些方法中,通過將已知的歷史時間步送入模型,然后生成未來時間步的值。Reformer模型通過引入可分離的卷積和可逆層等技術,使得模型更加高效、準確和可擴展。總之,Reformer模型為時序預測任務提供了一種全新的思路和方法。

2.3.8 Informer(2020)

Paper:Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

Code: https://github.com/zhouhaoyi/Informer2020

Informer是一種基于Transformer模型的時序預測方法,由北京大學深度學習與計算智能實驗室于2020年提出。與傳統的Transformer模型不同,Informer在Transformer模型的基礎上引入了全新的結構和機制,以更好地適應時序預測任務。Informer方法的核心思想包括:

在訓練階段,Informer方法可以使用多種損失函數(如平均絕對誤差、平均平方誤差、L1-Loss等)來訓練模型,并使用Adam優化算法來更新模型參數。在預測階段,Informer方法可以使用滑動窗口技術來預測未來時間點的值。

Informer方法在多個時序預測數據集上進行了實驗,并與其他流行的時序預測方法進行了比較。實驗結果表明,Informer方法在預測精度、訓練速度和計算效率等方面都表現出了很好的性能。

2.3.9 TAT(2021)

TAT(Temporal Attention Transformer)是一種基于Transformer模型的時序預測算法,由北京大學智能科學實驗室提出。TAT模型在傳統的Transformer模型基礎上增加了時間注意力機制,能夠更好地捕捉時間序列中的動態變化。

TAT模型的基本結構與Transformer類似,包括多個Encoder和Decoder層。每個Encoder層包括多頭自注意力機制和前饋網絡,用于從輸入序列中提取特征。每個Decoder層則包括多頭自注意力機制、多頭注意力機制和前饋網絡,用于逐步生成輸出序列。與傳統的Transformer模型不同的是,TAT模型在多頭注意力機制中引入了時間注意力機制,以捕捉時間序列中的動態變化。具體地,TAT模型將時間步信息作為額外的特征輸入,然后利用多頭注意力機制對時間步進行關注和提取,以輔助模型對序列中動態變化的建模。此外,TAT模型還使用了增量式訓練技術,以提高模型的訓練效率和預測性能。

2.3.10 NHT(2021)

Paper:Nested Hierarchical Transformer: Towards Accurate, Data-Efficient and Interpretable Visual Understanding

NHT(Nested Hierarchical Transformer)是一種用于時間序列預測的深度學習算法。它采用了一種嵌套的層次變換器結構,通過多層次嵌套的自注意力機制和時間重要性評估機制來實現對時間序列數據的精確預測。NHT模型通過引入更多的層次結構來改進傳統的自注意力機制,同時使用時間重要性評估機制來動態地控制不同層次的重要性,以獲得更好的預測性能。該算法在多個時間序列預測任務中表現出了優異的性能,證明了其在時序預測領域的潛力。

2.3.11 Autoformer(2021)

Paper:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting

Code:https://github.com/thuml/Autoformer

AutoFormer是一種基于Transformer結構的時序預測模型。相比于傳統的RNN、LSTM等模型,AutoFormer具有以下特點:

AutoFormer模型的具體結構類似于Transformer,包括編碼器和解碼器兩部分。編碼器由多個自注意力層和前饋神經網絡層組成,用于從輸入序列中提取特征。解碼器同樣由多個自注意力層和前饋神經網絡層組成,用于將編碼器的輸出轉化為預測序列。此外,AutoFormer還引入了跨時間步的注意力機制,可以在編碼器和解碼器中自適應地選擇時間步長。總體而言,AutoFormer是一種高效、準確的時序預測模型,適用于多種類型的時間序列預測任務。

2.3.12 Pyraformer(2022)

Paper:Pyraformer: Low-complexity Pyramidal Attention for Long-range Time Series Modeling and Forecasting

Code: https://github.com/ant-research/Pyraformer

螞蟻研究院提出一種新的基于金字塔注意力的Transformer(Pyraformer),以彌補捕獲長距離依賴和實現低時間和空間復雜性之間的差距。具體來說,通過在金字塔圖中傳遞基于注意力的信息來開發金字塔注意力機制,如圖(d)所示。該圖中的邊可以分為兩組:尺度間連接和尺度內連接。尺度間的連接構建了原始序列的多分辨率表示:最細尺度上的節點對應于原始時間序列中的時間點(例如,每小時觀測值),而較粗尺度下的節點代表分辨率較低的特征(例如,每日、每周和每月模式)。這種潛在的粗尺度節點最初是通過粗尺度構造模塊引入的。另一方面,尺度內邊緣通過將相鄰節點連接在一起來捕獲每個分辨率下的時間相關性。因此,該模型通過以較粗的分辨率捕獲此類行為,從而使信號穿越路徑的長度更短,從而為遠距離位置之間的長期時間依賴性提供了一種簡潔的表示。此外,通過稀疏的相鄰尺度內連接,在不同尺度上對不同范圍的時間依賴性進行建模,可以顯著降低計算成本。

2.3.13 FEDformer(2022)

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

Code: 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 Forecasting

Code: 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 forecasting

Code: 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-LSTM模型在訓練過程中需要使用適當的損失函數(如均方誤差),并根據需要進行超參數調整。此外,為了提高模型的泛化能力,還需要使用交叉驗證等技術進行模型評估和選擇。

2.4.7 NeuralProphet(2021)

Paper:Neural Forecasting at Scale

NeuralProphet是Facebook提供的基于神經網絡的時間序列預測框架,它在Prophet框架的基礎上增加了一些神經網絡結構,可以更準確地預測具有復雜非線性趨勢和季節性的時間序列數據。

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
)

文章轉自微信公眾號@算法進階

上一篇:

LSTM原理及生成藏頭詩(Python)

下一篇:

深入LSTM神經網絡的時間序列預測
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費