基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码 HarmonyOS博客 51CTO博客

2023-05-08 18:24:13 30浏览

基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码,,对应n个输入变量,隐含层有l个神


基于麻雀搜索算法的极限学习机(ELM)分类算法


文章目录

  • 基于麻雀搜索算法的极限学习机(ELM)分类算法
  • 1.极限学习机原理概述
  • 2.ELM学习算法
  • 3.分类问题
  • 4.基于麻雀搜索算法优化的ELM
  • 5.测试结果
  • 6.参考文献
  • 7.Matlab代码
  • 8.Python代码



摘要:本文利用麻雀搜索算法对极限学习机进行优化,并用于分类问题

1.极限学习机原理概述

典型的单隐含层前馈神经网络结构如图1 所示,由输入层、隐含层和输出层组成,输 入层与隐含层、隐含层与输出层神经元间全连接。其中,输入层有 n 个神经元,对应 n 个输入变量, 隐含层有 l个神经元;输出层有 m 个神经元 ,对应 m 个输出变量 。 为不失一般性,设输 入层与隐含层间的连接权值 w 为:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_搜索算法
其中,基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_算法_02表示输入层第基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_算法_03个神经元与隐含层第基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_搜索算法_04个神经元间的连接权值。

基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_算法_05

设隐含层与输出层间的连接权值 , 为基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_机器学习_06:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_算法_07
其中,自基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_搜索算法_08表示隐含层第 j 个神经元与输出层第 k个神经元间的连接权值。

设隐含层神经元的阈值值 b 为:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_神经网络_09
设具有 Q 个样本的训练集输入矩阵 X 和输出矩阵 Y 分别为
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_神经网络_10

基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_深度学习_11

设隐含层神经元的激活函数为 g(x),则由图1 可得, 网络的输出 T 为:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_机器学习_12
式(6)可表示为:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_算法_13
其中, T’为矩阵 T 的转置; H 称为神经网络的隐含层输出矩阵 , 具体形式如下 :
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_搜索算法_14

2.ELM学习算法

由前文分析可知,ELM在训练之前可以随机产生 w 和 b , 只需确定隐含层神经元个数及隐含层和神经元的激活函数(无限可微) , 即可计算出基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_机器学习_06

(1)确定隐含层神经元个数,随机设定输入层与隐含层间的连接权值 w 和隐含层神经元的偏置 b ;

(2) 选择一个无限可微的函数作为隐含层神经元的激活函数,进而计算隐含层输出矩 阵 H ;

(3)计算输出层权值:基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_机器学习_16

值得一提的是,相关研究结果表明,在 ELM 中不仅许多非线性激活函数都可以使用(如 S 型函数、正弦函数和复合函数等),还可以使用不可微函数,甚至可以使用不连续的函数作为激 活函数。

3.分类问题

本文对乳腺肿瘤数据进行分类。采用随机法产生训练集和测试集,其中训练集包含 500 个样本,测试集包含 69 个样本 。

4.基于麻雀搜索算法优化的ELM


由前文可知,ELM的初始权值和阈值都是随机产生。每次产生的初始权值和阈值具有满目性。本文利用麻雀搜索算法对初始权值和阈值进行优化。适应度函数设计为训练集的错误率与测试集的错误率的和,以期望使训练得到的网络在测试集和训练集上均有较好的结果:
基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_深度学习_17

5.测试结果

麻雀算法相关参数如下:

%训练数据相关尺寸
R = size(Pn_train,1);
S = size(Tn_train,1);
N = 20;%隐含层个数
%% 定义麻雀优化参数
pop=20; %种群数量
Max_iteration=50; %  设定最大迭代次数
dim = N*R + N*S;%维度,即权值与阈值的个数
lb = [-1.*ones(1,N*R),zeros(1,N*S)];%下边界
ub = [ones(1,N*R),ones(1,N*S)];%上边界

将经过麻雀优化后的SSA-ELM与基础ELM进行对比。

预测结果如下图

麻雀收敛曲线如下:

基于麻雀搜索算法的极限学习机(ELM)分类算法-附代码_神经网络_18

数据结果如下:

麻雀优化ELM结果展示:----------------
训练集正确率Accuracy = 99%(495/500)
测试集正确率Accuracy = 95.6522%(66/69)
病例总数:569 良性:357 恶性:212
训练集病例总数:500 良性:318 恶性:182
测试集病例总数:69 良性:39 恶性:30
良性乳腺肿瘤确诊:39 误诊:0 确诊率p1=100%
恶性乳腺肿瘤确诊:27 误诊:3 确诊率p2=90%

传统ELM结果展示:----------------
训练集正确率Accuracy = 92.8%(464/500)
测试集正确率Accuracy = 84.058%(58/69)
病例总数:569 良性:357 恶性:212
训练集病例总数:500 良性:318 恶性:182
测试集病例总数:69 良性:39 恶性:30
良性乳腺肿瘤确诊:36 误诊:3 确诊率p1=92.3077%
恶性乳腺肿瘤确诊:22 误诊:8 确诊率p2=73.3333%

从上述数据可以看出,SSA-ELM训练得到的网络,无论是在测试集和训练集上的正确率均高于基础ELM训练得到的网络。SSA-ELM具有较好的性能。

6.参考文献

书籍《MATLAB神经网络43个案例分析》

7.Matlab代码

基于麻雀算法的极限学习机(ELM)分类算法
基于哈里斯鹰算法的极限学习机(ELM)分类算法
基于鲸鱼算法的极限学习机(ELM)分类算法
基于粒子群的极限学习机(ELM)分类算法

8.Python代码

个人资料介绍


好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695