时序预测

2023-11-08

时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测

预测效果

1
2
3
4

基本介绍

Matlab基于PSO-LSTM粒子群算法优化长短期记忆网络的时间序列预测,PSO-LSTM时间序列预测(完整程序和数据)
优化参数为学习率,隐藏层节点个数,正则化参数,要求2018b及以上版本,matlab代码。
评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。

模型介绍

提出一种基于粒子群优化( PSO) 的长短期记忆( LSTM) 预测模型( PSO-LSTM) ,该模型在LSTM 模型的基础上进行改进和优化,因此擅长处理具有长期依赖关系的、复杂的非线性问题。通过自适应学习策略的PSO 算法对LSTM 模型的关键参数进行寻优,使数据特征与网络拓扑结构相匹配,提高预测精度。

PSO模型

  • 粒子群算法的思想源于对鸟类社会行为的研究。鸟群捕食最简单有效的方法是搜索距离食物最近的鸟的所在区域,通过个体间的协助和信息共享实现群体进化。
  • 算法将群体中的个体看作多维搜索空间中的一个粒子,每个粒子代表问题的一个可能解,其特征信息用位置、速度和适应度值3 种指标描述,适应度值由适应度函数计算得到,适应度值的大小代表粒子的优劣。
  • 粒子以一定的速度“飞行”,根据自身及其他粒子的移动经验,即自身和群体最优适应度值,改变移动的方向和距离。不断迭代寻找较优区域,从而完成在全局搜索空间中的寻优过程。

LSTM模型

  • LSTM 是一种特殊的循环神经网络。它通过精心设计“门”结构,避免了传统循环神经网络产生的梯度消失与梯度爆炸问题,能有效地学习到
    长期依赖关系。因此,在处理时间序列的预测和分类问题中,具有记忆功能的LSTM 模型表现出较强的优势。
    1

PSO-LSTM模型

  • 将LSTM初始学习率、隐藏层单元数目作为PSO 算法的优化对象,根
    据超参数取值范围随机初始化各粒子位置信息。
  • 其次,根据粒子位置对应的超参数取值建立LSTM 模型,利用训练数据对模型进行训练。将验证数据代入训练好的模型进行预测,以模型在
    验证数据集上的均方误差作为粒子适应度值。
    2
  • PSO-LSTM 模型算法流程如下:
  • 步骤1 将实验数据分为训练数据、验证数据和测试数据。
  • 步骤2 将LSTM 模型中学习率,隐藏层节点个数,正则化参数作为优化对象,初始化自适应PSO 算法。
  • 步骤3 划分子群。
  • 步骤4 计算每个粒子的适应度值。以各粒子对应参数构建LSTM 模型,通过训练数据进行训练,验证数据进行预测。
  • 步骤5 根据粒子适应度值与种群划分结果,确定全局最优粒子位置pbest 和局部最优粒子位置gbest。
  • 步骤6 根据PSO 算法的分别对普通粒子和局部最优粒子位置进行更新。
  • 步骤7 判断终止条件。若满足终止条件,返回最优超参数取值; 否则,返回步骤3。
  • 步骤8 利用最优超参数构建LSTM 模型。
  • 步骤9 模型通过训练数据和验证数据进行训练,测试集进行预测,得到预测结果。

程序设计

% 1. 寻找最佳参数
NN=5;                   %初始化群体个数
D=2;                    %初始化群体维数,
T=10;                   %初始化群体最迭代次数
c1=2;                   %学习因子1
c2=2;                   %学习因子2
%用线性递减因子粒子群算法
Wmax=1.2; %惯性权重最大值
Wmin=0.8; %惯性权重最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%每个变量的取值范围
ParticleScope(1,:)=[10 200];  % 中间层神经元个数
ParticleScope(2,:)=[0.01 0.15]; % 学习率
ParticleScope=ParticleScope';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xv=rand(NN,2*D); %首先,初始化种群个体速度和位置
for d=1:D
    xv(:,d)=xv(:,d)*(ParticleScope(2,d)-ParticleScope(1,d))+ParticleScope(1,d);  
    xv(:,D+d)=(2*xv(:,D+d)-1 )*(ParticleScope(2,d)-ParticleScope(1,d))*0.2;
end
x1=xv(:,1:D);%位置
v1=xv(:,D+1:2*D);%速度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------初始化个体位置和适应度值-----------------
p1=x1;
pbest1=ones(NN,1);
for i=1:NN
    pbest1(i)=fitness(x1(i,:));
end
%------初始时全局最优位置和最优值---------------
gbest1=min(pbest1);
lab=find(min(pbest1)==pbest1);
g1=x1(lab,:);
gb1=ones(1,T);

参考资料

[1] https://blog.csdn.net/kjm13182345320?spm=1010.2135.3001.5343
[2] https://mianbaoduo.com/o/bread/mbd-YpiamZpq
[3] SI Y W,YIN J. OBST-based segmentation approach to financial time series[J]. Engineering Applications of Artificial Intelligence,2013,26( 10) : 2581-2596.
[4] YUAN X,CHEN C,JIANG M,et al. Prediction Interval of Wind Power Using Parameter Optimized Beta Distribution Based LSTM Model[J]. Applied Soft Computing,2019,82:105550.143

致谢

  • 大家的支持是我写作的动力!
  • 感谢大家订阅,记得备注!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时序预测 的相关文章

  • 信捷plc,9伺服通用程序架构

    信捷plc 9伺服通用程序架构 程序已经升级 程序高度模块化 可轻易拓展十几二十多个轴 plc是目前性价比最高的方案 60个点10轴高速脉冲输出 走s形 正弦曲线加减速 程序采用C语言 梯形图架构 玩转信捷系统 可运用于三菱 西门子 欧姆龙

