时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)
预测效果
基本介绍
相对于模型的参数而言(Parameter),我们知道机器学习其实就是机器通过某种算法学习数据的计算过程,通过学习得到的模型本质上是一些列数字,如树模型每个节点上判断属于左右子树的一个数,或者逻辑回归模型里的一维数组,这些都称为模型的参数。那么定义模型属性或者定义训练过程的参数,我们称为超参数。超参数的选择对模型最终的效果有极大的影响
贝叶斯优化是一种黑盒优化算法,用于求解表达式未知的函数的极值问题。算法根据一组采样点处的函数值预测出任意点处函数值的概率分布,这通过高斯过程回归而实现。根据高斯过程回归的结果构造采集函数,用于衡量每一个点值得探索的程度,求解采集函数的极值从而确定下一个采样点。最后返回这组采样点的极值作为函数的极值。这种算法在机器学习中被用于自动确定机器学习算法的超参数。
程序设计
clc; clear; close all;
%% 变量初始化
opt.Delays = 1:30;
%数据标准化: 'None' 'Data Standardization' 'Data Normalization'
opt.dataPreprocessMode = 'Data Standardization';
opt.learningMethod = 'LSTM';
%数据划分
opt.trPercentage = 0.80;
%% 参数定义
%最大迭代次数
opt.maxEpochs = 10;
%批处理大小
opt.miniBatchSize = 16;
%执行环境: 'cpu' 'gpu' 'auto'
opt.executionEnvironment = 'cpu';
%优化算法: 'sgdm' 'rmsprop' 'adam'
opt.LR = 'adam';
%训练进程: 'training-progress' 'none'
opt.trainingProgress = 'none';
%% 双向长短期参数设定
%逻辑参数控制是否双向
opt.isUseBiLSTMLayer = true;
opt.isUseDropoutLayer = true;
%权重丢失参数设定,防止过拟合
opt.DropoutValue = 0.5;
% 优化参数设定
opt.optimVars = [
optimizableVariable('NumOfLayer',[1 4],'Type','integer')
optimizableVariable('NumOfUnits',[50 200],'Type','integer')
optimizableVariable('isUseBiLSTMLayer',[1 2],'Type','integer')
optimizableVariable('InitialLearnRate',[1e-2 1],'Transform','log')
optimizableVariable('L2Regularization',[1e-10 1e-2],'Transform','log')];
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/128107434?spm=1001.2014.3001.5501
[2] https://download.csdn.net/download/kjm13182345320/87212871?spm=1001.2014.3001.5501