基于貝葉斯優(yōu)化算法的深度學(xué)習(xí)LSTM模型時(shí)間序列多步預(yù)測(cè)Matlab程序代碼

? ? ? ?利用深度學(xué)習(xí)進(jìn)行序列預(yù)測(cè)時(shí)患整,模型參數(shù)的確定是很頭疼的問(wèn)題拜效,因?yàn)槟P蛥?shù)的選擇對(duì)于結(jié)果的影響非常大。現(xiàn)在最流行的深度學(xué)習(xí)模型當(dāng)屬長(zhǎng)短期記憶(LSTM)了各谚,它屬于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的一種改進(jìn)紧憾,具有很多優(yōu)點(diǎn),可以避免模型發(fā)生梯度消失和梯度爆炸昌渤,而且具有長(zhǎng)短期記憶的功能赴穗。我基于Matlab2021編寫了一個(gè)BO-LSTM算法,其中BO指的是貝葉斯(Bayesian)算法膀息,利用BO算法對(duì)LSTM模型的超參數(shù)進(jìn)行優(yōu)化選擇般眉,包括采取的歷史回歸長(zhǎng)度、隱藏層數(shù)潜支、隱藏層單元數(shù)甸赃、單元隨機(jī)丟棄率、初始學(xué)習(xí)率冗酿,這樣可以解決模型確定的問(wèn)題埠对。該程序可以直接用于對(duì)于時(shí)間序列的多步提前預(yù)測(cè)络断。為方便理解,我自定義了一個(gè)時(shí)間序列项玛,然后進(jìn)行了提前24步預(yù)測(cè)貌笨。可以自己根據(jù)需要進(jìn)行修改襟沮,用來(lái)預(yù)測(cè)自己的序列锥惋。

? ? ? ?下面簡(jiǎn)單對(duì)程序代碼進(jìn)行一個(gè)說(shuō)明。

? ? ? ?這個(gè)是程序運(yùn)行的結(jié)果臣嚣。結(jié)果展示了單步預(yù)測(cè)(即1步預(yù)測(cè))和24步預(yù)測(cè)的結(jié)果净刮。數(shù)據(jù)為隨機(jī)生成剥哑。若有自己的數(shù)據(jù)可以讀取硅则,然后自行調(diào)參。這里橫坐標(biāo)的意義為:<=0的表示歷史數(shù)據(jù)株婴,>0的表示為未來(lái)數(shù)據(jù)怎虫。整體效果還是比較好的。

? ? ? ? 下面詳細(xì)分析了24步預(yù)測(cè)誤差結(jié)果困介。包括絕對(duì)誤差大审、MAE症见、RMSE勒庄、MAPE朝蜘〗裕總體來(lái)說(shuō)結(jié)果還行睡汹,但是這個(gè)是因?yàn)樾蛄斜旧砭哂幸欢ㄒ?guī)律杂曲。這個(gè)結(jié)果每次是不一樣的弃理,有多種原因想罕,模型訓(xùn)練結(jié)果也存在一定離散性屿良,導(dǎo)致結(jié)果有所不同圈澈。

? ? ? ? ? ? 模型的訓(xùn)練過(guò)程,貝葉斯優(yōu)化我選取了最大迭代步數(shù)為20步尘惧,通常默認(rèn)為30步康栈。下面是迭代過(guò)程的目標(biāo)函數(shù)示意圖。貝葉斯算法可以根據(jù)當(dāng)前的歷史結(jié)果喷橙,預(yù)測(cè)下一個(gè)最優(yōu)點(diǎn)的位置啥么,然后確定參數(shù),然后訓(xùn)練贰逾,得到結(jié)果悬荣,再以此往復(fù)。

? ? ? ? ? ? 因?yàn)榈枰?0步似踱,我的程序默認(rèn)選擇不顯示每次迭代的收斂過(guò)程隅熙。如果需要看的話可以自己修改程序代碼稽煤,將'Plots',"none", ...? 修改為'Plots',"training-progress", ...? 如果開啟了查看收斂過(guò)程,會(huì)出現(xiàn)20個(gè)下面這種圖囚戚。建議第一次運(yùn)行的時(shí)候打開,這樣可以看自己的收斂過(guò)程是否合理匾二。

? ? ? ? 下面簡(jiǎn)單說(shuō)明一下程序的實(shí)現(xiàn)思路和代碼截圖。

? ? ? ? 1.程序首先新建一個(gè)臨時(shí)文件夾,用于存放貝葉斯優(yōu)化過(guò)程的每次結(jié)果譬猫,以便優(yōu)化后進(jìn)行文件的調(diào)取染服。

? ? ? ? 2.創(chuàng)建時(shí)間序列數(shù)據(jù)柳刮。如果有真實(shí)的數(shù)據(jù)的話秉颗,建議用load或dlmread命令讀取數(shù)據(jù)文件午乓,此處必須保證時(shí)間序列變量為行向量益愈。我這里用的是隨機(jī)信號(hào)蒸其,省的還要上傳數(shù)據(jù)文件摸袁,太麻煩了蜂大。這樣一個(gè)m文件就可以搞定了。

? ? ? 3.確定要用哪些數(shù)據(jù)作為測(cè)試集,我這里是取了最后24個(gè)數(shù)據(jù)隙咸,作為測(cè)試集五督,也就相當(dāng)于未來(lái)的數(shù)據(jù)充包。其它數(shù)據(jù)同時(shí)作為訓(xùn)練集和驗(yàn)證集误证。

