【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型
一、效果展示
二、模型介绍
1.数据情况
一列数据,499个值
ratio = 0.9;% 训练集比例
MaxEpochs = 600;% 最大训练次数
% % 导入股票数据
xall= importdata('数据.xlsx');
2.优化参数
**贝叶斯优化7个超参数:
学习率
训练目标函数
动量值
归一方式
滑动窗口值
隐含层1神经元数
隐含层2神经元数**
适应度函数: mae
3.贝叶斯结构参数
贝叶斯参数:
'MaxTime',10*60*60, ...%10*60*60 训练最大时间
'Verbose',1,...
'NumSeedPoints',info(1),...%初始评估点数
'MaxObjectiveEvaluations',100,...%迭代次数
'ExplorationRatio',0.7,...%搜索倾向概率
4.NAR参数:
net.trainParam.epochs = MaxEpochs ; % 600
net.trainParam.goal = 1e-6; %训练目标值
net.trainParam.max_fail = 30; % 最大失败次数
net.divideParam.trainRatio = 0.7;训练集划分
net.divideParam.valRatio = 0.15;:验证集划分
net.divideParam.testRatio = 0.15;%测试集划分
三、代码展示
clear all
ratio = 0.9;% 训练集比例
MaxEpochs = 600;% 最大训练次数
NetOption = 'NarNet';% NET网络
% % 导入股票数据
xall= importdata('数据.xlsx');
Date=datetime(xall.textdata)';
data= xall.data';
numStepsTraining = round(ratio*numel(data));
indexTrain = 1:numStepsTraining;
dataTrain = data(indexTrain );
dateTrain = Date(indexTrain);
indexTest = numStepsTraining+1:size(data,2);
dataTest = data(indexTest);
dateTest = Date(indexTest);
optimVars = [
optimizableVariable('learningrate',[1e-5 1e-2],'Type','real','Transform',"log")
optimizableVariable('performFcn',{'mse' 'mae' 'sse' 'msesparse'},'Type','categorical')
optimizableVariable('mc',[5e-1 0.99],'Type','real',"Transform","log")
optimizableVariable('processFcns',{'mapminmax' 'mapstd'},'Type','categorical')
optimizableVariable('Lag',[5 20],'Type','integer')
optimizableVariable('hiddenLayerSize1',[7 25],'Type','integer')
optimizableVariable('hiddenLayerSize2',[7 25],'Type','integer')];
BayesObject = bayesopt(ObjFcnSN,optimVars, ...
'MaxTime',10*60*60, ...%10*60*60 训练最大时间
'Verbose',1,...
'NumSeedPoints',info(1),...%初始评估点数
'MaxObjectiveEvaluations',100,...%迭代次数
'ExplorationRatio',0.7,...%搜索倾向概率
% 得到最佳参数
optVars = bestPoint(BayesObject),
四、代码获取
后台**私信回复“43期”**即可获取下载链接