时序预测 | MATLAB实现贝叶斯优化CNN-LSTM时间序列预测(股票价格预测)
时序预测 | MATLAB实现贝叶斯优化CNN-LSTM时间序列预测(股票价格预测)
目录
- 时序预测 | MATLAB实现贝叶斯优化CNN-LSTM时间序列预测(股票价格预测)
- 效果一览
- 基本介绍
- 模型搭建
- 程序设计
- 学习总结
- 参考文献
效果一览
基本介绍
MATLAB实现贝叶斯优化CNN-LSTM(卷积长短期记忆神经网络)时间序列预测,Bayes-CNN-LSTM模型股票价格预测
模型搭建
- CNN-LSTM模型结合了CNN和LSTM的优点,CNN-LSTM网络模型如图1所示,本文使用的CNN-LSTM模型的第一部分是由卷积层和最大值组成的CNN部分池化层,对原始数据进行预处理并输入CNN卷积层,利用卷积核自适应提取生命特征,卷积层将遍历输入信息,将卷积核权重与局部序列进行卷积运算体管信息得到初步的特征矩阵,比原始序列数据(矩阵)更具表现力。
- 本文使用的池化层是最大池化层,池化操作对提取的特征进行数据降维,避免模型过拟合,保留主要特征。最大池化层将前一个卷积层得到的特征矩阵作为输入,在这个矩阵上滑动一个池化窗口,在每一次滑动中取池化窗口的最大值,输出一个更具表现力的特征矩阵。
- 池化后,连接一个 LSTM 层,提取相关向量由CNN构造成一个长期的时间序列作为LSTM的输入数据。卷积层将卷积层的数据展平(Flatten),模型中加入Flatten,将(height,width,channel)的数据压缩成一个长高宽通道的一维数组,然后我们可以添加直接密集层。
- 对卷积池化数据压缩特征操作,多个卷积特征提取框架提取的特征融合或从输出层融合,全连接层聚合学习到的特征,激活函数使用Relu。
- Relu函数具有单边抑制作用,可以产生更多的稀疏性,避免梯度消失。 在最终输出之前,将 Dropout 率设置为 0.2,以避免模型过拟合。
- 通常,在模型训练过程中需要对超参数进行优化,为模型选择一组最优的超参数,以提高预测的性能和有效性,例如 CNN-LSTM 模型中的batch_size、full_num、lstm_num、num_filter。 凭经验设置超参数会使最终确定的模型超参数组合不一定是最优的,这会影响模型网络的拟合程度及其对测试数据的泛化能力。
- 伪代码
- 在对 CNN-LSTM 使用贝叶斯优化时,不同的参数组合的 CNN-LSTM 作为自变量,平均误差(MAE)作为贝叶斯框架的输出y,具体步骤如下:
- 通过调整优化算法调整模型参数,学习重复率和贝叶斯优化超参数来调整模型参数。
程序设计
- 完整程序私信博主。
%% 搭建CNN模型
rng('default');
inputSize = 1;
numEpochs = 200;
batchSize = 16;
nTraining = length(label);
% CONV -> ReLU -> MAXPOOL -> FC -> DROPOUT -> FC -> SOFTMAX
layers = [ ...sequenceInputLayer(inputSize)convolution1dLayer(5,100,'Padding',2,'Stride', 1) % 卷积层 1batchNormalizationLayer;reluLayer(); % ReLU 层 1convolution1dLayer(5,70,'Padding',2,'Stride', 1); % 卷积层 2batchNormalizationLayer;maxPooling1dLayer(1,'Stride',1); % 最大池化 池化层 1convolution1dLayer(3,50,'Padding',1,'Stride', 1); % 卷积层 3reluLayer(); % ReLU 层 3maxPooling1dLayer(1,'Stride',1); convolution1dLayer(3,40,'Padding',1,'Stride', 1); % 卷积层 4reluLayer(); % ReLU 层 2maxPooling1dLayer(1,'Stride',1); % 最大池化 池化层 1fullyConnectedLayer(1,'Name','fc1')regressionLayer]options = trainingOptions('adam',... 'InitialLearnRate',1e-3,...% 学习率'MiniBatchSize', batchSize, ...'MaxEpochs',numEpochs);[net,info1] = trainNetwork(input_train,output_train,layers,options);%% 提取特征
fLayer = 'fc1';
trainingFeatures = activations(net, input_train, fLayer, ...'MiniBatchSize', 16, 'OutputAs', 'channels');
trainingFeatures=cell2mat(trainingFeatures);for i=1:length(trainingFeatures)TF{i}=double(trainingFeatures(:,i));
end%% 搭建LSTM模型
inputSize = 1;
numHiddenUnits = 100;
layers = [ ...sequenceInputLayer(inputSize)lstmLayer(numHiddenUnits,'OutputMode','last')lstmLayer(numHiddenUnits-30)lstmLayer(numHiddenUnits-60)fullyConnectedLayer(1)regressionLayer]options = trainingOptions('adam',... 'InitialLearnRate',1e-3,...% 学习率'MiniBatchSize', 8, ...'MaxEpochs',50, ...'Plots','training-progress');[net1,info1] = trainNetwork(TF,output_train',layers,options);
%% 测试集
% 测试集提取特征
testingFeatures = activations(net, input_test, fLayer, ...'MiniBatchSize', 8, 'OutputAs', 'channels');
testingFeatures=cell2mat(testingFeatures);for i=1:length(testingFeatures)TFT{i}=double(testingFeatures(:,i));
endYPred = predict(net1,TFT);
YPred=mapminmax('reverse',YPred,yopt);
学习总结
贝叶斯优化可以充分利用历史调优信息,减少不必要的目标函数评估,并改进参数搜索效率。在模型训练过程中,使用ADAM优化算法进一步优化网络权重参数,使得预测结果更准确。提出的基于超参数的优化搜索方案结合股票预测应采用CNN-LSTM模型,选用的模型具有更高的预测精度和泛化能力。
参考文献
[1] https://blog.csdn.net/kjm13182345320/article/details/127261869?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/127261869?spm=1001.2014.3001.5501
[3] G. W. Jiao, and C. Hu, G: Gun barrel life evaluation and prediction, J. Ordnance Equip.Eng. 39, 66 (2018).
[4] M. T. Li et al., Barrel life prediction method based on inner surface melting layer theory,J.Gun Launch Control, 5–8 (2009).
时序预测 | MATLAB实现贝叶斯优化CNN-LSTM时间序列预测(股票价格预测)相关推荐
- 回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出
回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出 目录 回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出 基本介绍 背景回顾 模型介绍 ...
- matlab贝叶斯回归,matlab使用贝叶斯优化的深度学习
原标题:matlab使用贝叶斯优化的深度学习 原文链接:http://tecdat.cn/?p=7954 此示例说明如何将贝叶斯优化应用于深度学习,以及如何为卷积神经网络找到最佳网络超参数和训练选项. ...
- python深度学习之基于LSTM时间序列的股票价格预测
1.本文是一篇LSTM处理时间序列的案例 我们先来看看数据集,这里包含了一只股票的开盘价,最高价,最低价,收盘价,交易量的信息. 本文基于LSTM对收盘价(close)进行预测 2. 单维对单步的预测 ...
- 稍微深入地介绍贝叶斯优化
在University of Colorado Boulder的ARPG实验室的小白一枚.最近在做贝叶斯优化(Bayesian Optimization)整定相机参数的research. 因为假期赋闲 ...
- python实现贝叶斯优化_贝叶斯优化的并行实现
python实现贝叶斯优化 The concept of 'optimization' is central to data science. We minimize loss by optimizi ...
- 让机器学习手把手指导你的下一步实验-基于贝叶斯优化的序贯实验
在企业的日常研发工作中, 工程师可能会面对众多潜在影响因子及这些因子间的复杂组合而无所适从,不知道如何通过实验构建这些因子与最终响应间的数学模型.类似困扰常出现在锂电池行业对于电解液配方的研究.医药行 ...
- 【故障诊断】基于贝叶斯优化支持向量机的轴承故障诊断附matlab代码
1 内容介绍 贝叶斯网络(Bayesian Network或BN)是人工智能领域进行建模和不确定性推理的一个有效工具.贝叶斯网推理的基本任务是:给定一组证据变量观察值,通过搜索条件概率表计算一组查询变 ...
- 回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出 基 ...
- 贝叶斯优化-matlab
当我们遇到的一个最优化问题,但是目标函数不知道,或者说目标函数是类似于黑盒子,很难用数学公式/程序写出来时,此时想要求得目标函数的极值,可以使用贝叶斯优化,其主要的适用的情景是维数不超过20维,目标是 ...
最新文章
- PHP设置二维码中间为logo
- 《JavaScript 闯关记》之原型及原型链
- 网络流量队列优先级相关知识点
- 腾讯云服务器 linux 镜像安装项目环境mysql心得
- intellij idea搭建springboot
- 在Altium Designer中利用阵列粘贴功能快速绘制元器件封装
- 【网络协议】IP协议、ARP协议、RARP协议
- 主机网络切换后,docker toolbox里的容器网络不通了,解决方法
- php oracle 存储过程,用PHP调用Oracle存储过程
- ass translation python(ass字幕文件半自动平移时间轴py脚本)
- CMYK,RGB颜色对照表
- 正弦波、方波、三角波的产生和两两之间相互转换
- 推理和论证(证明)的区别
- teamviewer Android 8,利用TeamViewer控制设备
- zic2xpm - 将 ZIICS 象棋片段 (chess pieces) 转换为 XBoard (XPM/XIM) 片段的工具。
- Nacos+Gateway503错误,No servers available for service
- “百度杯”CTF比赛 十一月场Fuzz
- react-native-beacons-manager在Android上的使用 --工作笔记
- FlyFish开发者说|开源低代码平台的体验与思考
- pocketsphinx 模型库_pocketSphinx 嵌入式关键词唤醒