当前位置:网站首页>分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测
分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测
2022-08-09 10:03:00 【机器学习之心】
分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测
预测效果
基本介绍
本次运行测试环境MATLAB2020b
总体而言,CNN用作特征(融合)提取,然后将输出的feature映射为序列向量输入到LSTM当中。
模型描述
- 长短期记忆神经网络(LSTM)是一种特殊循环神经网络(RNN),在RNN的基础上引入了门控单元系统,采用输入门、遗忘门和输出门对信息进行选择性控制,适当遗忘历史信息并依据新信息更新细胞状态。
- CNN模型对输入数据进行逐层卷积和池化操作,主要由输入层、卷积层、池化层、全连接层和输出层组成。
- 与LSTM模型的构建类似,也需要将数据生成为堆叠数据类型,同时还在输入矩阵中添加了各变量的变动率作为额外的输入向量。
- 在数据集选取方面,本模型数据集选取思路与LSTM模型基本保持一致。但由于变动率特征的存在,原始时间序列的第一个样本将缺少变动率的特征。考虑到异常数据在全体中所占比例较小,故选择直接将原始时间序列的第一个样本剔除,从而保证特征的完备性。
- 考虑到CNN模型在预测系统中起到的作用主要是捕捉交叉特征,故引入膨胀卷积这一特殊的卷积模式,并使用残差学习和瓶颈方法来规避深化卷积神经网络带来的梯度消失问题,将原始特征直接作为全连接层的一部分特征加入到模型之中,以防止过拟合和退化问题。
- 可以将货币价格图像与同一数据的价格时间序列数据同时训练,从而使两个模型互补。针对LSTM-CNN结构的构建方法, 提出了联合RMSE损失的LSTM-CNN模型。其构建过程为先分别建立CNN模型与LSTM模型,利用损失函数计算各模型的损失值,再按照一定比例联合两个模型的损失值使总RMSE损失尽可能小且预测精度较高。本文采取类似的构建方法,同样将CNN-LSTM模型的构建过程分三步进行。
- 第一阶段采用CNN模型架构,采用与上文单一CNN模型相同的架构;第二步建立LSTM模型,同样采用与上文LSTM模型相同的架构;而在第三步,本文采取按串联合两个模型预测准确度的方法。
- 利用既有数据的白噪检验P值作为CNN-LSTM模型预测的置信水平,并通过公式计算混合模型的预测数值。
程序设计
- 完整源码私信博主
%% CNNLSTM训练选项
% 批处理样本
miniBatchSize =10;
% 最大迭代次数
MaxEpochs = 100;
% 学习率
learningrate = 0.005;
% 一些参数调整
if gpuDeviceCount>0
mydevice = 'gpu';
else
mydevice = 'cpu';
end
options = trainingOptions( 'adam', ...
'MaxEpochs',100, ...
'MiniBatchSize',miniBatchSize,...
'GradientThreshold',1, ...
'InitialLearnRate',learningrate, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',20, ...
'LearnRateDropFactor',0.8, ...
'L2Regularization',1e-3,...
'Verbose',false, ...
'ExecutionEnvironment',mydevice,...
'Plots','training-progress');
学习总结
通过将两个模型进行加权得到CNN-LSTM多特征分类预测模型,其预测效果均优于两个单一模型,有效融合了LSTM提取时序特征的优点和CNN提取深层特征的优点。
参考资料
[1] 郭思涵. 基于改进循环神经网络的比特币价格预测及交易策略研究[D]: [硕士学位论文]. 上海: 上海师范大学, 2021.
[2] 张宁, 方靖雯, 赵雨宣. 基于LSTM混合模型的比特币价格预测[J]. 计算机科学, 2021, 48(S2): 39-45.
[3] 曹超凡, 罗泽南, 谢佳鑫, 李路. MDT-CNN-LSTM模型的股价预测研究[J]. 计算机工程与应用, 2022, 58(5): 280-286.
[4] 杨丽, 吴雨茜, 王俊丽, 刘义理. 循环神经网络研究综述[J]. 计算机应用, 2018, 38(S2): 1-6+26.
[5] 徐剑波. 基于数据挖掘技术的股票技术指标分析预测系统的设计与实现[D]: [硕士学位论文]. 成都: 电子科技大学, 2012.
[6] 石赛男. 股票技术分析中MACD指标的有效性检验[D]: [硕士学位论文]. 成都: 西南财经大学, 2011.
[7] 周飞燕, 金林鹏, 董军. 卷积神经网络研究综述[J]. 计算机学报, 2017, 40(6): 1229-1251.
[8] 李彦冬, 郝宗波, 雷航. 卷积神经网络研究综述[J]. 计算机应用, 2016, 36(9): 2508-2515+2565.
[9] 严春满, 王铖. 卷积神经网络模型发展及应用[J]. 计算机科学与探索, 2021, 15(1): 27-46.
[10] 卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述[J]. 数据采集与处理, 2016, 31(1): 1-17.
[11] 方义秋, 卢壮, 葛君伟. 联合RMSE损失LSTM-CNN模型的股价预测[J]. 计算机工程与应用, 2022, 58(9): 294-302.
边栏推荐
- Technology Sharing | How to simulate real usage scenarios?mock technology to help you
- Collections and Functions
- cannot import name ‘load_offloaded_weights‘ from ‘accelerate.utils‘ (/home/huhao/anaconda3/envs/huha
- 基于信号量与环形队列实现读写异步缓存队列
- MySQL约束关系,你必须要知道的知识点!
- ORA-00600 [16703], [1403], [20]问题分析及恢复
- mac 上安装Redis和配置
- LeetCode148:排序链表 归并排序,思路清晰,C语言练习看过来!
- 字符串函数和内存函数
- 4. Generics and Utilities
猜你喜欢
Redis + NodeJS 实现一个能处理海量数据的异步任务队列系统
Win系统 - 罗技 G604 鼠标蓝灯闪烁、失灵解决方案
开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
[贴装专题] 视觉贴装平台与贴装流程介绍
BigDecimal用法常用操作记录
【八大排序④】归并排序、不基于比较的排序(计数排序、基数排序、桶排序)
Super detailed MySQL basic operations
latex中复杂公式换行等号对齐
[Machine Learning] Basics of Data Science - Basic Practice of Machine Learning (2)
字符串函数和内存函数
随机推荐
7.FileFilter interface
socket实现TCP/IP通信
3. Practice the Thread
Apache Log4j 2 远程代码执行漏洞详解
公里周日
5.Set interface and implementation class
LeetCode147:对链表进行插入排序 画图分析 思路清晰!
蓄电池建模、分析与优化(Matlab代码实现)
浏览器的报错分类
梦笔记0809
五个不同事物隔离级别,七个事物传播行为
学长告诉我,大厂MySQL都是通过SSH连接的
关于SQL的SELECT查询语句的一般格式的描述2021-05-19
【八大排序①】插入排序(直接插入排序、希尔排序)
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
Tom Morgan | 人生二十一条法则
Battery modeling, analysis and optimization (Matlab code implementation)
MySQL索引、视图、设计三范式,通俗易懂,不可错过!
MySQL关于表的知识点,进来学习!
Source GBase database, oracle quote "ORA - 01000: beyond the shop open the cursor"