概率神经网络:萤火虫算法优化概率神经网络的数据分类

作品简介

一、萤火虫算法

把空间各点看成萤火虫,利用发光强的萤火虫会吸引发光弱的萤火虫的特点。在发光弱的萤火虫向发光强的萤火虫移动的过程中,完成位置的迭代,从而找出最优位置,即完成了寻优过程。萤火虫算法有以下条件:

1. 假设所有萤火虫都是同一性别且相互吸引;

2. 吸引度只与发光强度和距离有关,发光强的萤火虫会吸引周围发光弱 的萤火虫,但是随着距离的增大吸引度逐渐减小,发光强的萤火虫会做随机运动;

3. 发光强弱由目标函数决定,在制定区域内与指定函数成比例关系。

搜索过程和萤火虫的两个重要参数有关:萤火虫的发光亮度和相互吸引度,发光亮的萤火虫会吸引发光弱的萤火虫向它移动,发光越亮代表其位置越好,最亮萤火虫即代表函数的最优解。发光越亮的萤火虫对周围萤火虫的吸引度越高,若发光亮度一样,则萤火虫做随机运动,这两个重要参数都与距离成反比,距离越大吸引度越小。


二、概率神经网络PNN

概率神经网络(Probabilistic Neural Network,PNN)是径向基网络的一个分支,属于前馈神经网络,是一种4层结构的概率型神经网络,包括输入层、隐含层、求和层和输出层。

参考文献:

苏审言,张建德.基于概率神经网络的变压器局部放电模式识别[J].电气自动化,2022,44(03):91-93.

将概率神经网络求和层中最大值所在的类别作为输出层的输出。

三、Wine数据集

Wine葡萄酒数据集是来自UCI上面的公开数据集,这些数据是对意大利同一地区种植的葡萄酒进行化学分析的结果,这些葡萄酒来自三个不同的品种。该分析确定了三种葡萄酒中每种葡萄酒中含有的13种成分的数量。从UCI数据库中得到的这个wine数据记录的是在意大利某一地区同一区域上三种不同品种的葡萄酒的化学成分分析。数据里含有178个样本分别属于三个类别,这些类别已经给出。每个样本含有13个特征分量(化学成分),分析确定了13种成分的数量,然后对其余葡萄酒进行分析发现该葡萄酒的分类。wine葡萄酒数据集

在wine数据集中,这些数据包括了三种酒中13种不同成分的数量。文件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一个属性是类标识符,分别是1/2/3来表示,代表葡萄酒的三个分类。后面的13列为每个样本的对应属性的样本值。剩余的13个属性是,酒精、苹果酸、灰、灰分的碱度、镁、总酚、黄酮类化合物、非黄烷类酚类、原花色素、颜色强度、色调、稀释葡萄酒的OD280/OD315、脯氨酸。其中第1类有59个样本,第2类有71个样本,第3类有48个样本。

具体属性描述如下表:

Wine部分数据如下:前13列为输入,最优1列为输出标签。

四、数值实验

构建13-24-3-1的概率神经网络PNN,并通过萤火虫算法FA优化其模式层的中心向量平滑因子,适应度函数为预测值与真实值的平均绝对误差MAE,部分代码如下:

close all
clear
clc
global inputnum hiddennum summationsum outputnum TrainNum 
inputnum=13;%神经网络输入层神经元个数(输入样本维度)
outputnum=1;%神经网络输出层神经元个数(输出样本维度)
summationsum=3;%类别数目
hiddennum=8*summationsum;%神经网络隐藏层神经元个数(可以自己修改)
TrainNum=178;%训练集数目 
%% 萤火虫算法FA优化概率神经网络PNN,目标函数是均方误差MAE
SearchAgents_no=30; % Number of search agents 种群大小(可以修改)
Function_name='F1'; 
Max_iteration=100; % Maximum numbef of iterations 最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
% [fMin,bestX,curve]=FA_Alogrith(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %萤火虫算法FA优化概率神经网络PNN的参数 bestX是最优参数
[fMin,bestX,curve]=FA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %萤火虫算法FA优化概率神经网络PNN的参数 bestX是最优参数
save bestX bestX %保留萤火虫算法FA优化概率神经网络PNN得到的最优参数
save curve curve
%% 画出萤火虫算法FA优化概率神经网络PNN的MAE随迭代次数的图
figure
semilogy(curve,'Color','g')
% title('Objective space')
xlabel('Iteration');
ylabel('MAE');
grid on
box on
legend('FA')
display(['The best solution obtained by FA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by FA is : ', num2str(fMin)]);%fMin越小说明萤火虫算法FA优化概率神经网络PNN效果越好
Predata;%预测
%%








五、参考代码

文件夹内包含所有代码可以直接运行,且提供使用说明,可自行修改其中参数。


创作时间: