【DELM回归预测】基于matlab粒子群算法改进深度学习极限学习机PSO-DELM数据回归预测【含Matlab源码 1884期】

news2024/11/25 14:43:09

⛄一、PSO-DELM简介

1 DELM的原理
在2004年,极限学习机(extreme learning machine,ELM)理论被南洋理工大学的黄广斌教授提出,ELM是一种单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN)算法。它与常用的BP神经网络相比,ELM是对于权重和阈值随机的选取,而不像BP是通过反向传播算法调节各层之间的权值和阈值,从而减少了算法模型的学习时间和结构的复杂性,提高了模型整体的训练速度。

ELM的基本结构如图1所示,其由输入层、隐含层、输出层这3部分组成。原理说明如下,假设输入数据的样本集合为:X=xi|{1≤i≤N},输出数据的样本集合为:Y=yi|{1≤i≤N},其中N为样本总个数、xi为输入样本的第i个训练样本、yi为输出样本的第i个输出样本。这里设置隐含层的神经元个数为J个,则H={hi|1≤i≤J}为隐含层的输出向量的集合,hi为第i个输入样本对应的特征向量。把输入的样本数据在空间上映射到隐含层特征空间上,其二者的关系为
在这里插入图片描述
式中:G为激活函数,主要应用的有Sigmoid、Sin、Hardlim等等;α为输入层各个节点到隐含层各个节点的输入权重矩阵;B为隐含层各个节点的阈值矩阵。
在这里插入图片描述
图1 ELM的结构
若单隐含层的ELM能够实现在误差极小的情况下逼近“输出的N个样本”,则隐含层的输出为
在这里插入图片描述
式中:β为隐含层各个节点到输出层各个节点的输出权重矩阵;H为隐含层输出矩阵。

从以上说明中能看出极限学习机的目的就是让模型的输出与实际的输出之间的差值最小,即求解输出权重矩阵的最小二乘解的问题,只要模型能够输出权重矩阵的最小二乘解就可以完成模型的训练,输出权重矩阵β可由下式表示为
在这里插入图片描述
式中:H+为隐含层输出矩阵H的Moore-Penrose广义矩阵。

由于ELM为单隐含层结构,在面对数据量过大、输入数据的维度过高的输入输出变量时,单隐含层的极限学习机无法捕捉到数据的有效特征。在ELM中的权重和阈值是随机的产生的,这可能会使得部分的神经元成为无效的神经元,减弱算法模型对数据特征的学习能力。在研究中发现,更多的学者对于ELM的衍生算法深度极限学习机(deep extreme learning machine,DELM)产生了浓厚的兴趣,所以本文提出使用DELM对数据分析,弥补了ELM的缺点。为了增强模型的泛化能力,这里选择加入一个正则化项
在这里插入图片描述
式中:C为正则化系数。

本文在构建深度极限学习机中采用ELM自动编码器(ELM autoencoder,ELM-AE)算法得到模型的权值和阈值,ELM-AE的结构如图2所示。自动编码器(auto encoder,AE)是以无监督的学习方式学习数据的特征,它是将输入的向量通过编码器映射到隐含层的特征向量,再由解码器将特征向量重新构造原来的输入向量。构建的ELM-AE使得隐含层节点随机权值和随机阈值正交,如果随机权重和随机阈值不是正交的,它也是能够有一个很好的特征表示作用,从而提高ELM-AE的泛化能力。在ELM-AE产生正交的随机权重和阈值为
在这里插入图片描述
式中:I是单位矩阵。
在这里插入图片描述
图2 ELM-AE结构
在ELM-AE中,输出权重β负责学习从特征空间到输入数据的转换。并且在传统的方法中,是根据最小二乘法求得权重系数,但是在隐含层节点数过多的情况下,这样会导致模型的泛化能力弱和鲁棒性差。所以在求解权重系数中引入正则化系数,提高模型的泛化能力,这里将目标函数设置为
在这里插入图片描述
式中:C为正则化参数。对于稀疏和压缩的ELM-AE表示,把公式中的β求导,并且让目标函数为0,这样求得输出权重β为
在这里插入图片描述
式中:H为ELM-AE的隐含层输出矩阵;X为ELM-AE的输入和输出。

对于输入维度等于编码维度的ELM-AE,ELM-AE的输出权重矩阵β代表着从输入特征空间的数据到隐含层特征空间的转换,则输出权重β的计算公式为
在这里插入图片描述
并且在DELM中ELM-AE能用奇异值(SVD)来表示其特征,所以式(5)的奇异值分解为
在这里插入图片描述
式中:u是HTH的特征向量;di是H的奇异值。

