【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期”**即可获取下载链接