色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 時(shí)序預(yù)測的深度學(xué)習(xí)算法介紹(2)

          時(shí)序預(yù)測的深度學(xué)習(xí)算法介紹(2)

          發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2023-07-25 來源:工程師 發(fā)布文章
          2.2 CNN類

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

          2.2.1 WaveNet(2016)

          Paper:WAVENET: A GENERATIVE MODEL FOR RAW AUDIO

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

          在WaveNet模型的構(gòu)建中,關(guān)鍵的是對卷積層的設(shè)計(jì)和參數(shù)調(diào)整。卷積層的設(shè)計(jì)可以影響模型的表達(dá)能力和泛化能力,參數(shù)的調(diào)整可以影響模型的預(yù)測準(zhǔn)確性和魯棒性。

          2.2.2 TCN(2018)

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

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

          TCN模型的結(jié)構(gòu)如下圖所示:

          圖片


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

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

          TCN模型的優(yōu)點(diǎn)包括:

          • 能夠處理長序列數(shù)據(jù),并且具有良好的并行性。
          • 通過引入殘差連接和空洞卷積等技術(shù),避免了梯度消失和過擬合的問題。
          • 相對于傳統(tǒng)RNN模型,TCN模型具有更高的計(jì)算效率和預(yù)測準(zhǔn)確率。


          # 模型構(gòu)建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,)# 模型訓(xùn)練,無協(xié)變量TCN.fit(series=train,        val_series=val,        verbose=True)# 模型訓(xùn)練,有協(xié)變量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()

          數(shù)據(jù)歸一化對時(shí)序預(yù)測影響探究?

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

          圖片

          歸一化&無協(xié)變量


          圖片

          歸一化&有協(xié)變量


          圖片

          無歸一化&無協(xié)變量


          圖片

          無歸一化&有協(xié)變量


          2.2.3 DeepTCN(2019)

          Paper:Probabilistic Forecasting with Temporal Convolutional Neural Network.Code:deepTCN

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

          DeepTCN模型的訓(xùn)練過程通常涉及以下幾個步驟:

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

          模型訓(xùn)練輸入輸出b長度對時(shí)序預(yù)測影響探究?

          就本實(shí)驗(yàn)場景而言,受原始數(shù)據(jù)樣本限制,輸入輸出長度和batch_size無法過大調(diào)整,從性能角度建議選用大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


          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: AI

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