基于贝叶斯Bayes算法优化CNN-LSTM长短期记忆网络的单列时间序列模型及多输入单输出回归预测模型
前言
前面在【MATLAB第8期】讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的时间序列预测模型,即单输入数据时间序列预测,见本人CSDN主页。
前面在【MATLAB第10期】讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的多输入单输出回归预测模型思路框架,见本人CSDN主页。
思路
本文分别使用单列时间序列数据及多输入单输出数据,进行BO-CNNLSTM预测。贝叶斯原理及内容不多介绍。
1.时间序列预测模型
时间序列数据:单列数据
超参数优化:有大量的超参数可供调整和优化,使用贝叶斯优化来优化CNN-LSTM参数
optimVars = [
optimizableVariable('NoFilter1',[8 64],'Type','integer') %卷积层1卷积核数量
optimizableVariable('NoFilter2',[8 64],'Type','integer') %卷积层2卷积核数量
optimizableVariable('FilterSize1',[3 16],'Type','integer') %卷积层1卷积核大小
optimizableVariable('FilterSize2',[3 16],'Type','integer') %卷积层2卷积核大小
optimizableVariable('Lag',[3 9],'Type','integer') %时间滞后阶数范围
optimizableVariable('MiniBatchSize',{'16' '32' '48' },'Type','categorical') %批处理范围选择
optimizableVariable('learningrate',[1e-5 1e-1],'Type','real',"Transform","log")];%学习率优化选择
贝叶斯优化次数:10
贝叶斯优化结果:(参数简化,如最大运行时间仅设置为10*60)
测试集MAE=
1.3433
测试集RMSE=
1.9390
2.回归预测模型
使用多输入单输出数据
80%训练 20%测试
超参数优化:有大量的超参数可供调整和优化,使用贝叶斯优化来优化CNN-LSTM参数
%% 优化CNNLSTM结构参数
optimVars = [
optimizableVariable('numHiddenUnits1',[50 200],'Type','integer')% LSTM第一层隐含层神经元数
optimizableVariable('numHiddenUnits2',[50 200],'Type','integer')% LSTM第二层隐含层神经元数
optimizableVariable('NoFilter1',[8 64],'Type','integer') %卷积层卷积核数量
optimizableVariable('FilterSize1',[3 16],'Type','integer')%卷积层卷积核大小
];
**
预测结果:
**
CNNLSTM训练集均方根误差(RMSE):3.2152
CNNLSTM训练集平均绝对误差(MAE):2.5149
CNNLSTM训练集平均相对百分误差(MAPE):5.0728%
CNNLSTM训练集R-square决定系数(R2):0.98159
CNNLSTM测试集均方根误差(RMSE):2.9023
CNNLSTM测试集平均绝对误差(MAE):2.1754
CNNLSTM测试集平均相对百分误差(MAPE):3.4288%
CNNLSTM测试集R-square决定系数(R2):0.96609
BO-CNNLSTM训练集均方根误差(RMSE):1.6549
BO-CNNLSTM训练集平均绝对误差(MAE):1.2913
BO-CNNLSTM训练集平均相对百分误差(MAPE):2.9743%
BO-CNNLSTM训练集R-square决定系数(R2):0.99484
BO-CNNLSTM测试集均方根误差(RMSE):2.4997
BO-CNNLSTM测试集平均绝对误差(MAE):2.098
BO-CNNLSTM测试集平均相对百分误差(MAPE):3.5159%
BO-CNNLSTM测试集R-square决定系数(R2):0.98186
**## 代码获取方式
代码有偿,希望理解,
后台私聊回复“BOCNNLSTM”获取下载链接**