【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】

⛄一、基本极限学习机算法简介

传统前馈神经网络采用梯度下降的迭代算法去调整权重参数, 具有明显的缺陷:

  1. 学习速度慢, 从而计算时间代价增大;
  2. 学习率难以确定且易陷入局部最小值;
  3. 易出现过度训练, 引起泛化性能下降。
    这些缺陷成为制约使用迭代算法的前馈神经网络的广泛应用的瓶颈。针对这些问题, Huang[5]等依据摩尔-彭罗斯 (MP) 广义逆矩阵理论提出了极限学习 (ELM) 算法, ELM算法随机产生输入层与隐含层的连接权值及隐含层神经元的阈值, 且在训练过程中无需调整, 只需要设置隐含层神经元的个数, 便可以获得唯一的最优解。同迭代算法相比, 极限学习机极大地提高了网络的泛化能力和学习速度。

极限学习机的网络训练模型采用前向单隐层结构。设m, M, n分别为网络输入层、隐含层和输出层的节点数, g (x) 是隐层神经元的激活函数, bi为阈值。设有N个不同样本 (xi, ti) 1≤i≤N, 其中xi=[xi1, xi2, …, xim]T, ti=[ti1, ti2, …, tin]T, 则极限学习机的网络训练模型如图1所示。
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第1张图片
图1 极限学习机的网络训练模型
极限学习机的网络模型可用数学表达式表示如下
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第2张图片
其中i∈[1, N], j∈[1, M];网络输入层节点与第j个隐层节点的输入权值向量为ωj=[ω1j, ω2j, …, ωmj];连接第j个隐层节点与网络输出层节点的输出权值向量为βj=[βj1, βj2, …, βjn];bj第j个隐层节点的阈值;oi=[oi1, oi2, …, oin]T表示网络输出值。

极限学习机的代价函数E可表示为
在这里插入图片描述
式中, S= (ωi, bi, i=1, 2, …, M) , 包含了网络输入权值及隐层节点阈值。Huang等指出极限学习机的悬链目标就是寻求最优的S, β, 使得网络输出值与对应实际值误差最小, 即min (E (S, β) ) 。min (E (S, β) ) 可进一步写为:
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第3张图片
式中, H表示网络关于样本的隐层输出矩阵, β表示输出权值矩阵, T表示样本集的目标值矩阵:
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第4张图片
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第5张图片
对于ELM模型, 其输入权值矩阵和隐层偏差是随机确定的, 从而使得一些隐含层的节点失效或不能满足数据要求。从而, 自适应地选择最佳的隐层节点数就变得至关重要了。

⛄二、部分源代码

%% 基于布谷鸟算法优化的深度极限学习机DLM的预测算法
clear;clc;close all;
%% 导入数据
load data
%训练集——400个样本
P_train=input(:,(1:550));
T_train=output((1:550));
% 测试集——200个样本
P_test=input(:,(250:350));
T_test=output((250:350));
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,0,1);
Pn_test = mapminmax(‘apply’,P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,0,1);
Tn_test = mapminmax(‘apply’,T_test,outputps);

%所有的数据输入类型应该为 N*dim,其中N为数据组数,dim为数据的维度
Pn_train = Pn_train’;
Pn_test = Pn_test’;
Tn_train = Tn_train’;
Tn_test = Tn_test’;

%% DELM参数设置
ELMAEhiddenLayer = [2,3];%ELM—AE的隐藏层数,[n1,n2,…,n],n1代表第1个隐藏层的节点数。
ActivF = ‘sig’;%ELM-AE的激活函数设置
C = inf; %正则化系数
%% 优化算法参数设置:
%计算权值的维度
dim = ELMAEhiddenLayer(1)*size(Pn_train,2);
if length(ELMAEhiddenLayer)>1
for i = 2:length(ELMAEhiddenLayer)
dim = dim + ELMAEhiddenLayer(i)*ELMAEhiddenLayer(i-1);
end
end
popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = -1;%权值下边界
ub = 1;%权值上边界
fobj = @(X)fun(X,Pn_train,Tn_train,Pn_test,Tn_test,ELMAEhiddenLayer,ActivF,C);
[Best_pos,Best_score,CS_cg_curve]=CS(popsize,Max_iteration,lb,ub,dim,fobj);
figure
plot(CS_cg_curve,‘k’,‘linewidth’,2)
xlabel(‘迭代次数’)
ylabel(‘适应度值’)
grid on
title(‘布谷鸟算法收敛曲线’)
%% 利用布谷鸟获得的初始权重,进行训练
BestWeitht = Best_pos;
%DELM训练
OutWeight = DELMTrainWithInitial(BestWeitht,Pn_train,Tn_train,ELMAEhiddenLayer,ActivF,C);
%训练集测试结果
predictValueTrainCS = DELMPredict(Pn_train,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTrainCS = mapminmax(‘reverse’,predictValueTrainCS,outputps);
% 均方误差
Error1CS = (predictValueTrainCS’ - T_train);
MSE1CS = mse(Error1CS);
%测试集测试结果
predictValueTestCS = DELMPredict(Pn_test,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTestCS = mapminmax(‘reverse’,predictValueTestCS,outputps);
% 均方误差
Error2CS = (predictValueTestCS’ - T_test);
MSE2CS = mse(Error2CS);

⛄三、运行结果

【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第6张图片
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第7张图片
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第8张图片
【DELM回归预测】基于matlab布谷鸟算法改进深度学习极限学习机数据回归预测【含Matlab源码 2249期】_第9张图片

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]赵坤,覃锡忠,贾振红.采用改进的布谷鸟算法优化极限学习机[J].计算机仿真. 2018,35(11)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

你可能感兴趣的:(算法,matlab,回归)