使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测

目录

摘要:

1.RBF神经网络介绍:

2.RBF神经网络与BP神经网络的特点:

3.PSO-RBF优化流程:

4.实际测试及结果分析:

4.1 BP神经网络测试结果

4.2 RBF神经网络测试结果

4.3 PSO-RBF神经网络测试结果

5.Matlab代码:


摘要:

本文将粒子群算法(PSO)与径向基神经网络(RBF)相结合,使用PSO优化RBF神经网络的主要参数中心值c, 宽度σ以及连接权值w。然后将影响输出响应值的多个特征因素作为PSO-RBF神经网络模型的输入神经元, 输出响应值作为输出神经元进行预测测试。并使用BP神经网络,RBF神经网络对同一任务进行对比,结果表示PSO-RBF的准确度最好。本文所提方法常用于多种数学建模,相比其余单个算法更加出彩,效果也更优秀。

1.RBF神经网络介绍:

RBF神经网络的原理是利用径向基函数作为隐含层单元的“基”构成隐含层空间, 隐含层对输入向量进行变换, 将低维空间的输入数据映射到高维空间, 使得在低维空间线性不可分的问题在高维空间实现线性可分。下图为RBF神经网络结构:

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第1张图片

2.RBF神经网络与BP神经网络的特点:

RBF神经网络与BP神经网络不同, RBF的泛化能力在很多方面要优于BP, 同时在网络的训练过程中, 不需要调整神经元之间的连接权值, 完全通过样本数据进行学习, 而且RBF神经网络的学习速率很快. 与BP神经网络模型、传统物理模型相比, RBF神经网络构建的模型不是过于复杂,适用性很好. 所以本文以RBF神经网络模型为基础,利用PSO算法对RBF神经网络的主要参数进行优化,最终建立预测精度较高的模型.

3.PSO-RBF优化流程:

RBF神经网络的关键问题是径向基函数的中心、宽度和连接权值这3个参数的确定, 而采用PSO算法对RBF神经网络优化就是将这3个参数当做自由运动的粒子, 以向量的形式表示粒子的位置, 通过PSO算法来确定参数合适的值, 最终建立RBF神经网络.在优化过程中, 根据径向基函数的特点选择均方误差作为PSO算法的适应度函数。

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第2张图片

4.实际测试及结果分析:

4.1 BP神经网络测试结果

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第3张图片

4.2 RBF神经网络测试结果

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第4张图片

4.3 PSO-RBF神经网络测试结果

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第5张图片

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第6张图片

使用粒子群(PSO)优化径向基神经网络(RBF)实现回归预测_第7张图片

从上面的结果可以看出,PSO-RBF的预测性能是最佳的,其次是RBF,最后是BP。这说明RBF相比于BP来说在回归预测问题上有着更好的性能。通过使用PSO来寻找RBF的最优参数可以使得RBF到达更高的预测性能。

5.Matlab代码:

本文仅展示部分代码,需要全部的完整代码点这里:正在为您运送作品详情

已写好输入与输出的替换接口,可以通过替换自己数据集实现不同的功能。

%% 这个函数是主函数,要直接运行这个就可看到所有结果
clc;
clear;
close all;
%% 输入数据并建立训练集测试集
load data.mat;
temp = randperm(size(NIR,1)); %打乱60个样本排序
x_train = NIR(temp(1:50),:)'; % 训练输入
x_test = NIR(temp(51:end),:)'; % 测试输入
y_train =octane(temp(1:50),:)'; % 训练输出
y_test =octane(temp(51:end),:)'; % 训练输入
%% 归一化
% 输入数据归一化
[NIR, ps_input] = mapminmax(NIR',0,1);
x_train = mapminmax('apply',x_train,ps_input);
x_test = mapminmax('apply',x_test,ps_input);
% 输出数据归一化
[octane, ps_output] = mapminmax(octane',0,1); 
y_train = mapminmax('apply',y_train,ps_output);
y_test = mapminmax('apply',y_test,ps_output);
%% BP神经网络
[net_bp,tr_bp,Predict_bp,R_bp] = BPnet(x_train,x_test,y_train,y_test,ps_output);
%% RBF神经网络
[net_rbf,Predict_rbf,R_rbf] = RBFnet(x_train,x_test,y_train,y_test,ps_output);
%% PSO-RBF神经网络
[mse,TestNNOut] = PSORBFnet(x_train,x_test,y_train,y_test,ps_output);

你可能感兴趣的:(机器学习,神经网络,回归,算法,机器学习,matlab)