禅城技术支持骏域网站建设/网站平台推广
时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测
目录
- 时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测
- 效果一览
- 基本介绍
- 模型介绍
- LSTM模型
- SVR模型
- LSTM-SVR模型
- 程序设计
- 参考资料
- 致谢
效果一览
基本介绍
本次运行测试环境MATLAB2018b;
MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测;主要研究问题不限于交通预测、负荷预测、气象预测、经济预测等。LSTM和SVR组合预测,结合LSTM序列提取优势和SVR非线性提取优势,组合预测具体介绍如下。
模型介绍
提出了一种基于长短时记忆神经网络算法的支持向量机(LSTM-SVR)的预测方法,为了保证支持向量机预测结果的准确性,选用网格搜索法对支持向量机参数进行优化处理。为了减小在预测算法中,由于误差的传递导致最终预测结果与实际结果产生较大偏离,在预测运算过程中对采用长短时记忆神经网络组合预测,对预测结果进行组合。
LSTM模型
- LSTM 属于循环神经网络( recurrent neural network,RNN) 的一种,其特殊之处在于RNN 仅具有记忆暂存的功能,LSTM 兼具长短期记忆功能,LSTM 解决了RNN 的长期依赖问题,其特点是在RNN 各层结构单元中添加了输入门、遗忘门和输出门等闸门。通过“门”控制记忆状态、存储任意时间和距离的信息,解决了RNN 神经网络只有短期记
忆、没有长期记忆的问题。
- LSTM 在t 时刻的输入为xt,输出为yt,神经元记忆状态为st,其输出门it、遗忘门ft、输出门ot;
- 构建基于长短期记忆网络负荷预测模型,包括数据处理、计算激活函数、调整参数、训练模型、评价结果等。
- 数据预处理,分别对冲击性负荷影响因素、稳定性负荷影响因素进行数据归一化处理,使其数值为[0,1];
- 按照网络各层之间的权重参数,网络的第t层,其权重参数( wt
,bt) 由上一层的数据决定。- 将上一层输入输出作为LSTM 网络模型的输入和输出进行训练,调整模型参数,代价函数为平方重构误差。
- 完成训练过程后,利用负荷数据,通过LSTM 模型输出结果,将得到的负荷预测结果进行反归一化处理,得到负荷真实预测值。
- 将得到的负荷预测值与实际负荷进行对比,采用相对误差作为衡量标准,衡量LSTM网络模型的预测准确性。
SVR模型
- SVM 算法是一种基于最小化结构风险的机器统计学习理论,通过间隔最大化的学习策略,最终转化为一个凸二次规划问题的求解。
- SVM 在预分析中具有适应小样本学习和强鲁棒性的特点,能补充基于长短期记忆网络算法对大量样本的需求。
- SVR是SVM用于回归的任务。
- 通过直接法或间接法构造合适的回归任务,将某时刻下的影响因素
视为回归的依据,而该时刻负荷的预测值视为最终回归结果的标签。主要的预测过程如下。
- 数据处理与归一化,输入数据与2.1 节中相同,采用相同的预处理方式。
- 利用试验查找方法,得到最佳惩罚参数C、核函数和不敏感损失函数ε。
- 仿真测试,输入参数,进行仿真测试。
- 数据反归一化,得到数据预测值。
- 将得到的负荷预测值与实际负荷进行对比,采用相对误差作为衡量标准,衡量SVM 模型的预测准确性。
LSTM-SVR模型
- LSTM 算法时序性强,能够充分挖掘历史数据的规律,其缺点是要求样本的数量多; SVM 算法具有非线性映射和小样本学习的优势,但时序性差。
- 为充分融合二者的优势提出融合LSTM 和SVM 算法的钢铁电力短期负荷预测,权重分配采用最小二乘算法。
程序设计
- 完整程序和数据下载:私信博主。
- 主程序
nwhole=length(data);
%计算数据长度
train_ratio=0.90;
ntrain=round(nwhole*train_ratio);
%% CDM
options = optimset;
[W_train,E_train] = fmincon(@(W)ObjectFunction(W,R_train,LSTM_train,SVM_train),W0,LPA,LPB,Aeq,Beq,LB,UB,NONLCON,options);
[W_test,E_test] = fmincon(@(W)ObjectFunction(W,R_test,LSTM_test,SVM_test),W0,LPA,LPB,Aeq,Beq,LB,UB,NONLCON,options);
fprintf('W_LSTM_test=%f,W_SVM_test=%f',W_test(1),W_test(2))
C_test =W_test(1)*LSTM_test +W_test(2)*SVM_test;
fprintf('\n\n');
%% 数据输出
%-------------------------------------------------------------------------------------
disp("——————组合模型预测结果——————————")
disp("组合模型预测值 真实值 组合模型误差 组合模型相对误差 ")
disp([C_test R_test C_error_test C_pererror_test])
disp('预测绝对平均误差MAE');
disp('LSTM SVM 组合模型');
disp([LSTM_MAE SVM_MAE C_MAE]);
disp('预测平均绝对误差百分比MAPE');
disp('LSTM SVM 组合模型');
disp([LSTM_MAPE SVM_MAPE C_MAPE]);
disp('预测均方误差MSE')
disp('LSTM SVM 组合模型');
disp([LSTM_MSE SVM_MSE C_MSE]);
disp('预测均方根误差RMSE')
disp('LSTM SVM 组合模型');
disp([LSTM_RMSE SVM_RMSE C_RMSE]);
W_LSTM_train=0.780212,W_SVM_train=0.219788
——————组合模型预测结果——————————
预测绝对平均误差MAE
LSTM SVM 组合模型
9.7268 10.3683 9.1884
预测平均绝对误差百分比MAPE
LSTM SVM 组合模型
0.0052 0.0056 0.0049
预测均方误差MSE
LSTM SVM 组合模型
1.0e+04 *
1.1857 1.3478 1.0736
预测均方根误差RMSE
LSTM SVM 组合模型
108.8883 116.0951 103.6134
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/120621147?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/120406657?spm=1001.2014.3001.5502
致谢
- 大家的支持是我写作的动力!
- 感谢大家!
相关文章:

