最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實現(xiàn)時間序列長期利率預(yù)測|附代碼數(shù)據(jù)

2023-06-14 23:26 作者:拓端tecdat  | 我要投稿

在 Tensorflow 之上運行的綜合庫,具有 CPU 和 GPU 功能

本文將演示如何在 R 中使用 LSTM 實現(xiàn)時間序列預(yù)測。

簡單的介紹

時間序列涉及按時間順序收集的數(shù)據(jù)。我用 xt∈R 表示單變量數(shù)據(jù),其中 t∈T 是觀察數(shù)據(jù)時的時間索引。時間 t 在 T=Z 的情況下可以是離散的,或者在 T=R 的情況下是連續(xù)的。為簡化分析,我們將僅考慮離散時間序列。

長短期記憶 (LSTM) 網(wǎng)絡(luò)是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN),能夠?qū)W習(xí)長期依賴關(guān)系。在常規(guī)的 RNN 中,小權(quán)重通過幾個時間步一遍又一遍地相乘,并且梯度逐漸減小到零——這種情況稱為梯度消失問題。

LSTM 網(wǎng)絡(luò)通常由通過層連接的內(nèi)存塊(稱為單元)組成。單元中的信息同時包含在單元狀態(tài) Ct 和隱藏狀態(tài) ht 中,并由稱為門的機制通過?sigmoid?和?tanh?激活函數(shù)進行調(diào)節(jié)。

sigmoid 函數(shù)/層輸出 0 到 1 之間的數(shù)字,其中 0 表示?沒有通過?, 1 表示?全部通過。因此,LSTM 能夠有條件地從單元狀態(tài)中添加或刪除信息。

一般來說,門將前一時間步 ht-1 和當(dāng)前輸入 xt 的隱藏狀態(tài)作為輸入,并將它們逐點乘以權(quán)重矩陣 W,并將偏差 b 添加到乘積中。

三個主要門:

  • 遺忘門:

  • 這決定了哪些信息將從單元狀態(tài)中刪除。

  • 輸出是一個介于 0 和 1 之間的數(shù)字,0 表示?全部刪除?,1 表示?全部記住

  • 更新門:

  • 在這一步中,??tahn?激活層創(chuàng)建一個潛在候選向量,如下所示:

  • sigmoid 層創(chuàng)建一個更新過濾器,如下所示:

  • 接下來,舊單元狀態(tài) Ct-1 更新如下:

  • 輸出門:

  • 在這一步中,sigmoid 層過濾將要輸出的單元狀態(tài)。

  • 然后將單元狀態(tài) Ct 通過?tanh?函數(shù)將值標(biāo)準(zhǔn)化到范圍 [-1, 1]。

  • 最后,標(biāo)準(zhǔn)化后的單元格狀態(tài)乘以過濾后的輸出,得到隱藏狀態(tài) ht 并傳遞給下一個單元格:

加載必要的庫和數(shù)據(jù)集

#?加載必要的包library(keras)

或者安裝如下:

#?然后按如下方式安裝 TensorFlow :install_keras()

我們將使用可用的長期利率數(shù)據(jù)?,這是從 2007 年 1 月到 2018 年 3 月的月度數(shù)據(jù)。

前五個觀察樣本

點擊標(biāo)題查閱往期內(nèi)容

R語言KERAS用RNN、雙向RNNS遞歸神經(jīng)網(wǎng)絡(luò)、LSTM分析預(yù)測溫度時間序列、 IMDB電影評分情感

左右滑動查看更多

01

02

03

04

數(shù)據(jù)準(zhǔn)備

將數(shù)據(jù)轉(zhuǎn)換為平穩(wěn)數(shù)據(jù)

這是通過獲取系列中兩個連續(xù)值之間的差異來完成的。這種轉(zhuǎn)換(通常稱為差分)會刪除數(shù)據(jù)中與時間相關(guān)的成分。此外,使用差分而不是原始值更容易建模,并且生成的模型具有更高的預(yù)測能力。

#將數(shù)據(jù)轉(zhuǎn)換為平穩(wěn)性did?=?diffhead

滯后數(shù)據(jù)集

LSTM 期望數(shù)據(jù)處于監(jiān)督學(xué)習(xí)模式。也就是說,有一個目標(biāo)變量 Y 和預(yù)測變量 X。為了實現(xiàn)這一點,我們通過滯后序列來變換序列,并將時間 (t?k)的值作為輸入,將時間 t 的值作為輸出,用于 k 步滯后數(shù)據(jù)集。

sps=?laormhead(sps)

將數(shù)據(jù)集拆分為訓(xùn)練集和測試集

與大多數(shù)分析中訓(xùn)練和測試數(shù)據(jù)集是隨機抽樣的不同,對于時間序列數(shù)據(jù),觀察的順序確實很重要。以下代碼將系列的?前?70% 作為訓(xùn)練集,其余 30% 作為測試集。