深度极限学习机从结构上看相当于把多个ELM连接到了一起,但它相对于ELM能更全面地捕捉到数据之间的映射关系并提高处理高维度输入变量的精确度。DELM是逐层通过ELM-AE进行无监督的训练学习,最后接入回归层进行监督训练。其DELM的结构如图3所示,假设模型有M个隐含层,将输入数据样本X根据ELM-AE理论得到第一个权重矩阵β1,接着得到隐含层的特征向量H1。以此类推,能够得到M层的输入权重矩阵βM和隐含层的特征向量HM。并且模型的前期是进行多层无监督的学习,不需要人为设置输入的权重和阈值,只要设置各层的隐含层的神经元个数,所以DELM拥有的学习过程快且泛化能力强的特点。
在这里插入图片描述
图3 DELM结构

2 粒子群算法优化深度极限学习机
2.1 粒子群算法原理

粒子群算法(partile swarm optimization,PSO)是由Kennedy和Eberhart提出的一种随机优化算法。它的提出是通过对鸟类等生物有机体的社会行为进行模拟。PSO的原理如下:把假设的目标值区域当成鸟类等生物的捕食区域,生物在搜捕猎物的过程可以比作是粒子在不断更新着搜索目标值所在区域,生物在捕食的开始是有一个大概的方向,相当于粒子在搜索过程中有一个初始的速度和位移,这个过程就是粒子的寻优过程。在算法中模拟的随机粒子是通过两个极值点来更新自己,保证粒子在搜索过程中能确定最接近目标值区域的粒子范围。第一个极值点就是随机粒子中的拥有最佳位置的个体极值(Pbest),第二个极值点就是种群中拥有最佳位置的个体极值点(Gbest)。在D维空间上第i个粒子的速度和位置分别是
在这里插入图片描述
在每次的迭代过程中,根据两个极值点Pbest和Gbest的位置更新,逐渐找到种群中粒子的最佳位置,其中更新的公式为
在这里插入图片描述
2.2 优化过程
由于DELM的中各个隐含层的神经元个数需要人为的设置,并且隐含层的神经元个数一般设置的较大才能使模型在做回归预测时的精度提高,在设置的过程中学者要通过大量的数据和仿真实验来验证隐含层神经元个数的取值,从而保证模型的误差函数最小。又因为随着隐含层神经元个数的增多,每次进行仿真实验验证的神经元个数的上下波动范围较大,造成实验的过程过于复杂和使模型具有不确定性。本文采用粒子群优化算法对多个隐含层的个数选取,经过优化找到各个隐含层最优的神经元个数赋值给算法模型。PSO相对于其它的优化算法具有:收敛速度快、效率高、算法简单和扩展空间的特点。

使用PSO优化DELM的好处有:(1)减少对多个隐含层的神经元个数选择的仿真实验。(2)优化算法并不复杂,不会导致模型的优化时间过长,并且能提高预测精度。(3)优化后的模型有更好的鲁棒性。

粒子群算法优化深度极限学习机的具体步骤,流程如图4所示:

步骤1把数据划分为训练集合预测集。

步骤2对PSO的参数初始化(w、c1、c2)。

步骤3确定DELM的拓扑结构,以及相关参数的设置。

步骤4将DELM训练测试得到的均方误差作为PSO的适应度值。

步骤5初始最优解更新(Pbest、Gbest),通过种群移动(更新粒子位置和速度)、计算新的适应度值、更新当前的最优解看是否满足适应度值。若不满足,则重新进行迭代。

步骤6把获得的各隐含层的最优节点数代入DELM中。

步骤7训练测试。

步骤8得到预测结果。
在这里插入图片描述
图4 流程

⛄二、部分源代码

clear;clc;close all;
%% 导入数据
load data
%训练集——400个样本
P_train=input(:,(1:550));
T_train=output((1:550));
% 测试集——200个样本
P_test=input(:,(250:350));
T_test=output((250:350));
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,0,1);
Pn_test = mapminmax(‘apply’,P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,0,1);
Tn_test = mapminmax(‘apply’,T_test,outputps);

%所有的数据输入类型应该为 N*dim,其中N为数据组数,dim为数据的维度
Pn_train = Pn_train’;
Pn_test = Pn_test’;
Tn_train = Tn_train’;
Tn_test = Tn_test’;