时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测
时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测 目录时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测效果一览基本介绍模型介绍LSTM模型SVR模型LSTM-SVR模型程序设计参考资料致谢效果一览 基本介绍 本次运行测试环境MA…...

分阶段构建golang运行环境Dockerfile镜像
在开始这项工作之前大家可以先去看一下docker官方给出关于空镜像scratch的说明,采用官方简单的一句话就是:scratch是一个明确的空图像,特别是对于“从头开始”构建图像。分阶段构建镜像就会用到scratch这个空镜像,这样的好处是可以…...

Vue-cli脚手架在做些什么(源码角度分析)
什么是Vue脚手架?在学习初期,我们的项目往往需要借助webpack、vite等打包工具配置Vue的开发环境,但是在真实开发中我们不可能每个项目从头来完成所有的webpack配置,这样显得开发的效率会大大的降低;所有的真实开发中&a…...

【Nginx】|入门连续剧——安装
作者:狮子也疯狂 专栏:《Nginx从入门到超神》 坚持做好每一步,幸运之神自然会降临在你的身上 目录一. 🦁 前言Ⅰ. 🐇 为啥我们要使用Nginx?二. 🦁 搭建流程Ⅰ. 🐇 环境准备Ⅱ. &…...

从0开始学python -38
Python3 面向对象-1 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对…...

算法设计与分析期末考试复习(二)
分治法 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。最好使子问题的规模大致相同。 分解(Divide):将一个难以直接解决的大问题,分割成一些规模较小的子…...

九龙证券|4D毫米波雷达成市场新宠,相关概念股大涨,会贡献多少业绩?
近日,4D毫米波雷达成为A股新宠,相关概念股如经纬恒润(688326.SH)一周内涨幅接近20%,威孚高科(000581.SZ)5个买卖日内涨幅超越25%。 有音讯称特斯拉将在3月1日投资者活动日会宣告新款Model 3的全…...

Git天天用,不得不看的那些事
作为一个工作两年的开发同学,git是每天都要接触的工具。但IDEA对git的封装已经满足了日常的代码提交需求,所以一直是以点点点的形式进行代码提交与更新,几乎没用命令行提交过(现在想来也是有些惭愧),对于gi…...

IDE 文档注释使用,模板注释,ide配置templates
文档注释基于javadoc模板 类注释 /*** 暂无介绍** author admin* version 1.0.0* <dt><span class"simpleTagLabel">时间:</span></dt>* <dd>2023/2/24</dd>*/方法注释 /*** 暂无描述** author admin* param args */javadoc相…...

力扣-查询近30天活跃用户数
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1141. 查询近30天活跃用户数二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.其他总结前言 一、题目&…...

企企通聚源池| 聚合海量资源全网寻源,赋能供采双方撮合交易
目前,我们正处于一个飞速发展的信息时代,随着大数据时代的来临,在企业的日常经营中,数据无处不在,各类数据的采集、整合、分析对企业的发展、决策有着十分重要的作用。数据管理作为企业一项重要的建设工作,…...

【算法数据结构体系篇class09】:链表问题:快慢指针、回文结构、复制、中点,分区、相交
一、链表解题的方法论 1)对于笔试,不用太在乎空间复杂度,一切为了时间复杂度2)对于面试,时间复杂度依然放在第一位,但是一定要找到空间最省的方法二、链表常用数据结构和技巧1)使用容器(哈希表、数组等)2)快…...

实验室信息化管理行业方案
为适应新时代下的管理机制与应用场景,越来越多的检测实验室需对研发部门和实验部门进行全面的、现代化的、电子化的综合管理,帮助检测机构对实验室的规划与计划、项目立项与管理、项目成果、合同,以及基建等工作进行统一的管理,而…...

docker学习
docker 环境搭建 MySql # mysql5.7 docker run --name mysql10 -p 3306:3306 -v D:\MySql\conf:/etc/mysql/conf.d -v D:\MySql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7docker run --name mysql10 -p 3306:3306 -v /etc/mysql/conf.d:/etc/mysql/co…...

