原文鏈接:http://tecdat.cn/?p=16392
對於此示例,我將對R中的時間序列進行建模。我將最后24個觀察值保留為測試集,並將使用其余的觀察值來擬合神經網絡。當前有兩種類型的神經網絡可用,多層感知器;和極限學習機。
-
-
# 擬合 多層感知器
-
mlp.fit <- mlp(y.in)
-
plot(mlp.fit)
-
print(mlp.fit)
這是使MLP網絡適合時間序列的基本命令。這將嘗試自動指定自回歸輸入和時間序列的必要預處理。利用預先指定的參數,它訓練了20個用於生成整體預測的網絡和一個具有5個節點的隱藏層。print
是輸出擬合網絡的摘要:
-
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.
該函數選擇了自回歸滯后,並將虛擬變量用於季節性趨勢。使用plot
顯示網絡的體系結構(圖1)。
圖1.輸出 plot(mlp.fit).
淺紅色輸入代表用於編碼季節性的二進制虛擬變量,而灰色輸入則是自回歸滯后項。要生成預測,您可以輸入:
forecast(mlp.fit,h=tst.n)
圖2顯示了整體預測,以及各個神經網絡的預測。
圖2. plot
MLP預測的輸出。
您還可以選擇隱藏節點的數量。
-
# 自動擬合 MLP
-
hd.auto.type="valid"
這將評估1到10個隱藏節點,並選擇驗證集MSE上的最佳節點。也可以使用交叉驗證。輸出誤差:
-
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的網絡體系結構中只有用黑線連接到輸出層的節點才有助於預測。其余的連接權重已縮小為零。
圖3. ELM網絡架構。
該程序包在R中實現了層次時間預測。可以通過以下方式進行操作:
-
-
forecastfunction=mlp.thief
因為對於這個簡單的示例,我保留了一些測試集,所以我將預測與指數平滑進行比較:
METHOD | MAE |
---|---|
MLP (5 nodes) | 62.471 |
MLP (auto) | 48.234 |
ELM | 48.253 |
THieF-MLP | 45.906 |
ETS | 64.528 |
像MAPA這樣的時間層次結構使您的預測更可靠,更准確。但是,使用神經網絡會明顯增加計算成本!
最受歡迎的見解
1.用於NLP的Python:使用Keras的多標簽文本LSTM神經網絡分類
2.Python中利用長短期記憶模型LSTM進行時間序列預測分析 – 預測電力消耗數據
4.Python中用PyTorch機器學習分類預測銀行客戶流失模型
6.在r語言中使用GAM(廣義相加模型)進行電力負荷時間序列分析