ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【优化预测】基于matlab鲸鱼优化算法优化BP回归预测【含Matlab源码 W001期】

2021-07-25 21:32:41  阅读:137  来源: 互联网

标签:WOA 数据 算法 神经网络 源码 BP 优化


一、简介

1 BP神经网络预测原理简介
BP 神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。
在这里插入图片描述
BP神经网络训练的主要思想:输入的信号特征数据先映射到隐含层(激活函数实现),再映射到输出层(默认采用线性传递函数),得到期望输出值。将期望输出值和实际测量值做比较,计算误差函数J,再将误差反向传播,通过梯度下降等算法来调节BP网络的权值和阈值。重复该过程,直到满足设定的目标误差或者最大迭代次数等终止准则,停止训练。

通过下面的例子来理解每一层的作用。

1)输入层:相当于人的五官,五官获取外部信息,对应神经网络模型input端口接收输入数据的过程。
2)隐含层:对应人的大脑,大脑对五官传递来的数据进行分析和思考,神经网络的隐含层hidden Layer对输入层传来的数据x进行映射,简单理解为一个公式hiddenLayer_output=F(w*x+b)。其中,w、b叫做权重、阈值参数,F()为映射规则,也叫激活函数,hiddenLayer_output是隐含层对于传来的数据映射的输出值。换句话说,隐含层对于输入的影响因素数据x进行了映射,产生了映射值。
3)输出层:可以对应为人的四肢,大脑对五官传来的信息经过思考(隐含层映射)之后,再控制四肢执行动作(向外部作出响应)。类似地,BP神经网络的输出层对hiddenLayer_output再次进行映射,outputLayer_output=w *hiddenLayer_output+b。其中,w、b为权重、阈值参数,outputLayer_output是神经网络输出层的输出值(也叫仿真值、预测值)(理解为,人脑对外的执行动作,比如婴儿拍打桌子)。
4)梯度下降算法:通过计算outputLayer_output和神经网络模型传入的y值之间的偏差,使用算法来相应调整权重和阈值等参数。这个过程,可以理解为婴儿拍打桌子,打偏了,根据偏离的距离远近,来调整身体使得再次挥动的胳膊不断靠近桌子,最终打中。

BP神经网络所实现的功能作用

“能尽数天星,便能尽知棋势”。围棋体现着大自然的道法,而在AlphaGo击败人类围棋冠军,则是使用算法来寻求围棋的道,实现人机对战。BP神经网络训练的结果:得到多维数据x与y之间存在的规律,即实现由x来映射逼近y。而BP训练出来得到的模型是否可靠,表现为对其他未经过训练的数据,输入到BP中,是否能输出较为准确的预测值。对此,在BP神经网络训练之后,还需要再给指标因素x1到训练好的bp network中,得到相应的BP输出值(预测值)predict1,通过作图等,计算Mse,Mape,R方等指标,来对比predict1和y1的接近程度,就可以知道模型是否预测准确。这是BP模型的测试过程,即预测过程。

小结 BP神经网络实现了:a). 根据训练集数据,训练得到一个模型,b). 对模型的可靠性与准确性进行测试集(不同于训练样本数据)预测,和实际值对比,检验预测的精度。c). 只给输入,得到预测值(可理解为测试集的数据丢了实测值,本质一样,给输入到BP中,得到输出)。由于该情况无输出,纯预测,无法检验精度是否合格,写论文时无太大意义而不必实现该情况的步骤。

2 鲸鱼优化算法优化BP神经网络预测的步骤与流程图设计
针对BP神经网络训练过程中的初始权值和阈值由随机数产生,对训练的网络结构具有影响,采用鲸鱼优化算法优化BP神经网络的初始权值和阈值,从而得到较为稳定的WOA-BP神经网络模型。

2.1 WOA优化BP神经网络的步骤:

Step1:初始化BP神经网络的权值和阈值
Step2:计算鲸鱼优化算法WOA的决策变量长度,选取均方误差作为优化的目标函数。
Step3:设置算法停止准则,使用鲸鱼优化算法优化神经网络的权值和阈值参数。
Step4:将优化得到的权值和阈值参数赋给BP神经网络。
Step5:优化后的BP神经网络训练与测试,与优化前的BP神经网络进行误差分析和精度对比。

2.2 WOA优化BP神经网络的流程图设计

在这里插入图片描述
3 WOA-BP预测算法的参数设置
3.1 数据说明
采用建筑物能源数据集,建立BP神经网络回归预测与鲸鱼优化算法WOA优化BP神经网络的回归预测算法。

3.2 数据格式
在这里插入图片描述
3.3 优化变量的选取与适应度函数设计
优化BP神经网络的权值和阈值参数,将训练集与测试集整体的均方误差作为适应度函数。适应度函数值越小,表明训练越准确,且兼顾模型的预测精度更好。
在这里插入图片描述
式中,TraingingSet,TestingSet,分别为训练集和测试集的样本。

3.4 算法的参数设置

a)BP神经网络的参数设置

net=newff(inputn,outputn,hiddennum_best,{'tansig','purelin'},'trainlm','learngdm');% 建立模型

%网络参数配置
net.trainParam.epochs=1000;         % 训练次数
net.trainParam.lr=0.01;                   % 学习速率
net.trainParam.goal=0.00001;                    % 训练目标最小误差
net.trainParam.show=25;                % 显示频率
net.trainParam.mc=0.01;                 % 动量因子
net.trainParam.min_grad=1e-6;       % 最小性能梯度
net.trainParam.max_fail=6;               % 最高失败次数

b) WOA算法的参数设置

% 初始化WOA参数
popsize=30;   %初始种群规模
maxgen=50;   %最大进化代数
dim=inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum;    %自变量个数
lb=repmat(-3,1,dim);    %自变量下限
ub=repmat(3,1,dim);   %自变量上限

3.5 使用WOA优化后的BP神经网络进行预测,并与BP神经网络的预测结果进行误差分析和对比

二、源代码

在这里插入图片描述

**代码附件说明:**
a) .mian.m为主程序,含BP预测与鲸鱼优化算法WOA优化BP预测两个部分的实现。在程序外部数据EXCEL中换自己数据集,MATLAB程序中设定相应的数据范围即可运行得到结果。代码使用中文注释清楚。
b). 数据集为EXCEL格式的数据,换数据时,在MATLAB程序中设定相应的EXCEL数据读取范围即可。
c). 采用经验公式使用循环来确定隐含层节点数目,对输入层、隐含层和输出层的神经元节点数都提供了过程。

**代码使用步骤:**
数据介绍:代码采用深度学习中常用的化学传感器的数据集样本进行实现。数据格式为EXCEL。直接套数据运行。输入的影响指标个数不限,单输出。
a). 在程序外部数据EXCEL文件中换上自己数据集;

b). 双击点开main.m主程序文件,读取EXCEL的方式如下:
```c
% 读取读取
data=xlsread('数据.xlsx','Sheet1','A1:I498'); %%使用xlsread函数读取EXCEL中对应范围的数据即可  

%输入输出数据
input=data(:,1:end-1);    %data的第一列-倒数第二列为特征指标
output=data(:,end);  %data的最后面一列为输出的指标值

三、运行结果

在这里插入图片描述
WOA优化BP神经网络预测的误差分析和对比
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

版本:2014a

标签:WOA,数据,算法,神经网络,源码,BP,优化
来源: https://www.cnblogs.com/homeofmatlab/p/15059060.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有