多維時(shí)序 | MATLAB實(shí)現(xiàn)PSO-CNN-BiLSTM多變量時(shí)間序列預(yù)測(cè)
基本介紹
本次運(yùn)行測(cè)試環(huán)境MATLAB2021b,MATLAB實(shí)現(xiàn)PSO-CNN-BiLSTM多變量時(shí)間序列預(yù)測(cè)。代碼說(shuō)明:基于粒子群優(yōu)化算法(PSO)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(BiLSTM)的多變量時(shí)間序列預(yù)測(cè)算法。
模型特點(diǎn)
深度學(xué)習(xí)使用分布式的分層特征表示方法自動(dòng)提取數(shù)據(jù)中的從最低層到最高層固有的抽象特征和隱藏不變結(jié)構(gòu). 為了充分利用單個(gè)模型的優(yōu)點(diǎn)并提高預(yù)測(cè)性能, 現(xiàn)已提出了許多組合模型。構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和雙向長(zhǎng)短期記憶(Bidirectional Long Short-Term Memory,BiLSTM)的混合模型(CNN-BiLSTM)進(jìn)行棉花產(chǎn)量預(yù)估,提高時(shí)間維度和空間維度方面的特征提取能力。
-
本研究提出的CNN-BiLSTM 模型結(jié)構(gòu)主要由CNN模塊、BiLSTM 模塊和輸出模塊3 部分。CNN 結(jié)構(gòu)的第一部分是卷積層,進(jìn)行卷積運(yùn)算提取局部空間特征。
-
BiLSTM 網(wǎng)絡(luò)的主體隱藏層結(jié)構(gòu)是在LSTM 網(wǎng)絡(luò)的基礎(chǔ)上由正向輸入運(yùn)算的LSTM 網(wǎng)絡(luò)和反向輸入運(yùn)算的LSTM 網(wǎng)絡(luò)上下疊加構(gòu)成,在保留了LSTM 單元結(jié)構(gòu)特點(diǎn)的同時(shí),更加關(guān)注時(shí)序數(shù)據(jù)的前后關(guān)聯(lián)性,確保時(shí)序特征的提取。
-
CNN-BiLSTM 模型的輸出模塊由全連接神經(jīng)網(wǎng)絡(luò)組成,網(wǎng)絡(luò)輸入向量包含CNN 提取的空間特征和BiLSTM網(wǎng)絡(luò)提取的時(shí)序特征,其隱藏層數(shù)量為1,神經(jīng)元個(gè)數(shù)為500,激活函數(shù)為ReLU,最終輸出為估產(chǎn)結(jié)果。
-
功能:
1、多變量特征輸入,單序列變量輸出,輸入前一天的特征,實(shí)現(xiàn)后一天的預(yù)測(cè),超前24步預(yù)測(cè)。
2、通過(guò)粒子群優(yōu)化算法優(yōu)化學(xué)習(xí)率、卷積核大小、神經(jīng)元個(gè)數(shù),這3個(gè)關(guān)鍵參數(shù),以最小MAPE為目標(biāo)函數(shù)。
3、網(wǎng)絡(luò)的特征可視化圖;測(cè)試對(duì)比圖;適應(yīng)度曲線(若首輪精度最高,則適應(yīng)度曲線為水平直線)。
4、提供MAPE、RMSE、MAE等計(jì)算結(jié)果展示。 -
適用領(lǐng)域:
風(fēng)速預(yù)測(cè)、光伏功率預(yù)測(cè)、發(fā)電功率預(yù)測(cè)、碳價(jià)預(yù)測(cè)等多種應(yīng)用。 -
使用便捷:
直接使用EXCEL表格導(dǎo)入數(shù)據(jù),無(wú)需大幅修改程序。內(nèi)部有詳細(xì)注釋,易于理解。
程序設(shè)計(jì)
- 完整程序和數(shù)據(jù)下載:私信博主回復(fù)MATLAB實(shí)現(xiàn)PSO-CNN-BiLSTM多變量時(shí)間序列預(yù)測(cè)。
% CNN-BiLSTM多變量時(shí)間序列預(yù)測(cè)
% 數(shù)據(jù)集 列為特征,行為樣本數(shù)目
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
clc
clear
load Train.mat
%
Train(1,:) =[];
y = Train.demand;
x = Train{:,3:end};
[xnorm,xopt] = mapminmax(x',0,1);
[ynorm,yopt] = mapminmax(y',0,1);
x = x';
k = 24; % 滯后長(zhǎng)度
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 轉(zhuǎn)換成4-D image
for i = 1:length(ynorm)-k
Train_xNorm{i} = reshape(xnorm(:,i:i+k-1),6,1,1,k);
Train_yNorm(i) = ynorm(i+k-1);
end
Train_yNorm= Train_yNorm';
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%--------------------------------------------------------------------------
load Test.mat
Test(1,:) =[];
ytest = Test.demand;
xtest = Test{:,3:end};
[xtestnorm] = mapminmax('apply', xtest',xopt);
[ytestnorm] = mapminmax('apply',ytest',yopt);
xtest = xtest';
for i = 1:length(ytestnorm)-k
Test_xNorm{i} = reshape(xtestnorm(:,i:i+k-1),6,1,1,k);
Test_yNorm(i) = ytestnorm(i+k-1);
Test_y(i) = ytest(i+k-1);
end
Test_yNorm = Test_yNorm';
- 相關(guān)預(yù)測(cè)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-656788.html
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/127313031?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128011037?spm=1001.2014.3001.5502文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656788.html
到了這里,關(guān)于多維時(shí)序 | MATLAB實(shí)現(xiàn)PSO-CNN-BiLSTM多變量時(shí)間序列預(yù)測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!