用R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時間序列:多層感知器和極限學(xué)習(xí)機(jī)
原文鏈接:http://tecdat.cn/?p=16392
原文出處:拓端數(shù)據(jù)部落公眾號
?
對于此示例,我將對R中的時間序列進(jìn)行建模。我將最后24個觀察值保留為測試集,并將使用其余的觀察值來擬合神經(jīng)網(wǎng)絡(luò)。當(dāng)前有兩種類型的神經(jīng)網(wǎng)絡(luò)可用,多層感知器;和極限學(xué)習(xí)機(jī)。
# 擬合 多層感知器
mlp.fit <- mlp(y.in)
plot(mlp.fit)
print(mlp.fit)
這是使MLP網(wǎng)絡(luò)適合時間序列的基本命令。這將嘗試自動指定自回歸輸入和時間序列的必要預(yù)處理。利用預(yù)先指定的參數(shù),它訓(xùn)練了20個用于生成整體預(yù)測的網(wǎng)絡(luò)和一個具有5個節(jié)點的隱藏層。print
是輸出擬合網(wǎng)絡(luò)的摘要:
MLP fit with 5 hidden nodes and 20 repetitions.
Series modelled in differences: D1.
Univariate lags: (1,3,4,6,7,8,9,10,12)
Deterministic seasonal dummies included.
Forecast combined using the median operator.
MSE: 6.2011.
該函數(shù)選擇了自回歸滯后,并將虛擬變量用于季節(jié)性趨勢。使用plot
顯示網(wǎng)絡(luò)的體系結(jié)構(gòu)(圖1)。
?

圖1.輸出?plot(mlp.fit).
淺紅色輸入代表用于編碼季節(jié)性的二進(jìn)制虛擬變量,而灰色輸入則是自回歸滯后項。要生成預(yù)測,您可以輸入:
forecast(mlp.fit,h=tst.n)
圖2顯示了整體預(yù)測,以及各個神經(jīng)網(wǎng)絡(luò)的預(yù)測。

圖2.?plot
MLP預(yù)測的輸出。
您還可以選擇隱藏節(jié)點的數(shù)量。
# 自動擬合 MLP
hd.auto.type="valid"
這將評估1到10個隱藏節(jié)點,并選擇驗證集MSE上的最佳節(jié)點。也可以使用交叉驗證。輸出誤差:
MSE
H.1 ?0.0083
H.2 ?0.0066
H.3 ?0.0065
H.4 ?0.0066
H.5 ?0.0071
H.6 ?0.0074
H.7 ?0.0061
H.8 ?0.0076
H.9 ?0.0083
H.10 0.0076
ELM幾乎以相同的方式工作。
# Fit ELM
elm.fit <- elm(y.in)
print(elm.fit)
plot(elm.fit)
)
以下是模型摘要:
ELM fit with 100 hidden nodes and 20 repetitions.
Series modelled in differences: D1.
Univariate lags: (1,3,4,6,7,8,9,10,12)
Deterministic seasonal dummies included.
Forecast combined using the median operator.
Output weight estimation using: lasso.
MSE: 83.0044.
在圖3的網(wǎng)絡(luò)體系結(jié)構(gòu)中只有用黑線連接到輸出層的節(jié)點才有助于預(yù)測。其余的連接權(quán)重已縮小為零。

圖3. ELM網(wǎng)絡(luò)架構(gòu)。
該程序包在R中實現(xiàn)了層次時間預(yù)測。可以通過以下方式進(jìn)行操作:
forecastfunction=mlp.thief
因為對于這個簡單的示例,我保留了一些測試集,所以我將預(yù)測與指數(shù)平滑進(jìn)行比較:
?
METHODMAEMLP (5 nodes)62.471MLP (auto)48.234ELM48.253THieF-MLP45.906ETS64.528
像MAPA這樣的時間層次結(jié)構(gòu)使您的預(yù)測更可靠,更準(zhǔn)確。但是,使用神經(jīng)網(wǎng)絡(luò)會明顯增加計算成本!

最受歡迎的見解
1.用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類
2.Python中利用長短期記憶模型LSTM進(jìn)行時間序列預(yù)測分析 – 預(yù)測電力消耗數(shù)據(jù)
3.python在Keras中使用LSTM解決序列問題
4.Python中用PyTorch機(jī)器學(xué)習(xí)分類預(yù)測銀行客戶流失模型
5.R語言多元Copula GARCH 模型時間序列預(yù)測
6.在r語言中使用GAM(廣義相加模型)進(jìn)行電力負(fù)荷時間序列分析
7.R語言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預(yù)測時間序列數(shù)
8.R語言估計時變VAR模型時間序列的實證研究分析案例
9.用廣義加性模型GAM進(jìn)行時間序列分析