基于麻雀搜索算法优化的广义回归神经网络(GRNN)预测 -附代码
基于麻雀搜索算法优化的广义回归神经网络(GRNN)预测
文章目录
- 基于麻雀搜索算法优化的广义回归神经网络(GRNN)预测
- 1.GRNN 神经网络概述
- 2.GRNN 的网络结构
- 3.GRNN的理论基础
- 4.运输系统货运量预测相关背景
- 5.模型建立
- 6.麻雀搜索算法优化GRNN
- 7.实验结果
- 8.参考文献
- 9.Matlab代码
摘要:本文介绍基于麻雀搜索算法优化的广义神经网络(GRNN)预测,并将其应用于货物量预测
1.GRNN 神经网络概述
广义回归神经网络 CGRNN, Generalized Regression Neural Network)是美国学者 Donaid F. Specht 在 1991 年提出的,它是径向基神经网络的一种。 GRNN 具有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。 GRNN在逼近 能力和学习速度上较 RBF 网络有更强的优势,网络最后收敛于样本量积聚较多的优化回归 面,并且在样本数据较少时,预测效果也好。此外,网络还可以处理不稳定的数据。因此, GRNN 在信号过程、结构分析、教育产业、能源、食品科学、控制决策系统、药物设计、金融领域、生物工程等各个领域得到了广泛的应用 。
2.GRNN 的网络结构
GRNN 在结构上与 RBF 网络较为相似。它由四层构成,如图1所示,分别为输入层(input layer)、模式层( pattern layer)、求和层 ( summation layer)和输出层( output layer)。对 应网络输入 X=[x1,x2,...,xn]TX = [x_1,x_2,...,x_n]^TX=[x1,x2,...,xn]T,其输出为 Y=[y1,y2,...,yn]TY = [y_1,y_2,...,y_n]^TY=[y1,y2,...,yn]T 。
图1 .GRNN网络结构
(1)输入层
输入层神经元的数目等于学习样本中输入向量的维数,各神经元是简单的分布单元,直接将输入变量传递给模式层。
(2)模式层
模式层神经元数目等于学习样本的数目 η ,各神经元对应不 同的样本,模式层神经元传递函数为:
pi=exp[−(X−Xi)T(X−Xi)2σ2]i=1,2,...,n(1)p_i = exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}] i =1,2,...,n \tag{1} pi=exp[−2σ2(X−Xi)T(X−Xi)]i=1,2,...,n(1)
神经元 iii 的输出为输入变量与其对应的样本 XXX 之间 Euclid 距离平方的指数平方 Di2=(X−Xi)T(X−Xi)D_i^2= (X-X_i)^T(X-X_i )Di2=(X−Xi)T(X−Xi) 的指数形式 。式中, XXX 为网络输入变量; XiX_iXi 为第 i 个神经元对应的学习样本。
(3)求和层
求和层中使用两种类型神经元进行求和。
一类的计算公式为∑i=1nexp[−(X−Xi)T(X−Xi)2σ2]\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]∑i=1nexp[−2σ2(X−Xi)T(X−Xi)],它对所有模式层神经元的输出进行算术求和,其模式层与各神经元的连接权值为1 ,传递函数为:
SD=∑i=1nPi(2)S_D = \sum_{i=1}^nP_i\tag{2} SD=i=1∑nPi(2)
另 一类计算公式为∑i=1nYiexp[−(X−Xi)T(X−Xi)2σ2]\sum_{i=1}^nY_i exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]∑i=1nYiexp[−2σ2(X−Xi)T(X−Xi)],它对所有模式层的神经元进行加权求和,模式层中第 i 个神经元与求和层中第 j 个分子求和神经元之间的连接权值为第 i 个输 出样本YiY_iYi中的第 j 个元素,传递函数为:
SNj=∑i=1nyijPi,j=1,2,...,k(3)S_{Nj} = \sum_{i=1}^n y_{ij}P_i ,j = 1,2,...,k\tag{3} SNj=i=1∑nyijPi,j=1,2,...,k(3)
(4)输出层
输出层中的神经元数目等于学习样本中输出向量的维数h ,各神经元将求和层的输出相除 , 神经元 j 的输出对应估计结果Y( X) 的第 j 个元素,即:
yj=SNjSD,j=1,2,...,k(4)y_j = \frac{S_{Nj}}{S_D},j=1,2,...,k \tag{4} yj=SDSNj,j=1,2,...,k(4)
3.GRNN的理论基础
广义回归神经网络的理论基础是非线性回归分析 , 非独立变量 Y 相对于独立变量x的回归分析实际上是计算具有最大概率值的 y. 设随机变量x和随机变量 y 的联合概率密度函数 为f(x,y),已知 x 的观测值为 X ,则 y 相对于 X 的回归,也即条件均值为:
KaTeX parse error: \tag works only in display equations
Y即为在输入为 X 的条件下,Y 的预测输出 。
应用 Parzen 非参数估计,可由样本数据集xi,yii=1n{x_i,y_i}_{i=1}^nxi,yii=1n估算密度函数f′(X,y)f'(X,y)f′(X,y)
f′(X,y)=∑i=1nexp[−(X−Xi)T(X−Xi)2σ2]exp[−(X−Yi)22σ2]/(n(2π)p+12σp+1)(6)f'(X,y) =\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]exp[-\frac{(X-Y_i)^2}{2\sigma^2}]/(n(2\pi)^{\frac{p+1}{2}}\sigma^{p+1}) \tag{6} f′(X,y)=i=1∑nexp[−2σ2(X−Xi)T(X−Xi)]exp[−2σ2(X−Yi)2]/(n(2π)2p+1σp+1)(6)
式中,XiX_iXi,YiY_iYi, 为随机变量 x 和 y 的样本观测值;nnn为样本容量;ppp为随机变量 xxx的维数;σσσ为高斯函数的宽度系数,在此称为光滑因子。
用f(X,y)f(X,y)f(X,y)代替 f(X,y)f(X,y)f(X,y)代人式,并交换积分与加和的顺序:
Y(X)=∑i=1nexp[−(X−Xi)T(X−Xi)2σ2]∫−∞∞yexp[−(Y−Yi)2/(2σ2)]dy∑i=1nexp[−(X−Xi)T(X−Xi)2σ2]∫−∞∞exp[−(Y−Yi)2/(2σ2)]dy(7)Y(X) = \frac{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]\int_{-\infty}^{\infty}yexp[-(Y-Y_i)^2/(2\sigma^2)]dy}{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]\int_{-\infty}^{\infty}exp[-(Y-Y_i)^2/(2\sigma^2)]dy}\tag{7} Y(X)=∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∫−∞∞exp[−(Y−Yi)2/(2σ2)]dy∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∫−∞∞yexp[−(Y−Yi)2/(2σ2)]dy(7)
由于∫−∞∞ze−x2dz=0\int _{-\infty}^{\infty}ze^{-x^2}dz = 0∫−∞∞ze−x2dz=0,对两个积分进行计算后可得网络的输出Y(X)为:
Y(X)=∑i=1nYiexp[−(X−Xi)T(X−Xi)2σ2]∑i=1nexp[−(X−Xi)T(X−Xi)2σ2](8)Y(X) = \frac{\sum_{i=1}^nY_i exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]}{\sum_{i=1}^n exp[-\frac{(X-X_i)^T(X-X_i)}{2\sigma^2}]} \tag{8} Y(X)=∑i=1nexp[−2σ2(X−Xi)T(X−Xi)]∑i=1nYiexp[−2σ2(X−Xi)T(X−Xi)](8)
估计值Y(X)Y(X)Y(X)为所有样本观测值YiY_iYi的加权平均,每个观测值YiY_iYi的权重因子为相应的样本XiX_iXi与 XXX之间 Euclid 距离平方的指数 . 当光滑因子 σ 非常大的时候 ,Y(X)Y(X)Y(X)近似于所有样本因变量的均值 。 相反,当光滑因子σ 。趋向于0 的时候, Y(X)Y(X)Y(X)和训练样本非常接近,当需预测的点被包含在训练样本集中时,公式求出的因变量的预测值会和样本中对应的因变量非常接近, 而一旦碰到样本中未能包含进去的点,有可能预测效果会非常差 , 这种现象说明网络的泛化能力差。当σ取值适中,求预测值Y(X)Y(X)Y(X)时,所有训练样本的因变量都被考虑了进去,与预测点距离近的样本点对应的因变量被加了更大的权。
4.运输系统货运量预测相关背景
运输系统作为社会经济系统中的一个子系统,在受外界因素影响和作用的同时 , 对外部经济系统也具有一定的反作用,使得运输需求同时受到来自运输系统内外两方面因素的影响。 作为运输基础设施建设投资决策的基础,运输需求预测在国家和区域经济发展规划中,具有十分重要的作用,其中,由于货物运输和地方经济及企业发展的紧密联系,货运需求预测成为货 运需求和经济发展关系研究中的一个重要问题 。因此,作为反映货物运输需求的一项重要指标,货运量预测研究和分析具有较强的实际和理论意义 .
在此情况下,国内一些学者将神经网络引入到货运量预测中来。GRNN 在逼近能力、分类能力和学习速度方面具有较强优势 , 网络最后收敛于样本量积聚最多的优化回归面,并且在数据缺乏时效果也较好。网络可以处理不稳定的数据 , 因此本案例采用 GRNN 建立了货运量预测模型 , 并利用历史统计数据对货运量进行预测 。
5.模型建立
根据货运量影响因素的分析,分别取国内生产总值( GDP)、工业总产值、铁路运输线路长度、复线里程比重、公路运输线路长度、等级公路比重、铁路货车数量和民用载货汽车数量 8 项 指标因素作为网络输入,以货运总量、铁路货运量和公路货运量 3 项指标因素作为网络输出 , 构建 GRNN。本案例中 data. mat 中共有 p, t 两组数据 ,又各含 13 组数据,代表了 1996-2008 年的货 运量和与其相关的各个变量值。将 p、t 的前 12 组数据作为网络的训练数据,最后 1 组数据作 为网络的预测数据,建立 GRNN 神经网络对货运量进行预测。
6.麻雀搜索算法优化GRNN
麻雀搜索算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108830958。
网络训练时,采用交叉验证的方式,优化参数主要是GRNN的光滑因子σ\sigmaσ参数。是适应度函数设计为:
fitness=argmin(MSEpridect)fitness = argmin(MSE_{pridect}) fitness=argmin(MSEpridect)
适应度函数选取训练后的MSE误差。MSE误差越小表明预测的数据与原始数据重合度越高。最终优化的输出为,最佳训练集以及对应的光滑因子。
7.实验结果
麻雀搜索算法的参数设置如下:
%% 麻雀搜索算法
pop = 20;%种群数量
Max_iteration = 20;%最大迭代次数
lb = 0.1;%下边界
ub = 2;%上边界
dim = 1;%维度
fobj = @(spread) fun(spread,p_train,t_train,indices);
经过麻雀搜索算法优化的结果:
最佳训练集信息:
此时最佳输入值为desired_input =-1.0000 -0.8993 -0.7948 -0.2955 -0.0574 0.3838 0.6652 0.8767 1.0000-0.9998 -1.0000 -0.1291 0.2070 0.3417 0.6187 0.7838 0.9372 1.0000-1.0000 -0.8616 -0.4969 0.1950 0.3333 0.6478 0.6604 1.0000 1.0000-1.0000 -0.5385 -0.0769 0.2308 0.3846 0.6923 0.6923 1.0000 1.0000-1.0000 -0.9429 -0.9175 -0.5937 -0.3270 0.2508 0.5619 0.7333 1.0000-1.0000 -1.0000 -1.0000 -0.3000 -0.2000 0.2000 0.5000 0.8000 1.00000.0141 -1.0000 0.0187 0.2477 0.3682 0.6195 0.7735 0.8635 1.0000-1.0000 -0.9211 -0.8826 -0.7786 -0.6099 -0.0318 0.2843 0.5891 1.0000此时最佳输出值为desired_output =-1.0000 -0.9839 -0.9838 -0.4503 -0.2463 0.2862 0.5394 0.7787 1.0000-1.0000 -0.9040 -0.8604 -0.3950 -0.2293 0.2124 0.4116 0.7228 1.0000-1.0000 -0.8020 -0.8042 -0.2471 -0.0500 0.2505 0.4693 0.8308 1.0000GRNN神经网络三项流量预测的误差为13244.4881 4211.69012 15766.2697
未经过麻雀搜索的结果为:
GRNN神经网络三项流量预测的误差为28106.967 15245.9913 21653.0687(数据来源于《MATLAB神经网络43个案例分析》)
从结果来看,麻雀优化后取得的结果GRNN神经网络三项流量预测的误差为13244.4881 4211.69012 15766.2697明显更优,误差大大减少。
8.参考文献
书籍《MATLAB神经网络43个案例分析》
9.Matlab代码
[基于麻雀搜索算法优化的广义回归神经网络(GRNN)预测]
[基于鲸鱼算法优化的广义回归神经网络(GRNN)预测]
个人资料介绍
基于麻雀搜索算法优化的广义回归神经网络(GRNN)预测 -附代码相关推荐
- 基于麻雀搜索算法优化的支持向量机回归预测-附代码
基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...
- 【预测模型】基于麻雀算法改进广义回归神经网络(GRNN)实现数据预测matlab代码
1 简介 为实现精准施肥"减施增效"的数字化农业施肥技术,本文基于并运用了麻雀搜索算法,对广义回归神经网络(GRNN)进行了结合与改进,并构建作物广义回归神经网络(GRNN)结合麻 ...
- m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着市场经济的发展和全球化,国内外企业面临着越来越残酷的市场竞争,要想赢得竞争,赢得市场,从事商品销 ...
- 基于麻雀搜索算法优化的lssvm回归预测
基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 通俗理解广义回归神经网络(GRNN)
通俗理解广义回归神经网络(GRNN) GRNN就是说,对于一个测试样本x,计算它与所有训练样本的相似度,计算相似度的方法使用高斯函数.假设 训练样本有10个:(x1, y1).(x2, y2).- . ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
最新文章
- 我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)
- python写计算器
- GLSL着色器周记02
- linear-gradient与radial-gradient
- CommonJS概述及使用
- cloud一分钟 | 李飞飞离任谷歌云,工作重心将重新转回学术界
- java 自定义注解 生成json_Jackson 通过自定义注解来控制json key的格式
- 5G时代到来,那我们现在用的4G手机怎么办?
- xgboost算法_xgboost算法过程推导
- phpstorm设置鼠标滚动缩放代码字体大小
- 关于原理图库和封装库设计(三)
- python实时语音转写_语音识别 - 实时语音转写 - 《科大讯飞REST_API开发指南》 - 书栈网 · BookStack...
- android高清壁纸,40张极Cool的Android系统桌面壁纸
- Java中Base64的解析
- Seaweedfs基本操作
- APP性能优化--启动优化
- Chrome 插件(Shockwave Flash)未响应 错误解决办法
- Oculus联合创始人Palmer Luckey:我不认为Facebook是VR的未来
- 中国python大神是谁_Python大神的工作效率这么高,原来竟是因为这个原因
- Python写代码遇到的问题集锦
热门文章
- MySQL InnoDB存储引擎为什么要用自增的主键?
- 常用的正则表达式,妈妈再也不用担心我不会写正则表达式了
- 快速列出所有字段_【小麦课堂】快速查询明细数据的操作
- 对飞行前请求的响应未通过访问控制检查:它没有http ok状态。_HTTP 缓存
- 检测同心圆_两“心”携手,共抗心衰——“同心圆”心衰俱乐部走进临安图书馆~...
- 疯狂python讲义这本书怎么样_疯狂Python讲义(读书笔记)
- qpython 使用教程_python中spy++的使用超详细教程
- Go基础:数组、切片与指针
- tt桌球瞄准器手机版_传闻老任将进军手机市场?任天堂独立直面会将于周四凌晨举行...
- String、StringBuffer 与StringBuilder