回归预测 | MATLAB实现PSO-GRNN多输入单输出回归预测
目录
- 回归预测 | MATLAB实现PSO-GRNN多输入单输出回归预测
- 预测效果
- 基本介绍
- 模型结构
- 程序设计
- 学习总结
- 参考资料
预测效果
基本介绍
针对传统的神经网络采用经验风险最小化准则而存在的弊端,以及用于预测的用水量历史数据不足的问题,本文将PSO 算法引入广义回归神经网络中(粒子群优化广义回归神经网络),建立PSO-GRNN 神经网络预测模型,它既能够解决网络训练容易收敛到局部极小点、收敛速度慢等问题,可以通过优化广义回归神经网络函数的扩展速度从而提高神经网络的泛化能力。
模型结构
- 广义回归神经网络( General Regression Neural Network,简称GRNN) 是近年来才发展起来的一种适用于解决函数逼近问题的神经网络,它是径向基函数网络的一种重要变型。GRNN 网络不仅具有径向基函数RBF 神经网络的非线性映射、最佳逼近和全局最优的性能,而且在分类能力和学习速度方面更体现了其强大的优势,该网络最后收敛于样本量积聚最多的优化回归面,在数据资料缺乏时回归的效果显著。
- 在GRNN 网络中,输出层对权值是线性的,当隐含层结点个数及作用函数中心等参数确定后,对权值的学习就可采用线性优化的策略,从而提高网络的学习速度,这也是GRNN 网络对自适应控制非常有吸引力的特点。本文采用模式识别中广泛应用的k均值聚类算法无监督的学习算法选取径向基函数中。学习的目的是使中心位于输入空间重要的区域,并根据算法确定基函数宽度; 而输出层的线性权应用有监督的误差校正学习算法。它是以自组织学习的混合算法来确定RBF 中心的。
- 神经网络工具箱是在MATLAB 环境下所开发出来的众多工具箱之一。对于各种网络模型,神经网络
工具箱集成了多种学习算法,为用户提供了极大的方便。本文采用MATLAB 神经网络工具箱中的newgrnn函数建立广义回归神经网络,格式如下
PSO 没有交叉和变异操作,依靠粒子速度完成搜索,弥补了GRNN 神经网络收敛速度较慢的自身不足。此外,泛化能力是表征网络学以致用的程度,是评定网络学习好坏的重要指标。选取合适的径向基函数的扩展速度SPREAD 是非常重要的。常数SPREAD 表示隐含层高斯函数的宽度,其值的大小对径向基函数网络估算模型的准确性有着重要的影响。本文采用PSO 优化算法对常数SPREAD 进行优化,可以有效提高神经网络的泛化能力。优化设计由粒子群算法早期阶段随机产生一组径向基函数的扩展速度SPREAD 开始,选取学习样本,对GRNN 网络进行训练学习,产生一组响应面; 选取预测样本,应用训练好的一组GRNN 网络进行预测,得到一组预测值; 将预测值分别跟实测值进行比较,把最接近实测值的预测值进行记忆,且把记忆的预测值相对应的径向基函数的扩展速度值用到径向基函数的扩展速度的更新,更新公式( 1) 、( 2) ,生成一组更新后的径向基函数的扩展速度; 用新生成的径向基函数的扩展速度重新训练生成新的响应面,随着径向基函数的扩展速度的不断更新,RNN 网络的预测精度也不断增加,最终能够寻找到全局最优值,并且进行了MATLAB仿真,使GRNN 网络训练和预测更加容易、方便和快捷,此时便实现了优化设计精度与效率的统一。
程序设计
- 完整程序和数据下载:PSO-GRNN多输入单输出回归预测。
%% 定义粒子群算法参数
%% 随机初始化种群
D=dim; %粒子维数
c1=1.5; %学习因子1
c2=1.5; %学习因子2
w=0.8; %惯性权重
Xmax=ub; %位置最大值
Xmin=lb; %位置最小值
Vmax=ub; %速度最大值
Vmin=lb; %速度最小值
%%
%%%%%%%%%%%%%%%%初始化种群个体(限定位置和速度)%%%%%%%%%%%%%%%%
x=rand(N,D).*(Xmax-Xmin)+Xmin;
v=rand(N,D).*(Vmax-Vmin)+Vmin;
%%%%%%%%%%%%%%%%%%初始化个体最优位置和最优值%%%%%%%%%%%%%%%%%%%
p=x;
pbest=ones(N,1);
for i=1:N
pbest(i)=fobj(x(i,:));
end
%%%%%%%%%%%%%%%%%%%初始化全局最优位置和最优值%%%%%%%%%%%%%%%%%%
g=ones(1,D);
gbest=inf;
for i=1:N
if(pbest(i)<gbest)
g=p(i,:);
gbest=pbest(i);
end
end
%%%%%%%%%%%按照公式依次迭代直到满足精度或者迭代次数%%%%%%%%%%%%%
for i=1:T
i
for j=1:N
%%%%%%%%%%%%%%更新个体最优位置和最优值%%%%%%%%%%%%%%%%%
if (fobj(x(j,:))) <pbest(j)
p(j,:)=x(j,:);
pbest(j)=fobj(x(j,:));
end
%%%%%%%%%%%%%%%%更新全局最优位置和最优值%%%%%%%%%%%%%%%
if(pbest(j)<gbest)
g=p(j,:);
gbest=pbest(j);
end
%%%%%%%%%%%%%%%%%跟新位置和速度值%%%%%%%%%%%%%%%%%%%%%
v(j,:)=w*v(j,:)+c1*rand*(p(j,:)-x(j,:))...
+c2*rand*(g-x(j,:));
x(j,:)=x(j,:)+v(j,:);
%%%%%%%%%%%%%%%%%%%%边界条件处理%%%%%%%%%%%%%%%%%%%%%%
if length(Vmax)==1
for ii=1:D
if (v(j,ii)>Vmax) | (v(j,ii)< Vmin)
v(j,ii)=rand * (Vmax-Vmin)+Vmin;
end
if (x(j,ii)>Xmax) | (x(j,ii)< Xmin)
x(j,ii)=rand * (Xmax-Xmin)+Xmin;
end
end
else
for ii=1:D
if (v(j,ii)>Vmax(ii)) | (v(j,ii)< Vmin(ii))
v(j,ii)=rand * (Vmax(ii)-Vmin(ii))+Vmin(ii);
end
if (x(j,ii)>Xmax(ii)) | (x(j,ii)< Xmin(ii))
x(j,ii)=rand * (Xmax(ii)-Xmin(ii))+Xmin(ii);
end
end
end
end
%%%%%%%%%%%%%%%%%%%%记录历代全局最优值%%%%%%%%%%%%%%%%%%%%%
Convergence_curve(i)=gbest;%记录训练集的适应度值
学习总结
参考资料
[2] 杨晗熠,吴育华. 用水量组合预测模型的研究[J]. 西安电子科技大学学报: 社会科学版,2008,18( 4) : 6 - 7.
[3] 厉红梅,李适宇,林高松,等. 深圳市供水量的最优化组合预测[J]. 数理统计与管理,2005,25( 4) : 18 - 22.