回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出

回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出

目录

    • 回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出
      • 基本介绍
      • 模型介绍
        • Bayes模型
        • LSTM模型
        • Bayes-LSTM模型
      • 程序设计
      • 预测效果
      • 致谢

基本介绍

本次运行测试环境MATLAB2018b;
本次预测基本任务是回归,多变量输入,单变量输出;
主要研究问题不限于交通预测、负荷预测、气象预测、经济预测等。
Bayes-LSTM多变量输入单变量输出,贝叶斯优化长短期记忆神经网络,具体介绍如下。

模型介绍

Bayes模型

贝叶斯优化(Bayesian optimization,简称BO)是一种有效的解决方法.
贝叶斯优化在不同的领域也称作序贯克里金优化(sequential Kriging optimization,简称SKO)、基于模型的序贯优化(sequential model-based optimization,简称SMBO)、高效全局优化(efficient global optimization,简称EGO).

  • 该方法是一种基于模型的序贯优化(即,在一次评估之后才进行下一次评估)方法,能够在很少的评估代价下得到一个近似最优解.贝叶斯优化已经应用于网页、游戏和材料设计、推荐系统、用户界面交互、机器人步态、导航和嵌入式学习系统、环境监控、组合优化、自动机器学习、传感器网络等领域,展示出令人瞩目的发展前景.
  • 概率模型已经成为当前人工智能、机器人学、机器学习等领域的主流方法.机器能够根据概率框架预测未来数据,并且根据预测数据给出决策.这些问题的主要难点在于观测值具有不确定性,而概率模型能够对不确定性进行建模,有效地解决观测噪声问题.Ghahramani 指出,贝叶斯优化是在概率机器学习和人工智能领域中几种最先进、最有希望的技术。
  • 贝叶斯优化框架有两个关键部分:(1) 使用概率模型代理原始评估代价高昂的复杂目标函数;(2) 利用代理模型的后验信息构造主动选择策略,即采集函数.在实际应用中,需要针对具体问题选择合适的模型.

回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第1张图片

LSTM模型

长短时记忆网络(LSTM)是循环神经网络(RNN)的进阶版,专门用来解决一般RNM 的长期依赖问题。LSTM改进的地方在于其增加了三种门和一个记忆单元,可以通过所谓“门”的精细结构向细胞状态添加或移除信息。

回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第2张图片

Bayes-LSTM模型

由于机器学习的广泛应用,许多现代机器学习算法都包含大量超参数。为有效使用这些算法,需定义适当的超参数值,但神经网络的参数大多数都是手工修改。因此,贝叶斯优化逐渐被用来微调神经网络的超参数。同时会有费时、过拟合的缺点,对此,H提出了Dropout的概念,减弱了神经元节点间的联合适应性,增强了泛化能力。基于贝叶斯的Dropout优化算法的步骤如下。

回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第3张图片

程序设计

%% 变量初始化 
opt.learningMethod      = 'LSTM';
%% 参数定义
%最大迭代次数
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.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')];

opt.isUseOptimizer           = true;
opt.MaxOptimizationTime      = 14*60*60;
opt.MaxItrationNumber        = 10;
opt.isDispOptimizationLog    = true;
%参数保存设定
opt.isSaveOptimizedValue     = false;       
opt.isSaveBestOptimizedValue = true;       

% 贝叶斯数据导入
data.X  = inputn;
data.Y  = outputn;

% 数据划分
data.XTr   = [];
data.YTr   = [];
data.XTs   = [];
data.YTs   = [];

data.XTr   = inputn_train;
data.YTr   = outputn_train;
data.XTs   = inputn_test;
data.YTs   = outputn_test;

% 数据规范化
for i=1:size(data.XTr,2)
    XTr{i,1} = data.XTr(:,i);
    YTr(i,1) = data.YTr(:,i);
end

for i=1:size(data.XTs,2)
    XTs{i,1} =  data.XTs(:,i);
    YTs(i,1) =  data.YTs(:,i);
end
data.XTr   = XTr;
data.YTr   = YTr;
data.XTs   = XTs;
data.YTs   = YTs;
data.XVl   = XTs;
data.YVl   = YTs;

%% 基于贝叶斯寻找最佳LSTM参数
%  超参数运行
if opt.isDispOptimizationLog
    isLog = 2;
else
    isLog = 0;
end
if opt.isUseOptimizer
    opt.ObjFcn  = ObjFcn(opt,data);
    BayesObject = bayesopt(opt.ObjFcn,opt.optimVars, ...
        'MaxTime',opt.MaxOptimizationTime, ...
        'IsObjectiveDeterministic',false, ...
        'MaxObjectiveEvaluations',opt.MaxItrationNumber,...
        'Verbose',isLog,...
        'UseParallel',false);
end
  • 完整程序:https://mianbaoduo.com/o/works/240348

预测效果

回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第4张图片
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第5张图片
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第6张图片
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第7张图片
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出_第8张图片

Matlab实现BayesLSTM多变量回归预测
1.wata为数据集,7个输入特征,1个输出特征。
2.BayesLSTMNN.m为主程序文件,运行即可,ObjFcn为函数文件无需运行。
3.命令窗口输出MAPE和RMSE,可在下载区获取数据和程序内容。
注意程序和数据放在一个文件夹,运行环境为Matlab2018及以上。

致谢

  • 大家的支持是我写作的动力!
  • 感谢大家订阅,感谢,需要加Q-【1153460737】,记得备注!

你可能感兴趣的:(回归预测,深度学习,智能算法,数据预测,机器学习,回归预测,贝叶斯优化,LSTM)