时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)

时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)

预测效果

训练结果
训练误差分析
训练误差统计
时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)_第1张图片
时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)_第2张图片
时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)_第3张图片
时序预测 | MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)_第4张图片

基本介绍

相对于模型的参数而言(Parameter),我们知道机器学习其实就是机器通过某种算法学习数据的计算过程,通过学习得到的模型本质上是一些列数字,如树模型每个节点上判断属于左右子树的一个数,或者逻辑回归模型里的一维数组,这些都称为模型的参数。那么定义模型属性或者定义训练过程的参数,我们称为超参数。超参数的选择对模型最终的效果有极大的影响
贝叶斯优化是一种黑盒优化算法,用于求解表达式未知的函数的极值问题。算法根据一组采样点处的函数值预测出任意点处函数值的概率分布,这通过高斯过程回归而实现。根据高斯过程回归的结果构造采集函数,用于衡量每一个点值得探索的程度,求解采集函数的极值从而确定下一个采样点。最后返回这组采样点的极值作为函数的极值。这种算法在机器学习中被用于自动确定机器学习算法的超参数。

程序设计

  • 完整程序和数据下载:MATLAB实现贝叶斯优化LSTM时间序列预测(BO-LSTM)
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

你可能感兴趣的:(时间序列,贝叶斯优化,时间序列,BO-LSTM)