Linux 常用命令
重启 # 重启(root 用户操作) reboot# 强制重启 reboot -f关机 # 关机 # shutdown [OPTION] [TIME] [MESSAGE] shutdown-h 关机 -r 重启-c 取消上一个命令 第二个参数指的是多少分钟后执行操作,以分钟为单位,如果不加时间&am…...

数据结构-顺序表(2)
目录 1. 线性表 2. 顺序表 2.1 动态顺序表 3. 接口实现 前期工作 3.1 初始化、销毁与检查容量 3.1.1 初始化 3.1.2 销毁 3.1.3 检查容量 3.2 尾插 3.3 尾删 3.4 头插 3.5 头删 3.6 插入 3.7 删除 顺序表源码 SeqList.h SeqList.c test.c 写在最后ÿ…...

初学C/C++内存管理--new和delete的使用
一,内存分布 栈区: 一般的局部变量和函数的返回数据以及返回地址,函数的参数都在战栈区上开辟空间。栈区开空间一般由编译器自动管理,出了生命周期自动释放。也可以通过一些方式自己手动开辟栈区空间,不过一般用不到…...

【Java】volatile
一、volatile volatile是Java虚拟机提供的轻量级的同步机制,它有3个特性: 1)保证可见性 2)不保证原子性 3)禁止指令重排 当写一个volatile变量时,JMM会把该…...

混沌工程 Chaos Mesh 实践经验(持续更新)
使用 k8s JVM故障 Linux内核版本 Linux 系统内核必须为 4.1 及以上版本。 不然会一直失败,可以从Chaos Mesh dashboard前端看到。 对native方法注入故障无效 实测对Thread.sleep(Long) 注入故障无效,猜测是因为对native方法无效,大概因为…...

追梦之旅【数据结构篇】——详解C语言实现链栈
详解C语言实现链栈~😎前言🙌整体实现内容分析💞1.头文件编码实现🙌2.功能文件编码实现🙌3.测试函数功能代码🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右…...

oracle数据库常用操作
1.连接登录切换用户su - oracle以管理员模式登录到sqlplus:sqlplus / as sysdba oracle登录身份有三种:1.1Normal 普通身份;1.2.sysdba 系统管理员身份;若以 ‘sysdba’ 方式认证,登录用户为 ‘SYS’,为 Or…...

一文教会你如何在Linux系统中使用Docker安装Redis 、以及如何使用可视化工具连接【详细过程+图解】
文章目录1、安装redis2、在外部创建配置文件3、创建redis4、启动测试redis5、数据持久化存储6、使用可视化工具连接redis前言在windows上安装过reids、在linux上也安装过redis,但是都没有docker上安装redis方便。这里给出docer安装redis的相关教程1、安装redis 默认…...

mysql 内存架构
1. 背景 从 innodb 的整体架构中可以知道 innodb 的内存架构中分为 buffer pool 缓存区, change pool 修改缓冲区, adaptive hash index 自适应哈希索引, 和 log buffer 日志缓冲区. 2. buffer pool buffer pool 是用于缓冲磁盘页的数据,mysql 的80%的内存会分配给…...

Helm安装Harbor
一、介绍 1.1 Harbor Harbor 是由 VMware 公司为企业用户设计的 Registry Server 开源项目,包括了权限管理 (RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。目前该项…...

梯度下降优化器:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam -> AdamW
目录 1 前言 2 梯度概念 3 一般梯度下降法 4 BGD 5 SGD 6 MBGD 7 Momentum 8 SGDM(SGD with momentum) 9 NAG(Nesterov Accelerated Gradient) 10 AdaGrad 11 RMSProp 12 Adadelta 13 Adam 13 Nadam 14 AdamW 15 Lion(EvoLve…...

Ubuntu下gcc多版本管理
Ubuntu下多gcc版本的管理 开发过程中,在编译一个开源项目时,由于代码使用的c版本过高,而系统内置的gcc版本过低时,这个时候我们就需要升级gcc版本,但是为了避免兼容性问题,安装多个版本的gcc,然…...

吃透8图1模板,人人可以做架构
前言 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴问尼恩: 大佬,我们写架构方案, 需要从哪些方面展开 大佬,我们写总体设计方案需要一些技术亮点,可否发一些给我参考下 诸如此类,问法很多…...

骨传导耳机推荐哪款好,列举几款是市面上热销的骨传导耳机
骨传导耳机是一种新型的耳机类型,通过震动和声音将振动传到了耳道外,对耳道不会产生损伤,能够保护听力。相比于传统耳机的优势有很多,比如运动时佩戴更加稳固,也可以在听歌时与人交谈。但在市面上的骨传导耳机款式可…...

CFS三层内网渗透
目录 环境搭建 拿ubuntu主机 信息收集 thinkphp漏洞利用 上线msf 添加路由建立socks代理 bagecms漏洞利用 拿下centos主机 msf上线centos 添加路由,建立socks代理 拿下win7主机 环境搭建 设置三块虚拟网卡 开启虚拟机验证,确保所处网段正确&a…...

SQL server设置用户只能访问特定数据库、访问特定表或视图
在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认…...