注意:有的研究只設(shè)置了訓(xùn)練集,然后訓(xùn)練過(guò)程盡可能保證訓(xùn)練集的誤差小。我覺(jué)得這種做法欠妥青团,很容易陷入過(guò)擬合的問(wèn)題督笆。所以我添加了驗(yàn)證集诱贿,訓(xùn)練過(guò)程需要查看驗(yàn)證集的誤差情況料扰。

? ? ? 4.設(shè)置優(yōu)化器晒杈。確定LSTM模型的哪些參數(shù)是可能需要改變的孔厉,我這里選擇了5種參數(shù),包括采取的歷史回歸長(zhǎng)度然磷、隱藏層數(shù)姿搜、隱藏層單元數(shù)、單元隨機(jī)丟棄率致份、初始學(xué)習(xí)率氮块√喜酰可以自己定義參數(shù)的范圍蝠引,這樣貝葉斯算法就可以在這些參數(shù)范圍內(nèi)進(jìn)行尋優(yōu)。最大迭代次數(shù)我設(shè)置為了20步吊洼。

? ? ? 5.調(diào)用自定義的目標(biāo)函數(shù),利用貝葉斯算法對(duì)LSTM模型的超參數(shù)進(jìn)行優(yōu)化超燃。目標(biāo)函數(shù)的定義如下(僅展示了部分代碼)。我覺(jué)得這部分是貝葉斯優(yōu)化的核心届良,有點(diǎn)類似于遺傳算法的適應(yīng)度計(jì)算士葫。

? ? ? ? 6.將訓(xùn)練的最優(yōu)結(jié)果對(duì)應(yīng)的超參數(shù)進(jìn)行讀取識(shí)別,同時(shí)讀取最優(yōu)超參數(shù)下的訓(xùn)練得到的LSTM模型屋灌。

? ? ? 7.根據(jù)最佳超參數(shù),評(píng)估訓(xùn)練集和測(cè)試集的誤差除嘹。這一步我是為了保險(xiǎn),如果只是為了預(yù)測(cè),這一步可以不要。

? ? ? 8.進(jìn)行單步預(yù)測(cè)和24步預(yù)測(cè)。我這里同時(shí)做了單步和24步預(yù)測(cè)赁温,實(shí)際上我需要的只是24步預(yù)測(cè)股囊,這個(gè)在風(fēng)電預(yù)測(cè)里面比較常見。單步預(yù)測(cè)結(jié)果我也計(jì)算了内狗,只是為了進(jìn)行一個(gè)對(duì)比⊙颐穑現(xiàn)在很多文獻(xiàn)都只對(duì)比單步預(yù)測(cè)的結(jié)果,我覺(jué)得這個(gè)是很扯的一件事情熄云。事實(shí)上,單步預(yù)測(cè)我覺(jué)得意義并不大练般,只有對(duì)未來(lái)若干數(shù)據(jù)進(jìn)行預(yù)測(cè)才有價(jià)值。當(dāng)然這只是我個(gè)人的觀點(diǎn)。歡迎大家討論谷市!

? ? ? 9.誤差分析巩梢。我這里展示了4種誤差的圖,這也是最常用的誤差評(píng)估指標(biāo)了忌警。

? ? ? 以上就是全部?jī)?nèi)容了搁拙!程序我只展示了部分,完整的下載鏈接請(qǐng)點(diǎn)擊:基于貝葉斯優(yōu)化算法的LSTM模型時(shí)間序列多步預(yù)測(cè)Matlab程序代碼。(非免費(fèi)感混,十幾塊錢端幼,權(quán)當(dāng)尊重一下勞動(dòng)吧哈哈)。如果有問(wèn)題也歡迎留言討論弧满,或者聯(lián)系我的郵箱huweicheng92@163.com婆跑,我做了一些風(fēng)速智能預(yù)測(cè)的研究,如果有能一起合作寫文章的也非常歡迎庭呜。

————————————————

版權(quán)聲明:本文為CSDN博主「hwc_yzt」的原創(chuàng)文章滑进,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明募谎。

原文鏈接:https://blog.csdn.net/weixin_38919810/article/details/124768458

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扶关,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子数冬,更是在濱河造成了極大的恐慌节槐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拐纱,死亡現(xiàn)場(chǎng)離奇詭異铜异,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)秸架,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門揍庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人东抹,你說(shuō)我怎么就攤上這事蚂子。” “怎么了缭黔?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵食茎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我试浙,道長(zhǎng)董瞻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任田巴,我火速辦了婚禮,結(jié)果婚禮上挟秤,老公的妹妹穿的比我還像新娘壹哺。我一直安慰自己,他們只是感情好艘刚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布管宵。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箩朴。 梳的紋絲不亂的頭發(fā)上岗喉,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音炸庞,去河邊找鬼钱床。 笑死,一個(gè)胖子當(dāng)著我的面吹牛埠居,可吹牛的內(nèi)容都是我干的查牌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滥壕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼纸颜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起绎橘,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胁孙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后称鳞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涮较,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年胡岔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了法希。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡靶瘸,死狀恐怖苫亦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怨咪,我是刑警寧澤屋剑,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站诗眨,受9級(jí)特大地震影響唉匾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匠楚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一巍膘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芋簿,春花似錦峡懈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荚恶。三九已至,卻和暖如春磷支,著一層夾襖步出監(jiān)牢的瞬間谒撼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工雾狈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廓潜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓箍邮,卻偏偏與公主長(zhǎng)得像茉帅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锭弊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容