【MATLAB第4期】基于LSTM多輸入多輸出預(yù)測,含滑動窗口,預(yù)測未來,多步單步預(yù)測分析


一、數(shù)據(jù)說明
本文總共1400個數(shù)據(jù) ?;瑒哟翱跒?2,預(yù)測步數(shù)為100(預(yù)測1301-1400數(shù)據(jù)). 多步預(yù)測值為3 。 ?
訓(xùn)練集輸入樣本數(shù)據(jù)格式: 1286*12 // ?1286*12 ?輸入 ? 1286 *3輸出
即: 樣本1: 1-12 個數(shù)據(jù) ?→ 預(yù)測 13-15
樣本2:2-13 個數(shù)據(jù) ? →預(yù)測 14-16
樣本1286:1286-1297 個數(shù)據(jù) →預(yù)測1298:1300
測試集輸入樣本格式 100*12 ? // ?100*12 輸入 ? 100*3輸出
即: 樣本1: 1289-1300 個數(shù)據(jù) ?→ ?預(yù)測 1301-1303
樣本2:1290-1301 個數(shù)據(jù) ? → 預(yù)測 1302-1304
樣本100:1388-1399 個數(shù)據(jù) ?→ ?預(yù)測 1400-1402
二、多步預(yù)測分析
研究多步預(yù)測分別為1 / 2 /3時對應(yīng)的預(yù)測效果
(解釋說明:若為1時,前12個數(shù)據(jù)預(yù)測后第13步數(shù)據(jù);若為2時,前12個數(shù)據(jù)預(yù)測后第14步數(shù)據(jù);若為3時,前12個數(shù)據(jù)預(yù)測后第15步數(shù)據(jù))
單步逐步預(yù)測:YPred_1:取測試集預(yù)測結(jié)果中,100個樣本中每個樣本分別預(yù)測的第一個值即 (1289-1399)→1301-1400(第100次預(yù)測時,樣本100:1388-1399 個數(shù)據(jù) ?→ ?預(yù)測 1400)
雙步逐步預(yù)測:YPred_2:取測試集預(yù)測結(jié)果中,100個樣本中每個樣本分別預(yù)測的第二個值即 (1289-1399)→1302-1401(刪去預(yù)測的第1401值) +YPred_1預(yù)測的第一個值 1301(第100次預(yù)測時,樣本100:1388-1399 個數(shù)據(jù) ?→ ?預(yù)測 1401)
三步逐步預(yù)測:YPred_3:取測試集預(yù)測結(jié)果中,100個樣本中每個樣本分別預(yù)測的第三個值即(1289-1399)→ 1303-1402 (刪去預(yù)測的第1401-1402值)+YPred_1預(yù)測的前兩個值 1301-1302(第100次預(yù)測時,樣本100:1388-1399 個數(shù)據(jù) ?→ ?預(yù)測 1402)
三、預(yù)測結(jié)果分析
YPred_1預(yù)測結(jié)果
MAE = ? ?0.0659
RMSE = ? ?0.0813
MAPE = ? ?0.0073
R = ? ?0.9779

YPred_2預(yù)測結(jié)果
MAE = ? ?0.1013
RMSE = ? ?0.1246
MAPE = ? ?0.0112
R = ? ?0.9483

YPred_3預(yù)測結(jié)果
MAE = ? ?0.1452
RMSE = ? ?0.1770
MAPE = ? ?0.0161
R = ? ?0.8956

四、結(jié)論
通過以上可以看出, 單步預(yù)測效果要比多步(間隔)預(yù)測好。
五、預(yù)測未來思路(目前這部分源碼還沒有案例,后期會更新)
我們可以增大多步預(yù)測數(shù)值,來預(yù)測未來結(jié)果 ,如前面所說 ,多步預(yù)測參數(shù)為3,滑動窗口為12時,可以通過輸入1388-1399預(yù)測1400-1402 。那么輸入1389-1400就可以預(yù)測到1403數(shù)據(jù)了 。
有兩種思路: 第一種思路預(yù)測結(jié)果會較差,即用未來預(yù)測結(jié)果預(yù)測未來 ,即我用1390-1401(此時1401為預(yù)測結(jié)果)預(yù)測1402-1404, 1391-1402預(yù)測1403-1404…… ?這種思路缺點是會造成誤差積累, 影響數(shù)據(jù)特征處理,最后會逐步趨于一條直線。
第二種思路預(yù)測結(jié)果,即調(diào)大多步預(yù)測值,一般適合數(shù)據(jù)量足夠,且呈周期性變化,且數(shù)據(jù)趨勢沒有明顯異常情況。如要預(yù)測未來20個值,除了調(diào)整滑動窗口,還可以增大多步預(yù)測值,如滑動窗口保持不變,多步預(yù)測設(shè)置為10 ,即我用1389-1400預(yù)測 1401-1420 ,一步到位。
第二種思路優(yōu)點是短期預(yù)測結(jié)果會更接近現(xiàn)實,缺點是調(diào)參困難,如滑動窗口設(shè)置合理性, 以及無法預(yù)測超長期數(shù)據(jù) ,比如總共1400數(shù)據(jù),你想預(yù)測未來1000個數(shù)據(jù),如果歷史數(shù)據(jù)基本保持一個趨勢還好, 但如果數(shù)據(jù)曲線比較復(fù)雜,就會導(dǎo)致訓(xùn)練樣本數(shù)不夠,或者說不具備代表性。
六、獲取方式
【獲取鏈接】 ? ??https://mbd.pub/o/bread/mbd-Y5uXm5tq
后續(xù)將在此鏈接永久更新預(yù)測未來的案例代碼,以及自己調(diào)試參數(shù)的心得,拭目以待吧!
如果覺得本文對你有幫助的話,麻煩點個關(guān)注收藏,后期會出視頻操作,對數(shù)據(jù)處理這塊兒進(jìn)行講解。