五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

拓端tecdat|R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)時(shí)間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)

2021-08-19 21:22 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=23485?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

用于R語言的多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)進(jìn)行時(shí)間序列預(yù)測(cè)。請(qǐng)注意,由于神經(jīng)網(wǎng)絡(luò)無法利用GPU處理,因此大型網(wǎng)絡(luò)的訓(xùn)練速度往往很慢。與現(xiàn)有神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的不同之處在于,R可以自動(dòng)設(shè)計(jì)具有合理預(yù)測(cè)性能的網(wǎng)絡(luò)。這增加了神經(jīng)網(wǎng)絡(luò)的魯棒性,但也有助于減少訓(xùn)練時(shí)間。

使用MLP進(jìn)行預(yù)測(cè)

使用R軟件包,您可以生成外推(單變量)預(yù)測(cè),也可以包含解釋變量。

單變量預(yù)測(cè)

最簡(jiǎn)單的形式,您只需輸入要建模的時(shí)間序列。

  1. fit1 <- MLPfit(Air)

  2. print(fit1)

輸出表明結(jié)果網(wǎng)絡(luò)具有5個(gè)隱藏節(jié)點(diǎn),對(duì)其進(jìn)行了20次訓(xùn)練,并使用中位數(shù)運(yùn)算組合了不同的預(yù)測(cè)。自動(dòng)生成網(wǎng)絡(luò)集合,其訓(xùn)練從不同的隨機(jī)初始權(quán)重開始。此外,它提供了網(wǎng)絡(luò)中包含的輸入。

可以使用plot()?獲得直觀的摘要?。

plot(fit1)

灰色的輸入節(jié)點(diǎn)是自回歸,而洋紅色的則是確定性輸入(在這種情況下為季節(jié)性)。如果包括任何其他回歸變量,它們將以淺藍(lán)色顯示。

該?MLP()?函數(shù)接受幾個(gè)參數(shù)來微調(diào)生成的網(wǎng)絡(luò)。該?hd?參數(shù)定義了固定數(shù)量的隱藏節(jié)點(diǎn)。如果是單個(gè)數(shù)字,則神經(jīng)元排列在單個(gè)隱藏節(jié)點(diǎn)中。如果是矢量,則將它們排列成多層。

fit( hd = c(10,5))

稍后我們將介紹如何自動(dòng)選擇節(jié)點(diǎn)數(shù)。根據(jù)我的經(jīng)驗(yàn)(以及來自文獻(xiàn)的證據(jù)),預(yù)測(cè)單個(gè)時(shí)間序列的常規(guī)神經(jīng)網(wǎng)絡(luò)無法從多個(gè)隱藏層中獲得更好效果。預(yù)測(cè)問題通常并不那么復(fù)雜!

reps?定義了使用多少次訓(xùn)練重復(fù)。如果您想訓(xùn)練一個(gè)單一的網(wǎng)絡(luò),則可以使用?reps=1,有大量結(jié)果證據(jù)表明這樣效果一般。默認(rèn)值?reps=20?是訓(xùn)練速度和性能之間的折衷,但是您可以承受的重復(fù)次數(shù)越多越好。當(dāng)重新訓(xùn)練網(wǎng)絡(luò)時(shí),它們不僅有助于模型的性能,而且還有助于結(jié)果的穩(wěn)定性。

lags?允許您選擇網(wǎng)絡(luò)考慮的自回歸滯后。如果未提供此參數(shù),則網(wǎng)絡(luò)使用lag 1到lag??m,即序列的季節(jié)。

lags=1:24

keep=c(rep(TRUE,12), rep(FALSE,12)))

lags=1:24, sel.lag=FALSE

在第一種情況下,滯后(1,2,4,7,8,9,10,11,12,13,18,21,23,24)被保留。在第二種情況下,保留所有1-12,其余13-24被測(cè)試是否保留。

