时序预测 | MATLAB实现BO-CNN贝叶斯算法优化卷积神经网络时间序列预测


目录

  • 时序预测 | MATLAB实现BO-CNN贝叶斯算法优化卷积神经网络时间序列预测
  • 预测效果
  • 基本介绍
  • 模型描述
  • 程序设计
  • 参考资料


预测效果

BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_数据


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_人工智能_02


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_算法_03


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_数据_04


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_cnn_05


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_贝叶斯算法优化卷积神经网络_06


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_算法_07


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_人工智能_08


BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_数据_09

基本介绍

Matlab实现BO-CNN贝叶斯优化卷积神经网络时间序列预测(完整源码和数据)
1.data为数据集,单变量一维数据。
2.MainBO_CNNTS.m为程序主文件,其他为函数文件无需运行。
3.命令窗口输出MAE、MSE、RMSEP、R^2、RPD和MAPE,可在下载区获取数据和程序内容。
4.贝叶斯优化算法优化参数为学习率、批处理样本大小和、正则化参数。
注意程序和数据放在一个文件夹,运行环境为Matlab2018及以上。

模型描述

对于超参数的优化,可以将这种优化看做是反映泛化性能的未知黑盒函数的优化,并调用针对这些问题开发的算法。这些优化问题作为训练过程的一部分,经常遇到低层次目标是不同的: 这里函数评估( 求值目标函数调用一次) 代价很大,因为它们涉及到主要的机器学习算法的完成。在这种函数求值代价大的情况下,希望花费计算时间来更好地选择在哪里寻找最佳参数。在贝叶斯优化中,感兴趣的是在一些有界集合Λ 上找到函数f( λ) 的最小值,本文将它作为R 的一个子集。使得贝叶斯优化不同于其他程序的是它为f( λ) 构造一个概率模型,然后利用这个模型来决定Λ 在哪里去评估函数,同时整合不确定性。基本的思路是使用f( λ) 以前评估中可用的所有信息来学习目标函数的形态,而不是简单地依靠局部梯度和Hessian 近似。这可以实现通过较少的评估就可以找到复杂非凸函数的最小值,代价是执行更多的计算以确定下一个采样点。因此分为了两个步骤: a) 选择一个先验函数来表达关于被优化函数的假设,本文使用的高斯过程具有灵活易处理的特性; b) 选择一个采集函数,用来从后验模型构造一个效用函数,确定下一个采样点。将要优化的CNN 的超参数看做是多维空间的点。

BO-CNN贝叶斯算法优化卷积神经网络时间序列预测_人工智能_10

程序设计

  • 完整程序和数据下载方式私信博主回复MATLAB实现BO-CNN贝叶斯算法优化卷积神经网络时间序列预测
%%  贝叶斯优化参数
optimVars = [
    optimizableVariable('MiniBatchSize',[10 50],'Type','integer')   %batch size 
    optimizableVariable('InitialLearnRate', [1e-3, 1], 'Transform', 'log')   % 学习率
    optimizableVariable('L2Regularization', [1e-10, 1e-2], 'Transform', 'log')];  %正则化系数

%% 贝叶斯 执行贝叶斯优化
BayesObject = bayesopt(ObjFcn, optimVars, ...     % 优化函数,和参数范围
        'MaxTime', Inf, ...                    % 优化时间(不限制)
        'IsObjectiveDeterministic', false, ...
        'MaxObjectiveEvaluations', 10, ...       % 最大迭代次数
        'Verbose', 1, ...                       % 显示优化过程
        'UseParallel', false);

%%  贝叶斯优化参数
MiniBatchSize    = BayesObject.XAtMinEstimatedObjective.MiniBatchSize; % 最佳批处理样本
InitialLearnRate = BayesObject.XAtMinEstimatedObjective.InitialLearnRate; % 最佳初始学习率
L2Regularization = BayesObject.XAtMinEstimatedObjective.L2Regularization; % 最佳L2正则化系数

%%  构造网络结构
layers = [
 imageInputLayer([f_, 1, 1])     % 输入层 输入数据规模[f_, 1, 1]
 
 convolution2dLayer([1, 1], 16)  % 卷积核大小 3*1 生成16张特征图
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层
 
 convolution2dLayer([1, 1], 32)  % 卷积核大小 3*1 生成32张特征图
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层

 dropoutLayer(0.2)               % Dropout层
 fullyConnectedLayer(1)          % 全连接层
 regressionLayer];               % 回归层

%%  参数设置
% % 参数设置
options = trainingOptions('sgdm', ...                % 梯度下降算法adam
    'MaxEpochs',500, ...                            % 最大训练次数 1000
    'MiniBatchSize',MiniBatchSize, ...
    'GradientThreshold', 1, ...                     
    'InitialLearnRate', InitialLearnRate, ...       
    'LearnRateSchedule', 'piecewise', ...          
    'LearnRateDropPeriod',400, ...                  % 经过800次训练后 学习率为 0.01*0.1
    'LearnRateDropFactor',0.2, ...                 
    'L2Regularization', L2Regularization, ...         
    'ExecutionEnvironment', 'cpu',...               
    'Verbose', 0, ...                                 
    'Plots', 'training-progress');