%% DELM参数设置
ELMAEhiddenLayer = [2,3];%ELM—AE的隐藏层数,[n1,n2,…,n],n1代表第1个隐藏层的节点数。
ActivF = ‘sig’;%ELM-AE的激活函数设置
C = inf; %正则化系数
%% 优化算法参数设置:
%计算权值的维度
dim = ELMAEhiddenLayer(1)*size(Pn_train,2);
if length(ELMAEhiddenLayer)>1
for i = 2:length(ELMAEhiddenLayer)
dim = dim + ELMAEhiddenLayer(i)*ELMAEhiddenLayer(i-1);
end
end
popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = -1;%权值下边界
ub = 1;%权值上边界

fobj = @(X)fun(X,Pn_train,Tn_train,Pn_test,Tn_test,ELMAEhiddenLayer,ActivF,C);
[Best_pos,Best_score,PSO_cg_curve]=PSO(popsize,Max_iteration,lb,ub,dim,fobj);
figure
plot(PSO_cg_curve,‘k’,‘linewidth’,2)
xlabel(‘迭代次数’)
ylabel(‘适应度值’)
grid on
title(‘粒子群算法收敛曲线’)
%% 利用粒子群获得的初始权重,进行训练
BestWeitht = Best_pos;
%DELM训练
OutWeight = DELMTrainWithInitial(BestWeitht,Pn_train,Tn_train,ELMAEhiddenLayer,ActivF,C);
%训练集测试结果
predictValueTrainPSO = DELMPredict(Pn_train,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTrainPSO = mapminmax(‘reverse’,predictValueTrainPSO,outputps);
% 均方误差
Error1PSO = (predictValueTrainPSO’ - T_train);
MSE1PSO = mse(Error1PSO);
%测试集测试结果
predictValueTestPSO = DELMPredict(Pn_test,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTestPSO = mapminmax(‘reverse’,predictValueTestPSO,outputps);
% 均方误差
Error2PSO = (predictValueTestPSO’ - T_test);
MSE2PSO = mse(Error2PSO);

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]周莉,刘东,郑晓亮.基于PSO-DELM的手机上网流量预测方法[J].计算机工程与设计. 2021,42(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

静态HTML个人音乐网页 大学生网页设计作业 简单音乐娱乐网页制作 DW个人网站模板下载 大学生简单音乐网页作品代码

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

基于风驱动算法改进的DELM预测-附代码

风驱动算法改进的深度极限学习机DELM的回归预测 文章目录风驱动算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机(DELM)原理3.风驱动算法4.风驱动算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…

12月编程语言排行榜,java跌至低点,低代码发展迅猛

2022年12月编程语言排行榜:TIOBE Index for December 2022 TIOBE揭晓了12月全球编程语言排名,Python 以0.1%微弱优势领先C语言,成功夺冠。目前,这两种语言竞争焦灼,都是多次霸榜。 本次榜单,C作为一匹黑马…

chrome插件开发之发送网络请求v3版本

如果某个扩展希望访问自己所属域以外的资源,比如说来自http://www.google.com的资源(假设该扩展不是来自www.google.com), 浏览器不会允许这样的请求,除非该扩展获得了相应的跨域请求允许。 获取跨域请求允许 通过添加域名或者域名匹配到manifest文件的p…

CentOS 8:Redis服务器

Redis ,一款基于内存的键值型数据库服务器 常见于网站开发场景 Redis 服务器只发布了 Linux 版本 Redis服务器的安装,有3种办法: 1 自动安装 , redis 5.0 yum install redis 2 源码方式 从官网下载源码,先编译、后部署 3 …

WhaleDI数据治理利器之“低成本数据质量管理”

数字化时代,数据已经成为企业管理的关键要素,随着数据的日益增长及汇聚,企业数据质量问题成为数据治理的关键。数据质量直接影响到能否通过数据分析驱动企业生产、运营、服务提效及创新。高质量的数据对管理决策、业务支撑等都有极其重要的作…

时间序列的研究

更多的时间预测,参考 https://github.com/qingsongedu/awesome-AI-for-time-series-papers#AI4TS-Tutorials 1. 周期检测模块 可能存在的情况, 单周期多周期无周期; Robust Period 检测 该时间序列,是否有周期 以及周期的长度…

C语言浮点型的存储

3.14159 1e10可以写成1.010的10次方 1e5 表示 1.010的5次方 int main() {int n 9;//4bytefloat* pFloat (float*)&n;//float 指针访问4的字节printf("n值为:%d", n);//9printf("*pFloat值为:%f\n", *pFloat);//,是以浮点数的视角去看的*p…

深度学习基础知识---梯度弥散 梯度爆炸

目录 1 梯度弥散、梯度爆炸的成因 2 解决方式 2.1.pretrainfinetune 2.2 梯度裁剪 2.3 权重正则化 2.5 Batch Normalization正则化 2.6 残差结构 shortcut 2.7 LSTM 1 梯度弥散、梯度爆炸的成因 神经网络的层(主要是隐藏层)越多,对…

【LSTM时序预测】基于matlab EMD结合LSTM风速数据预测【含Matlab源码 2051期】

⛄一、EMD-DELM简介 1 方法及原理 1.1 EMD基本原理 经验模态分解可基于数据本身,将复杂信号分解为一系列IMF和一个r(t),分解信号时,不需要预先设置任何基函数。因为这一特点,理论上EMD方法可预处理任何一种信号的数据,因此被广泛…

【Linux磁盘管理】

Linux磁盘管理 写在前面 在此强调一个 Linux 的核心机制就是一切皆文件。 I/O Ports 即I/O 设备地址,用来标识硬件对应的设备地址,来让操作系统以及 cpu 使用。 CPU 的核数不一定就是越多越好,由于CPU 协调之间的协调问题,可能性…

洛谷P1161 开灯

开灯 题目描述 在一条无限长的路上,有一排无限长的路灯,编号为 1,2,3,4,…1,2,3,4,\dots1,2,3,4,…。 每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,…

定时器/计数器中定时/计数初值的计算

寄存器TMOD是单片机的一个特殊功能寄存器,其功能是控制定时器/计数器T0、T1的工作方式。它的字节地址为89H,不可以对它进行位操作。 只能进行字节操作,即给寄存器整体赋值的方法设置初始值,如TMOD0x01。在上电和复位时&#xff0c…

中小型企业HR人力资源管理系统源码带使用手册和操作说明

【程序语言】:.NET 【数据库】:SQL SERVER 2008 【运行环境】:WINDOWSIIS 【其他】:前端bootstrap框架 运行环境 系统运行环境:ASP.NET 4.0/IIS 6.0/SQL Server2008,使用成熟稳定的Webform开发模式&…

【现代密码学原理】——期末复习(冲刺篇)

📖 前言:快考试了,做篇期末总结,都是重点与必考点。 博主预测考点: 计算题:RSA、Diffie-Hellman密钥交换、EIGamal 密钥交换、使用SHA-512算法,计算消息的Hash值、计算消息的HMAC 应用题&#…

1.cesium简介和环境搭建

目录 一、cesium介绍 cesium是什么? cesium能做什么? cesium的限制? cesium的好处是什么? 二、创建一个简单的cesium 安装node环境 下载cesiumSDK 部署cesium 三、补充说明 Documentation Sandcastle 一、cesium介绍 …

重点| 系统集成项目管理工程师考前50个知识点(7)

本文章总结了系统集成项目管理工程师考试背记50个知识点!!! 帮助大家更好的复习,希望能对大家有所帮助 比较长,放了部分,需要可私信!! 46、项目合同签订的注意事项: …

Hadoop实训1:Linux基本搭建和操作

目录 1、创建三台虚拟机 2、创建使用SSH远程连接 3、实现IP地址与主机名的映射 4、关闭和禁用防火墙 5、创建目录结构 6、压缩打包 7、安装软件包 安装jdk 安装mysql 8、创建脚本文件 9、运行脚本文件 11、远程拷贝文件 总结 1、创建三台虚拟机 序号虚拟机名称…

22.12.19打卡 Codeforces Round #839 (Div. 3) A~E

Dashboard - Codeforces Round #839 (Div. 3) - Codeforces 浑浑噩噩的一场, 被队友带飞 A 不解释 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣻⣽⡿⣿⣎⠙⣿⣞⣷⡌⢻…

Python -- 文件操作

目录 1.文件的打开与关闭 1.1 打开文件 1.2 关闭文件 2.文件的读取和写入 2.1 文件的读写 3.CSV文件的读写 3.1 CSV文件的写入 4.将数据写入 4.1 StingIO 4.2 BytesIO 5.练习:实现文件拷贝 6.序列化和反序列化 6.1 使用JSON实现列化 6.2 使用JSON实现…