##?分成訓(xùn)練集和測試集N?=?nrown?=?roundtran?=?sud[1:n,?]tt??=?sud[(n+1):N,??]

標(biāo)準(zhǔn)化數(shù)據(jù)

就像在任何其他神經(jīng)網(wǎng)絡(luò)模型中一樣,我們將輸入數(shù)據(jù) X 重新標(biāo)準(zhǔn)化到激活函數(shù)的范圍。如前所述,LSTM 的默認(rèn)激活函數(shù)是 sigmoid 函數(shù),其范圍為 [-1, 1]。下面的代碼將有助于這種轉(zhuǎn)換。請注意,訓(xùn)練數(shù)據(jù)集的最小值和最大值是用于標(biāo)準(zhǔn)化訓(xùn)練和測試數(shù)據(jù)集以及預(yù)測值的標(biāo)準(zhǔn)化系數(shù)。這確保了測試數(shù)據(jù)的最小值和最大值不會影響模型。

##?標(biāo)準(zhǔn)化數(shù)據(jù)Sad?=?scaa(trin,?et,?c(-1,?1))y_in?=?Sed$slrn[,?2]x_tn?=?Scd$sldin[,?1]y_st?=?Sald$sleet[,?2]x_st?=?Saed$sett[,?1]

將需要以下代碼將預(yù)測值恢復(fù)為原始比例。

##?逆變換invtg?=?function(sle,?slr,?fue?=?c(0,?1))

定義

定義模型

我們設(shè)置參數(shù)?stateful?= TRUE 以便在處理一批樣本后獲得的內(nèi)部狀態(tài)被重新用作下一批樣本的初始狀態(tài)。由于網(wǎng)絡(luò)是有狀態(tài)的,我們必須從當(dāng)前 [?samples?,??features ] 中以 [?samples?,??timesteps?,??features?]形式的 3 維數(shù)組提供輸入批次,其中:

樣本:每批中的觀察數(shù),也稱為批大小。

時間步長:給定觀察的單獨時間步長。在此示例中,時間步長 = 1

特征:對于單變量情況,如本例所示,特征 = 1

批量大小必須是訓(xùn)練樣本和測試樣本大小的共同因素??梢哉业?LSTM 輸入的一個很好的解釋

#?將輸入重塑為?3-維#?指定所需的參數(shù)bahse?=?1?#?必須是訓(xùn)練樣本和測試樣本的公因子ni?=?1?#?可以調(diào)整這個,在模型調(diào)整階段#====================keras_model_sequentiallayer_lstm%>%???layer_dense

編譯模型

在這里,我將?mean_squared_error_指定?為損失函數(shù),將_自適應(yīng)_矩_估計?_Adam_指定為優(yōu)化算法,并在每次更新時指定學(xué)習(xí)率和學(xué)習(xí)率衰減。最后,我使用?準(zhǔn)確性?作為評估模型性能的指標(biāo)。

compile(??optimizer?=?optimizer_adam)

模型匯總

summary

擬合模型

我們設(shè)置參數(shù)?shuffle??= FALSE 以避免打亂訓(xùn)練集并保持 xi 和 xi+t 之間的依賴關(guān)系。LSTM 還需要在每個 epoch 之后重置網(wǎng)絡(luò)狀態(tài)。為了實現(xiàn)這一點,我們在 epoch 上運行一個循環(huán),在每個 epoch 中我們擬合模型并通過參數(shù)?_reset_states()_重置狀態(tài)。

for(i?in?1:phs?){??model?%>%?fit??model?%>%?reset_states}

作出預(yù)測

for(i?in?1:L){??????#?逆標(biāo)準(zhǔn)化??????yhat?=?invert_scaling??????#?逆差分??????yhat?=?yhat?+?Sis[(n+i)]?????}

繪制值

本文摘選?《?R 語言用RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實現(xiàn)時間序列長期利率預(yù)測?》?,點擊“閱讀原文”獲取全文完整資料。

點擊標(biāo)題查閱往期內(nèi)容

結(jié)合新冠疫情COVID-19股票價格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時間序列進行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時間序列:多層感知器(MLP)和極限學(xué)習(xí)機(ELM)數(shù)據(jù)分析報告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進行時間序列預(yù)測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡(luò)機器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類


RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實現(xiàn)時間序列長期利率預(yù)測|附代碼數(shù)據(jù)的評論 (共 條)

分享到微博請遵守國家法律
社旗县| 伊通| 长顺县| 三亚市| 北票市| 乌什县| 工布江达县| 独山县| 洱源县| 南昌县| 崇仁县| 本溪| 香河县| 祁阳县| 泽库县| 车致| 天津市| 丁青县| 邮箱| 津南区| 霞浦县| 尤溪县| 鱼台县| 石首市| 安乡县| 黄石市| 安陆市| 乐业县| 文昌市| 潜江市| 卫辉市| 紫阳县| 东莞市| 祁东县| 五原县| 霍山县| 张家川| 香格里拉县| 灯塔市| 朝阳市| 马关县|