【DELM数据预测】基于matlab麻雀搜索算法优化DELM数据预测【含Matlab源码 1146期】
一、麻雀搜索算法优化深度学习极限学习机DELM预测模型实现流程
1 麻雀搜索算法
麻雀搜索算法是一种新型的群智能优化算法,在2020年由Xue等提出,主要是受麻雀的觅食和反哺食行为启发,具有寻优能力强、收敛速度快的特点。
麻雀搜索算法将整个麻雀种群分为三类,即寻找食物的生产者,抢夺食物的加入者和发现危险的警戒者。生产者和加入者可以相互转化,但各自在种群中的占比不会发生变化。
在模拟实验中,需要使用虚拟麻雀进行食物的寻找,与其他寻优算法相同,麻雀搜索算法首先需要对麻雀种群与适应度值进行初始化,麻雀种群可初始化为如下形式,表达式为
式(3)中:n为麻雀的数量;d为要优化的变量的维度即独立参数的数目;xn,d为第n只麻雀第d维度的值。
由此,总体麻雀适应度值表征形式为
式(4)中:f(x)为个体适应度值。适应度值较好的麻雀(即生产者)在搜索中会优先获得食物并指引群体的觅食方向与范围,与此同时,生产者会具有更大的觅食搜索范围。
生产者在觅食过程中,位置不断发生移动,而在遇到捕食者时,移动规则又会发生改变,即
式(5)中:t为当前迭代次数;j∈{1,2,…,d};xti,j为迭代第t次时,第i个麻雀的第j个维度的值;α∈(0,1],为随机数;itermax 为迭代次数最多的常数;R2∈[0,1],为报警值;ST∈[0,1],为安全阈值;Q为服从正态分布的随机数;L为1×d阶矩阵(元素全为1)。R2<ST时,代表该区域安全,无捕食者出没,生产者会出现大范围觅食行为;R2≥ST时,表示一些麻雀发现了捕食者并发出警告,所有麻雀迅速飞入安全区域。
而对加入者而言,在觅食过程中,一旦生产者找到了好的食物源,加入者必会知晓,并飞向它的附近抢食,同时,也有加入者会时刻监视生产者,随时准备争抢食物。由此加入者的位置更新规则为
式(6)中:xp为生产者占据的最佳位置;xworst为全局最差位置;A为1×d阶矩阵,每个元素随机为1或-1;A†=AT(AAT)-1。当i>n2时,表示适应性较差的第i个加入者抢夺食物失败,为了更好地获得食物避免挨饿只能飞往其他地区进行觅食。
总体而言,假设意识到危险的麻雀(即警戒者)占10%~20%。初始位置则随机产生,规则为
式(7)中:λ为步长控制函数,是一个均值为0,方差为1的正态分布随机数;fi为当前麻雀适应值;fg为全局最好适应值;fw为全局最差适应值;k为麻雀移动方向;xbest为全局最优位置;ε为最小常数,避免除数为零。当fi>fg时,警戒者位于种群边缘,意识到危险后向中央安全区靠近;当fi=fg时,则是处于种群中央的麻雀意识到了危险,为躲避危险,则向其他麻雀身边靠拢。
2 核极限学习机算法
传统的单隐层神经网络由三部分组成,分别是输入层、隐含层和输出层,输入层神经元节点个数即输入变量的个数,隐含层节点个数则需要人为给定,输出层节点个数也就是输出变量的个数。
在2006年,新加坡南洋理工大学的Huang等[16]在传统的单隐层神经网络的基础上提出了一种新的前馈神经网络学习算法,命名为极限学习机(extreme learning machine, ELM),不同于传统的基于梯度的前馈神经网络算法,该方法随机产生隐含层与输入层之间的连接权值及隐含层神经元的阈值,训练过程中只需要设置隐含神经元的个数便可获得唯一最优解,极限学习机网络结构如图1所示。
图1 极限学习机的网络结构
在极限学习机中,假设有N个随机样本,设其为(Xi,ti),其中,xi=[xi1,xi2,…,xin]T∈Rn,ti=[ti1,ti2,…,tim]T∈Rm,R为实数,则对于具有L个隐含层神经元的单隐层神经网络,它第i个节点的输出hi(x)可表示为
hi(x)=g(wi,bi,xi)=g(wi·xi+bi) (8)
式(8)中:wi为输入权重;bi为第i个隐含层神经元的阈值;wi·xi为wi和xi的内积;g(x)为一个任意区间无限可微的激活函数,激活函数可自行设置,常用的激活函数有sig、sin、hardlim等,但也有研究表明,激活函数既可以是非线性函数,也可以为不可微函数或不连续函数。
则隐藏层输出矩阵为
H(x)=[h1(x),h2(x),…,hL(x)] (9)
由此,输出层可表示为
fL(x)=H(x)β (10)
式(10)中:β=[β1,β2,…,βL]T为隐藏层与输出层之间的输出权重。
由式(8)~式(10)可知,极限学习机中需求解的有3个未知量:w、b、β。通过ELM的特殊性质来求解。ELM对单隐层前馈神经网络的训练主要分为如下两个阶段。
(1)随机特征映射。
即随机产生隐含层的参数w和b,在传统的反向传播(back propagation, BP)神经网络中,这两个参数通过计算得来,而ELM的做法则大大提升了运算效率。
(2)线性参数求解。
在确定了输入权重w和隐含神经元阈值b之后,通过式(8)、式(9)可求得隐藏层的输出矩阵H,进而通过最小化近似平方差的方法对β进行求解,目标函数如下:
min‖Hβ-T‖2, β∈RL×m (11)
其中,期望矩阵为
T=[T1,T2,…,TN]T (12)
输出矩阵为
其解为β*=H†T,其中,H†为矩阵H的Moore-Penrose广义逆矩阵。
因为ELM中的输入权重w和隐含神经元阈值b是随机产生,算法效果不稳定,所以之后Huang等为了算法的准确性和稳定性,又在算法中引入了核参数,使其代替ELM的随机特征映射,形成核极限学习机算法。
通过正交投影和岭回归(ridge regression)理论,引入正则化系数C,则输出权重可表示为
因此输出函数
式(15)中:K(x,xi)为核函数。
3 模型建立
利用麻雀搜索算法对核极限学习机的两项参数:核参数K及正则化系数C进行优化,得到SSA-KELM耦合滑坡预测模型,其实施步骤如下。
步骤1 初始化种群。设置麻雀数量为20,随机产生初始核参数K及正则化系数C,生成种群初始位置。
步骤2 确定优化参数的取值范围。根据多次实验,确定核参数K为(-1010,1010),正则化系数C为(-1010,1010)。
步骤3 建立SSA-KELM耦合模型,计算麻雀个体适应度f(xi),i=1,2,…,n,对适应度值进行排序,寻找出当前最好和最差的个体。适应度函数为
式(16)中:di为真实值;d∧i为函数预测值。
步骤4 根据式(5)~式(7)更新麻雀位置。
步骤5 获取新的麻雀位置及个体适应度值,将本轮最优适应度值与之前的最优适应度值做比较,如果本轮更优,则更新全局最优适应度值Gbest与相关位数。
步骤6 循环结束。当迭代次数大于500,则寻优过程结束。
步骤7 得到KELM的最佳训练参数,模型建立。
二、部分源代码
%% 初始化
clear
close all
clc
- 1
- 2
- 3
- 4
- 5
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
[6]马飞燕,李向新.基于改进麻雀搜索算法-核极限学习机耦合算法的滑坡位移预测模型[J].科学技术与工程. 2022,22(05)
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/124282983
- 点赞
- 收藏
- 关注作者
评论(0)