基于深度极限学习机DELM的回归预测

基于深度极限学习机DELM的回归预测

1.ELM原理

ELM基础原理请参考:https://blog.csdn.net/u011835903/article/details/111073635。

自动编码器 AE(Auto Encoder)经过训练可以将输入复制到输出。因为不需要标记数据,训练自动编码器是不受监督的。因此,将AE的思想应用到ELM中,使ELM的输入数据同样被用于输出,即输出Y=X。作为自编码器的极限学习机ELM-AE网络结构如图1所示。

请添加图片描述

图1.ELM-AE网络结构图

若图1中m>L ,ELM-AE实现维度压缩,将高维度数据映射成低维度特征表达;若 m=L,ELM-AE实现等维度的特征表达;若 m<L ,ELM-AE实现稀疏表达,即原始数据的高维特征表达。

综上,ELM-AE是一个通用的逼近器,特点就是使网络的输出与输入相同,而且隐藏层的输入参数 ( a i , b i ) (a_i,b_i) (ai,bi)​​随机生成后正交。正交化后的优点有:

(1)根 据 J-L(Johnson-Lindensrauss) 定理,权重和偏置正交化可以将输入数据映射到不同或等维度的空间,从而实现不同功能的特征表达。

(2)权重和偏置的正交化设计可以去除特征以外的噪声,使特征之间均匀,且更加线性独立进而增强系统的泛化能力。

ELM-AE的输出可以用如下表达式表示:
x j = ∑ i = 1 L β i G ( a i , b i , x j ) , a i ∈ R m , β i ∈ R m , j = 1 , 2 , . . . , N , a T a = I , b T b = 1 (1) x_j=\sum_{i=1}^L \beta_iG(a_i,b_i,x_j),a_i\in R^m,\beta_i\in R^m,j=1,2,...,N,a^Ta=I,b^Tb=1 \tag{1} xj=i=1LβiG(ai,bi,xj),aiRm,βiRm,j=1,2,...,N,aTa=I,bTb=1(1)
其中 a a a a i a_i ai组成的矩阵, b b b b i b_i bi​组成的向量。隐藏层的输出权重为:
β = ( I C + H T H ) − 1 H T X (2) \beta = (\frac{I}{C}+H^TH)^{-1}HTX \tag{2} β=(CI+HTH)1HTX(2)
其中, X = [ x 1 , . . . , x N ] X=[x_1,...,x_N] X=[x1,...,xN]是输入数据。

2.深度极限学习机(DELM)原理

根据ELM-AE的特征表示能力,将它作为深度极限学习机 DELM的基本单元。与传统深度学习算法相同,DELM 也是用逐层贪婪的训练方法来训练网络,DELM每个隐藏层的输入权重都使用ELM-AE初始化,执行分层无监督训练,但是与传统深度学习算法不同的是DELM不需要反向微调过程。

请添加图片描述

图2.DELM模型训练过程

DELM的思想是通过最大限度地降低重构误差使输出可以无限接近原始输入,经过每一层的训练,可以学习到原始数据的高级特征。图2描述了DELM模型的训练过程,将输入数据样本X作为第1个ELM-AE的目标输出( X 1 = X X_1 =X X1=X​​),进而求取输出权值 β 1 β_1 β1​​ ;然后将DELM第1个隐藏层的输出矩阵 H 1 H_1 H1​​当作下1个 E L M − A E ELM-AE ELMAE​的输入与目标输出( X 2 = X X_2=X X2=X​),依次类推逐层训练,最后1层用 E L M ELM ELM​​​来训练,使用式(2)来求解DELM的最后1个隐藏层的输出权重 β i + 1 \beta_{i+1} βi+1​​ 。图2中 H i + 1 H_{i+1} Hi+1​​ 是最后1个隐藏层的输出矩阵,T是样本标签。 H i + 1 H_{i+1} Hi+1​每1层隐藏层的输入权重矩阵为 W i + 1 = β i + 1 T W_{i+1}=\beta_{i+1}^T Wi+1=βi+1T​。

3.实验结果

本案例中数据总量为600组,其中训练集和测试集分别划分为400组和200组。输入数据维度为3维,标签数据为1维。数据划分结果如下:

%% 导入数据
load data
%训练集——400个样本
P_train=input(:,(1:400));
T_train=output((1:400));
% 测试集——200个样本
P_test=input(:,(400:600));
T_test=output((400:600));

DELM的参数设置如下:

这里DELM采用2层结构,每层的节点数分别为2,3。采用sigmoid激活函数。

%% DELM参数设置
ELMAEhiddenLayer = [2,3];%ELM—AE的隐藏层数,[n1,n2,...,n],n1代表第1个隐藏层的节点数。
ActivF = 'sig';%ELM-AE的激活函数设置
C = 5; %正则化系数

最终预测结果如下:

训练集预测结果:

请添加图片描述
测试集预测结果:

请添加图片描述

从结果上来看DELM的预测值与真实值还是比较接近。

3.参考文献

[1]颜学龙,马润平.基于深度极限学习机的模拟电路故障诊断[J].计算机工程与科学,2019,41(11):1911-1918.

4.Matlab代码

在这里插入图片描述

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
深度极限学习机(Deep Extreme Learning Machine,DELM)是一种深度学习算法。下面是一个用MATLAB实现DELM的代码示例: ```matlab % 步骤一:数据准备 load data.mat % 载入数据集 x_train = data.train_x; % 训练集特征数据 y_train = data.train_y; % 训练集标签数据 x_test = data.test_x; % 测试集特征数据 y_test = data.test_y; % 测试集标签数据 input_size = size(x_train, 2); % 输入层大小 hidden_size = 100; % 隐藏层大小 output_size = 10; % 输出层大小 % 步骤二:网络构建 input_weights = rand(input_size, hidden_size); % 输入层权重矩阵 bias_hidden = rand(1, hidden_size); % 隐藏层偏置项 hidden_output = tanh(x_train * input_weights + bias_hidden); % 隐藏层输出 output_weights = pinv(hidden_output) * y_train; % 输出层权重矩阵 % 步骤三:网络训练 hidden_output_test = tanh(x_test * input_weights + bias_hidden); % 测试集上的隐藏层输出 output_pred = hidden_output_test * output_weights; % 测试集上的预测输出 % 步骤四:预测结果评估 [~, y_pred] = max(output_pred, [], 2); % 选择最大值所在的索引作为预测标签 accuracy = sum(y_pred == y_test) / length(y_test); % 计算预测准确率 disp(['预测准确率为:' num2str(accuracy)]); ``` 以上代码是一个简单的DEL代码示例,能够基本实现对给定数据集的训练和预测。需要注意的是,代码中的数据集加载、参数设置等部分需要根据具体情况进行修改。此外,为了提高模型性能,可能需要对网络结构和训练过程进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值