随机推荐

  • 小游戏 《唐僧大战白骨精》

    小游戏 唐僧大战白骨精 有点小无语的小游戏 当时做的还挺认真的 rint 欢迎光临 xxx 游戏 n 请选择你的身份 n 1 唐僧 n 2 白骨精 n sf input 请选择 1 2 if sf 1 print 你已经选择了1 你将以 g
  • pandas写入字典,或者pandas以各种格式输出数据

    1 将字典列表写入到pandas import pandas as pd rows buyer percent 23 2 tier city 1 buyer percent 18 54 tier city 2 df pd DataFrame
  • Python中利用xpath解析HTML的方法

    本文主要介绍了Python中利用xpath解析HTML的方法 利用其lxml html的xpath对html进行分析 获取抓取信息 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 在进行网页抓取的时候 分析定位html节点是获取抓取信息的
  • SpringBoot整合LogBack

    本文演示SpringBoot整合LogBack 一 项目搭建 新建一个SpringBoot项目 引入依赖
  • 【shell中判断是否是整数】

    方法一 使用expr 看该数字是否可以进行加运算 root manager day4 cat ifnum sh bin bash Author pyy Date 2020 06 15 FileName ifnum sh 判断用户输入的是否是
  • Java是值传递还是引用传递?区别是什么?

    文章目录 值传递 引用传递 两者区别 Java到底是值传递还是引用传递 在Java中参数的传递主要有两种 值传递和 引用传递 值传递 实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参 也就是说 在方法调
  • Java 数组 初始化方式 和遍历方式

    Java 数组 初始化方式总结 第一种 静态初始化 所谓静态初始化 初始化时由程序员显式指定每个数组元素的初始值 有系统决定数组的长度 简单实例 String strArr 张三 李四 王五 第二种 动态初始化 所谓动态初始化 初始化时由程
  • CTF-Web13(涉及哈希长度扩展攻击,难度偏大)

    13 让我进去 首先拿到题目 查看源代码 源代码没问题 直接开始burpsuite尝试key 两行直接admin admin测试 通过burpsuite可以看到以下内容 在Response中看到set cookies无疑是最容易注意到的东西
  • sql查询小记

    1 在MySQL中判断某个字段是否为空需要使用IS NULL 或者 IS NOT NULL 在MySQL5 2 7中测试通过 例子1 Select FROM Test WHERE CODE IS NULL 例子2 Select FROM T
  • 等保测评--通信网络安全测评要求

    信息安全等级保护 是对信息和信息载体按照重要性等级分级别进行保护的一种工作 在中国 美国等很多国家都存在的一种信息安全领域的工作 在中国 信息安全等级保护广义上为涉及到该工作的标准 产品 系统 信息等均依据等级保护思想的安全工作 狭义上一般
  • Python的迭代器和生成器使用示例

    迭代器和生成器是Python中强大而灵活的工具 用于处理可迭代对象的数据 它们提供了一种高效的方式来遍历和处理大型数据集 同时节省内存 在本文中 我们将介绍迭代器和生成器的概念 并提供一些实例来展示它们的用法 迭代器 Iterators 迭
  • repeat多级嵌套

    效果图 前台的 repeat asp 代码 C 代码
  • python爬虫——校花网

    爬取校花网图片 校花网http www xiaohuar com list 1 0 html 1 进入网站 我们会发现许多图片 这些图片就是我们要爬取的内容 2 对网页进行分析 按F12打开开发着工具 本文使用谷歌浏览器 我们发现每个图片都
  • 组合优化问题

    我们经常会遇到需要寻找一个最优方案的问题 也即最优化问题 我们首先对实例和问题做一个区分 在本课程中 不失一般性地 当我们在做一般性讨论的时候 都假定所讨论的最优化问题是最小化问题 定义1 1 1 最优化问题的实例 一个最优化问题的一个实例
  • 使用opencv识别视频中的数字识别

    使用OpenCV识别视频中的数字 需要对视频帧进行图像处理 以提取数字 一种常用的方法是使用边缘检测算法 如Canny边缘检测 检测图像中的边缘 然后 使用数字识别技术 如光学字符识别 OCR 识别图像中的数字 最后 使用算法对识别结果进行
  • ESP8266——AT指令发送POST请求

    AT指令发送POST请求 AT指令发送流程 注意 在串口助手调试过程中 每次发送都要加上 换行 且不能有多于的 空格 否则8266会将发送的数据原样返回 AT 返回值为OK AT CWMODE 1 返回值为OK 设置模块为STA模式 此时可
  • SpringMVC响应使用案例(带数据页面跳转,快捷访问路径,返回json数据)

    页面跳转 转发 默认 RequestMapping showPage1 public String showPage1 System out println user mvc controller is running return WEB
  • Daiwa Securities Co. Ltd. Programming Contest 2021(AtCoder Regular Contest 128)(A+B)

    这里写目录标题 A Gold and Silver B Balls of Three Colors A Gold and Silver 题目链接 https atcoder jp contests arc128 tasks arc128 a
  • React和JSX入门

    在本教程中 我们将了解如何开始创建React应用 并尝试了解JSX的基础知识 本教程假定您对HTML和JavaScript有很好的了解 什么是React React是Facebook开发JavaScript库 用于轻松管理Web应用程序的用
  • 时序预测

    时序预测 MATLAB实现PSO LSTM 粒子群优化长短期记忆神经网络 时间序列预测 目录 时序预测 MATLAB实现PSO LSTM 粒子群优化长短期记忆神经网络 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型 LSTM模型 P