当前位置: 首页 > news >正文

多维时序 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测

多维时序 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测

目录

    • 多维时序 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

1.MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测(完整源码和数据)
2.麻雀算法优化参数为隐含层节点数,最大训练次数,初始学习率参数。
3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。建立麻雀搜索算法的数学模型,主要规则如下所述:
(1)发现者通常拥有较高的能源储备并且在整个种群中负责搜索到具有丰富食物的区域,为所有的加入者提供觅食的区域和方向。在模型建立中能量储备的高低取决于麻雀个体所对应的适应度值(Fitness Value)的好坏。
(2)一旦麻雀发现了捕食者,个体开始发出鸣叫作为报警信号。当报警值大于安全值时,发现者会将加入者带到其它安全区域进行觅食。
(3)发现者和加入者的身份是动态变化的。只要能够寻找到更好的食物来源,每只麻雀都可以成为发现者,但是发现者和加入者所占整个种群数量的比重是不变的。也就是说,有一只麻雀变成发现者必然有另一只麻雀变成加入者。
(4)加入者的能量越低,它们在整个种群中所处的觅食位置就越差。一些饥肠辘辘的加入者更有可能飞往其它地方觅食,以获得更多的能量。
(5)在觅食过程中,加入者总是能够搜索到提供最好食物的发现者,然后从最好的食物中获取食物或者在该发现者周围觅食。与此同时,一些加入者为了增加自己的捕食率可能会不断地监控发现者进而去争夺食物资源。
(6)当意识到危险时,群体边缘的麻雀会迅速向安全区域移动,以获得更好的位置,位于种群中间的麻雀则会随机走动,以靠近其它麻雀。

Bi-LSTM 神经网络结构模型分为 2 个独立的LSTM,输入序列分别以正序和逆序输入至 2 个LSTM 神经网络进行特征提取,将 2个输出向量(即提取后的特征向量)进行拼接后形成的词向量作为该词的最终特征表达。Bi-LSTM 的模型设计理念是使 t 时刻所获得特征数据同时拥有过去和将来之间的信息,实验证明,这种神经网络结构模型对文本特征提取效率和性能要优于单个 LSTM 结构模型。

程序设计

  • 完整程序和数据下载方式(资源处直接下载):MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
clc;clear;close all;format compact
%%%% 采用ssa优化
[x ,fit_gen,process]=ssaforbilstm(XTrain,YTrain,XTest,YTest);%分别对隐含层节点 训练次数与学习率寻优
%% 参数设置
pop=5; % 种群数
M=20; % 最大迭代次数
dim=4;%一共有4个参数需要优化
lb=[1   1   1  0.001];%分别对两个隐含层节点 训练次数与学习率寻优
ub=[100 100 50  0.01];%这个分别代表4个参数的上下界,比如第一个参数的范围就是1-100
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
layers = [ ...sequenceInputLayer(numFeatures)bilstmLayer(numHiddenUnits)fullyConnectedLayer(numResponses)regressionLayer];
options = trainingOptions('adam', ...'MaxEpochs',250, ...'GradientThreshold',1, ...'InitialLearnRate',0.005, ...'LearnRateSchedule','piecewise', ...'LearnRateDropPeriod',125, ...'LearnRateDropFactor',0.2, ...'ExecutionEnvironment','cpu', ...'Verbose',0, ...'Plots','training-progress');
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   
net = trainNetwork(XTrain,YTrain,layers,options);
dataTestStandardized = (dataTest - mu) / sig;
XTest = dataTestStandardized(1:end-1);
net = predictAndUpdateState(net,XTrain);
[net,YPred] = predictAndUpdateState(net,YTrain(end));
numTimeStepsTest = numel(XTest);

参考资料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502
[3] https://blog.csdn.net/article/details/126043107?spm=1001.2014.3001.5502

相关文章:

  • 隧道代理HTTP工作原理:一场奇妙的网络魔法表演
  • Hadoop(2):常见的MapReduce[在Ubuntu中运行!]
  • python高级代码
  • SparkStreaming_window_sparksql_reids
  • 驶入未来:网约车运营数据揭秘与可视化大屏展示
  • 【JavaEE进阶】 初识Spring Web MVC
  • VSCode 加Cortex-Debug嵌入式调试方法
  • Required request body is missing: 前端接口报错错误解决
  • 【JAVA】java常用字符串操作技巧
  • Ubuntu 安装MySQL以及基本使用
  • C++ - 深拷贝与浅拷贝 bitwise senimatics和memberwise senimatics
  • 如何使用群晖Synology Office结合内网穿透实现多人远程编辑文件协同办公
  • jQuery显示,切换,隐藏的使用练习
  • 编程笔记 html5cssjs 004 我的第一个页面
  • 20231230 SQL基础50题打卡
  • GraphQL学习过程应该是这样的
  • JavaScript 基本功--面试宝典
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL几个简单SQL的优化
  • React系列之 Redux 架构模式
  • Tornado学习笔记(1)
  • 服务器之间,相同帐号,实现免密钥登录
  • 看域名解析域名安全对SEO的影响
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 优化 Vue 项目编译文件大小
  • 由插件封装引出的一丢丢思考
  • 在weex里面使用chart图表
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # centos7下FFmpeg环境部署记录
  • #### go map 底层结构 ####
  • #pragma 指令
  • #宝哥教你#查看jquery绑定的事件函数
  • $jQuery 重写Alert样式方法
  • (+4)2.2UML建模图
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (八)c52学习之旅-中断实验
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET中GET与SET的用法
  • [ C++ ] STL---string类的模拟实现
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • []指针
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [codevs 1296] 营业额统计
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)
  • [HeMIM]Cl,[AeMIM]Br,[CeEIM]Cl,([HO-PECH-MIM]Cl,[HOOC-PECH-MIM]Cl改性酚醛树脂