準確的預測是復雜的,促使經典方法將時間序列分解為這些分量進行單獨的預測?;跀祿诰虻募夹g對于理解不規則分量特別有用,這有助于準確預測。時間序列以圖形方式表示,時間在x軸上,記錄值在y軸上,便于視覺特征檢測,如振蕩幅度、季節、周期和異常。

時間序列,或按時間排序的數據序列,提供了對能源,氣象,金融,健康,交通和工業等不同領域的見解。時間序列預測對決策至關重要,可預測未來價值,影響減少化石燃料等戰略。它有助于評估可再生能源和能源部門的電力需求。

氣象學中可以用于預測天氣。金融利用它來預測股市,而健康涉及疾病傳播預測。交通依賴于速度和流量預測,該行業將其用于生產和耐用性預測。深度學習在機器學習中越來越受歡迎,它被用于基于非線性關系的時間序列預測。

時間序列數據的研究包括操縱數值數據進行分類,預測和預測。統計方法采用多種模型,例如譜分析技術、自回歸移動平均(阿爾馬)、移動平均(MA)、自回歸(AR)和AR集成MA(ARIMA)。

時間序列預測的深度學習模型

時間序列預測的發展已經從傳統的統計方法轉向機器學習技術,最近又出現了基于深度學習的解決方案。正如圖3所示,現有工作可以根據其主干架構分為五類,即基于MLP(多層感知機)、基于RNN(遞歸神經網絡)、基于CNN(卷積神經網絡)、基于GNN(圖神經網絡)和基于Transformer的模型。

深度前饋神經網絡(DFFNN):DFFNN通常被稱為多層感知器,旨在解決單層神經網絡在學習特定功能方面的局限性。它的架構包括一個輸入層、一個輸出層和各種隱藏層。每個隱藏層包含可變數量的神經元,這些神經元在配置過程中確定。

連續層中神經元之間的連接通過在網絡訓練期間計算的權重來建模。這些權重使用梯度下降優化來最小化成本函數,并且反向傳播算法計算成本函數的梯度。每一層中的激活值由前饋過程確定,在時間序列預測中,大多數層采用整流線性單位函數,輸出層采用雙曲正切函數。

遞歸神經網絡(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,已被證明在預測電力需求消耗、光伏能源負荷甚至柴油發動機的碳煙排放方面是有效的?;旌霞軜嬕灿糜陬A測碳價格和能源消耗等應用。

圖像和視頻:廣泛的研究集中在不同領域的圖像和視頻分析。基于卷積的網絡,特別是CNN,在預測燃燒不穩定性、交通速度和檢測冠狀動脈狹窄方面占據主導地位。TCN在諸如從視頻中估計密度圖或通過面部照片動態檢測壓力等任務中表現突出。

金融:金融分析是一個長期存在的挑戰,可以看到CNN、DNN、GRU和LSTM等各種架構的應用。比較研究分析了這些架構的有效性,強調了對創新方法的持續追求,以解決金融問題的復雜性。

環境:環境數據分析是一個流行的研究領域,利用深度學習技術進行時間序列預測。CNN和LSTM用于預測風速和溫度,而TCN和ENN架構用于預測水質和需求。深度學習被應用于解決各種環境挑戰,如二氧化碳排放和洪水預測。

行業:深度學習技術可用于各種工業任務,從使用TCN和BRNN的交通流量預測到LSTM在工藝規劃和建筑設備識別中的應用。ENN和GRU網絡有助于預測材料的使用壽命或降解。

健康狀況:雖然深度學習架構在健康領域的應用非常廣泛,但由于序列短和計算成本高,該領域的時間序列預測面臨挑戰。基于卷積的架構,如CNN,普遍用于監測睡眠階段或預測肺炎發病率等任務。將LSTM應用于危重患者的狀態預測。

其他:TCN作為通用時間序列預測的通用架構出現。其他架構,包括CNN和RNN,在不同的領域找到了應用,例如檢測人類活動或異常,特別是在網絡安全中。

文章轉自微信公眾號@Python人工智能前沿

上一篇:

神經網絡算法,超強總結!

下一篇:

完整解讀!機器學習模型評估指標!
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

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

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

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

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

#AI深度推理大模型API

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

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