博客專欄

        EEPW首頁 > 博客 > 時序預測的深度學習算法介紹(2)

        時序預測的深度學習算法介紹(2)

        發布人:數據派THU 時間:2023-07-25 來源:工程師 發布文章
        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模型的預測過程包括以下幾個步驟:

        • 輸入層:接收時間序列數據的輸入。
        • 卷積層:采用一維卷積對輸入數據進行特征提取和抽象,每個卷積層包含多個卷積核,可以捕獲不同尺度的時間序列模式。
        • 殘差連接:類似于ResNet,通過將卷積層的輸出與輸入進行殘差連接,可以有效地減少梯度消失和模型退化等問題,提高模型的魯棒性。
        • 重復堆疊:重復堆疊多個卷積層和殘差連接,逐層提取時間序列數據的抽象特征。
        • 池化層:在最后一個卷積層之后添加一個全局平均池化層,將所有特征向量進行平均,得到一個固定長度的特征向量。
        • 輸出層:將池化層的輸出通過一個全連接層進行輸出,得到時間序列的預測值。

        TCN模型的優點包括:

        • 能夠處理長序列數據,并且具有良好的并行性。
        • 通過引入殘差連接和空洞卷積等技術,避免了梯度消失和過擬合的問題。
        • 相對于傳統RNN模型,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模型的訓練過程通常涉及以下幾個步驟:

        • 數據預處理:將原始的時序數據進行標準化和歸一化處理,以減小不同特征的尺度不一致對模型訓練的影響。
        • 模型構建:使用多個1D卷積層和最大池化層構建DeepTCN模型,可以使用深度學習框架,如TensorFlow、PyTorch等來構建模型。
        • 模型訓練:使用訓練數據集對DeepTCN模型進行訓練,并通過損失函數(如MSE、RMSE等)來度量模型的預測性能。在訓練過程中,可以使用優化算法(如SGD、Adam等)來更新模型參數,并使用批量歸一化和DeepTCN等技術來提高模型的泛化能力。
        • 模型評估:使用測試數據集對訓練好的DEEPTCN模型進行評估,并計算模型的性能指標,如平均絕對誤差(MAE)、平均絕對百分比誤差(MAPE)等。

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

        就本實驗場景而言,受原始數據樣本限制,輸入輸出長度和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_sizedeeptcn = 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_sizedeeptcn = 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


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巴塘县| 宜都市| 呼图壁县| 安远县| 霍林郭勒市| 东山县| 长寿区| 青河县| 海伦市| 鄂尔多斯市| 孝感市| 曲阜市| 东丽区| 奎屯市| 买车| 大兴区| 安溪县| 丹东市| 集安市| 汉阴县| 延川县| 西乌珠穆沁旗| 罗田县| 孟州市| 临西县| 宜州市| 乡宁县| 资中县| 方山县| 桃江县| 台中县| 安龙县| 运城市| 天台县| 阳原县| 徐水县| 娄烦县| 芜湖市| 四会市| 太保市| 台湾省|