回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出

目录

  • ​​回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出​​
  • ​​基本介绍​​
  • ​​模型介绍​​
  • ​​PSO模型​​
  • ​​LSTM模型​​
  • ​​PSO-LSTM模型​​
  • ​​程序设计​​
  • ​​预测效果​​
  • ​​参考资料​​
  • ​​致谢​​

基本介绍

本次运行测试环境MATLAB2020b;
本次预测基本任务是回归,多变量输入,单变量输出;
主要研究问题不限于交通预测、负荷预测、气象预测、经济预测等。
PSO-LSTM多变量输入单变量输出,粒子群优化长短期记忆神经网络的隐藏层单元和初始学习率,组合预测具体介绍如下。

模型介绍

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

PSO模型

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

LSTM模型

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

PSO-LSTM模型

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

程序设计

  • 完整程序和数据下载地址:​​PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出​​
% 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);

预测效果

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出_LSTM


回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出_机器学习_02

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出_PSO-LSTM_03


回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出_数据预测_04

Matlab实现PSO-LSTM多变量回归预测
1.input和output为数据集,input为输入数据,output为输出数据。
2.PSO_LSTM.m为程序主文件,fitness为函数文件无需运行。
3.命令窗口输出R2、MAE和RMSE,可在下载区获取数据和程序内容。
4.粒子群优化LSTM,优化隐含层单元数量和初始学习率。
注意程序和数据放在一个文件夹,运行环境为Matlab2020及以上.

参考资料


[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
[5] COSTA-JUSS,MARTA R,ALLAUZEN A,et al. Introduction to the special issue on deep learning approaches for machine translation[J]. Computer Speech & Language,2017,46( 11) :367-373.
FAYEK H M,LECH M,CAVEDON L. Evaluating deep learning
architectures for speech emotion recognition[J]. Neural Network, 2017,92( 2) : 60-68.

致谢

  • 大家的支持是我写作的动力!