神經(jīng)網(wǎng)絡(luò)在建模趨勢(shì)方面并不出色。因此,在對(duì)趨勢(shì)進(jìn)行建模之前將其消除是很有用的。這由參數(shù)處理?difforder。如果?difforder=0?不執(zhí)行任何差分。對(duì)于?diff=1,執(zhí)行一階差分。同樣,如果?difforder=12?執(zhí)行12階差分。如果時(shí)間序列是具有季節(jié)性周期12的季節(jié)性序列,則這是季節(jié)性差異。

您可以同時(shí)執(zhí)行?difforder=c(1,12)?或執(zhí)行任何其他差分。如果?difforder=NULL?然后代碼自動(dòng)決定。如果存在趨勢(shì),則使用一階差分。該序列還經(jīng)過季節(jié)性測(cè)試。如果存在,則使用Canova-Hansen檢驗(yàn)來確定這是確定性的還是隨機(jī)的。如果是后者,則還會(huì)添加季節(jié)性差分。

確定性季節(jié)性可以使用季節(jié)性虛擬變量更好地建模。

隱藏的節(jié)點(diǎn)數(shù)可以使用參數(shù)預(yù)設(shè)。默認(rèn)情況下,這使用驗(yàn)證樣本(時(shí)間序列的20%)進(jìn)行測(cè)試,或?type="cv"?使用5倍交叉驗(yàn)證。

auto.type="valid",hd.max=8

鑒于訓(xùn)練神經(jīng)網(wǎng)絡(luò)非常耗時(shí),因此你可以重用已經(jīng)指定/經(jīng)過訓(xùn)練的網(wǎng)絡(luò)。在以下示例中,我們將重用?fit1?到新的時(shí)間序列。

fit(x, model=fit1)

保留了的模型參數(shù)?fit1。如果您只想使用參數(shù),但要對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,則可以使用參數(shù)?retrain=TRUE。

觀察兩個(gè)設(shè)置之間的樣本內(nèi)MSE的差異。

最后,您可以使用省略號(hào)將參數(shù)直接傳遞給用于訓(xùn)練網(wǎng)絡(luò)的?函數(shù)?...。

要生成預(yù)測(cè),我們使用函數(shù)forecast(),該函數(shù)?需要訓(xùn)練的網(wǎng)絡(luò)對(duì)象和預(yù)測(cè)范圍?h

print(frc)

plot(frc)

預(yù)測(cè)圖以灰色提供了所有集合的預(yù)測(cè)。

使用回歸預(yù)測(cè)

讓我們假設(shè)我們要使用確定性趨勢(shì)來預(yù)測(cè)時(shí)間序列。首先,我們構(gòu)造輸入,然后對(duì)序列建模。

  1. z <- 1:(length()+24) # 我為預(yù)測(cè)增加了24個(gè)額外的觀測(cè)值

  2. z <- cbind(z) # 把它轉(zhuǎn)換成一個(gè)列數(shù)

  3. # 添加一個(gè)滯后0的回歸因子,并強(qiáng)制它留在模型中

  4. difforder=0) # 不要讓mlp()來刪除隨機(jī)趨勢(shì)

輸出反映了包含回歸變量。這在帶有淺藍(lán)色輸入的網(wǎng)絡(luò)圖中反映出來。

plot(fit4)

為了包括更多的滯后,我們擴(kuò)展了?xreg.lags

difforder=0,xreg=z,xreg.lags=list(1:12)

觀察到網(wǎng)絡(luò)中未包含任何變量。我們使用?xreg.keep?來強(qiáng)制包含這些變量。

difforder=0,xreg=z,xreg.lags=list(1:12),xreg.keep=list(c(rep(TRUE,3),rep(FALSE,9)

顯然,神經(jīng)網(wǎng)絡(luò)不喜歡確定性趨勢(shì)!如果我們強(qiáng)制執(zhí)行,它只會(huì)保留它。為此,我將嘗試tsutils?包。


  1. zz <- cbind(z, 0)

  2. zz[loc,2] <- 1

  3. fitxreg.lags=list(c(0:6),0),xreg.keep=list(rep(FALSE,7),TRUE)

顯然,您可以包含任意數(shù)量的回歸變量。

為了產(chǎn)生預(yù)測(cè),我們使用?forecast()?函數(shù),但現(xiàn)在使用?xreg?輸入。方法是從網(wǎng)絡(luò)訓(xùn)練期間使用的相同觀察值開始輸入回歸變量,并根據(jù)需要擴(kuò)展預(yù)測(cè)范圍。您

frc.reg <- forecast(fit5,xreg=zz)

ELM的預(yù)測(cè)

使用極限學(xué)習(xí)機(jī)(EML)。默認(rèn)情況下,ELM從一個(gè)非常大的隱藏層(100個(gè)節(jié)點(diǎn))開始,并根據(jù)需要對(duì)其進(jìn)行修剪。

print(fit6)

plot(fit6)

網(wǎng)絡(luò)圖有一些黑線和一些灰線。后者被修剪。裝有20個(gè)網(wǎng)絡(luò)(由參數(shù)控制?reps)。每個(gè)網(wǎng)絡(luò)可能具有不同的最終連接。

  1. par(mfrow=c(2,2))

  2. for (i in 1:4){plot(fit6,i)}

  3. par(mfrow=c(1,1))

修剪的方式由參數(shù)控制。默認(rèn)選項(xiàng)是使用LASSO回歸(類型=“套索LASSO”)?;蛘撸梢允褂谩?ridge”進(jìn)行嶺回歸,使用“ step”進(jìn)行逐步OLS,使用“ lm”獲得OLS解決方案而不進(jìn)行修剪。

要進(jìn)行預(yù)測(cè),使用forecast()?。

forecast(fit6,h=12)

時(shí)間層次結(jié)構(gòu)

實(shí)現(xiàn)時(shí)間層次結(jié)構(gòu)mlp和elm。


  1. par(mfrow=c(1,2))

  2. plot(thiMLP)

  3. plot(thiELM)

  4. par(mfrow=c(1,1))

這應(yīng)該使您可以進(jìn)行神經(jīng)網(wǎng)絡(luò)的時(shí)間序列預(yù)測(cè)。

最受歡迎的見解

1.用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類

2.Python中利用長(zhǎng)短期記憶模型LSTM進(jìn)行時(shí)間序列預(yù)測(cè)分析 – 預(yù)測(cè)電力消耗數(shù)據(jù)

3.python在Keras中使用LSTM解決序列問題

4.Python中用PyTorch機(jī)器學(xué)習(xí)分類預(yù)測(cè)銀行客戶流失模型

5.R語言多元Copula GARCH 模型時(shí)間序列預(yù)測(cè)

6.在r語言中使用GAM(廣義相加模型)進(jìn)行電力負(fù)荷時(shí)間序列分析

7.R語言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預(yù)測(cè)時(shí)間序列數(shù)

8.R語言估計(jì)時(shí)變VAR模型時(shí)間序列的實(shí)證研究分析案例

9.用廣義加性模型GAM進(jìn)行時(shí)間序列分析


拓端tecdat|R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)時(shí)間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宜春市| 广昌县| 康定县| 虞城县| 静乐县| 毕节市| 仪陇县| 陕西省| 夹江县| 修武县| 来安县| 新乡县| 始兴县| 南城县| 东阿县| 长海县| 永安市| 光泽县| 江山市| 牡丹江市| 子洲县| 定结县| 开平市| 承德县| 长武县| 泰顺县| 山丹县| 灵川县| 嘉义县| 肃宁县| 原平市| 房山区| 西宁市| 织金县| 承德县| 大渡口区| 临潭县| 神池县| 逊克县| 黑河市| 喜德县|