elm学习总结

学习了解ELM(极限学习机);

(1)算法介绍

极限学习机,该算法随机产生输入层与隐含层的链接权值与隐含层神经元的阈值,并且在训练过程中无需调整,只要设置隐含层的神经元个数就可以得到最优解。

算法的步骤可以分为:

1.确定隐含层的神经元个数,随机设定输入层与隐含层的链接权值,和隐含层的神经元的偏置b

2.选择一个无限可微的函数作为隐含层神经元的激活函数(也叫压制函数)计算隐含层的输出H

3.计算输出层权值

    非线性激活函数可以使用,也可以使用不可微函数,甚至可以使用不连续的函数作为激活函数。

(2)问题描述

单隐含层的前馈神经网络在很多的邻域得到了很好的应用,然而传统的学习算法有很多的缺点,比如说速度慢,容易陷入局部极小值点,对学习速率很敏感,容易过学习和欠学习,因此对于仪征可以速度快且泛化性能好的算法很重要。

适用于回归,拟合,也适用于分类、模式识别

(3)程序流程

 

ELM算法流程图

(4) 程序实现

1.ELM做回归拟合

function [IW,B,LW,TF,TYPE] = elmtrain(P,T,N,TF,TYPE)

参数传递 Pn_train,Tn_train,20,'sig',0

%输入数据、输出数据、节点数、采取函数,采取模式

%根据参数数量判断

if nargin < 2

    error('ELM:Arguments','Not enough input arguments.');

end

if nargin < 3

    N = size(P,2);

end

if nargin < 4

    TF = 'sig';

end

if nargin < 5

    TYPE = 0;

end

if size(P,2) ~= size(T,2)

    error('ELM:Arguments','The columns of P and T must be same.');

end

[R,Q] = size(P);

if TYPE  == 1

    T  = ind2vec(T);%变成矢量表示

end

[S,Q] = size(T);

% Randomly Generate the Input Weight Matrix

IW = rand(N,R) * 2 - 1;   %随机取权值

% Randomly Generate the Bias Matrix

B = rand(N,1);  %随机取阈值

BiasMatrix = repmat(B,1,Q);%重新排列

% Calculate the Layer Output Matrix H

tempH = IW * P + BiasMatrix;%隐含层的输出

switch TF       %根据采取的激活函数算出不同的输出

    case 'sig'

        H = 1 ./ (1 + exp(-tempH));

    case 'sin'

        H = sin(tempH);

    case 'hardlim'

        H = hardlim(tempH);

end

% Calculate the Output Weight Matrix

LW = pinv(H') * T';  %计算输出权重

 

function Y = elmpredict(P,IW,B,LW,TF,TYPE)

%输入数据,输入权重,阈值,隐含层输出层权值,隐含层节点数,模式选择

if nargin < 6%参数判断

    error('ELM:Arguments','Not enough input arguments.');

end

Q = size(P,2);%计算输出层的输出H

BiasMatrix = repmat(B,1,Q);

tempH = IW * P + BiasMatrix;

switch TF %判断激活函数的模式

    case 'sig'

        H = 1 ./ (1 + exp(-tempH));

    case 'sin'

        H = sin(tempH);

    case 'hardlim'

        H = hardlim(tempH);

end

% Calculate the Simulate Output

Y = (H' * LW)';%计算输出层的输出

if TYPE == 1%模式选择

    temp_Y = zeros(size(Y));

    for i = 1:size(Y,2)

        [max_Y,index] = max(Y(:,i));

        temp_Y(index,i) = 1;

    end

    Y = vec2ind(temp_Y); %向量转换

End

Tic       %关键代码

%% ELM创建/训练

[IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,20,'sig',0);

%% ELM仿真测试

Tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);

反归一化

T_sim = mapminmax('reverse',Tn_sim,outputps);

Toc

2.ELM做分类

Tic    %关键代码

%% ELM创建/训练

[IW,B,LW,TF,TYPE] = elmtrain(P_train,T_train,100,'sig',1);

%% ELM仿真测试

T_sim_1 = elmpredict(P_train,IW,B,LW,TF,TYPE);

T_sim_2 = elmpredict(P_test,IW,B,LW,TF,TYPE);

toc 

(5)结果分析

时间已过 1.014221 秒。

训练集正确率Accuracy = 92.6%(463/500)

测试集正确率Accuracy = 86.9565%(60/69)

病例总数:569  良性:357  恶性:212

训练集病例总数:500  良性:313  恶性:187

测试集病例总数:69  良性:44  恶性:25

良性乳腺肿瘤确诊:42  误诊:2  确诊率p1=95.4545%

恶性乳腺肿瘤确诊:18  误诊:7  确诊率p2=72%

 

时间已过 0.257515 秒。

E =

   6.7835e-04

R2 =

1.0000

 

 

ELM的预测误差图

 

ELM预测与对比图

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ELM极限学习机是一种通过随机选择输入权重和分析以确定网络的输出权重的学习算法,最初是对单隐层前馈神经网络提出的一种新型的学习算法。在Python中,可以使用numpy库来实现ELM极限学习机算法。 在使用ELM极限学习机进行训练时,需要准备一个包含所有训练模式的矩阵training_patterns。这个矩阵的大小是Nxd,其中N表示训练模式的数量,d表示每个训练模式的维度。需要保存所有训练模式,以便在测试和预测阶段进行核计算。 训练完成后,可以计算输出权重output_weight,它是一个大小为Nx1的列向量,表示Β(beta)。这个向量可以用于在测试和预测阶段进行结果的计算。 在Python中,可以使用numpy库来进行矩阵运算和计算Β(beta)。可以通过调用相应的函数来实现ELM极限学习机算法,并传入训练模式矩阵和其他必要的参数。最后,可以使用得到的输出权重进行测试和预测。 总结来说,ELM极限学习机是一种通过随机选择输入权重和分析以确定网络的输出权重的学习算法,可以使用Python中的numpy库来实现。训练模式矩阵包含所有训练模式,输出权重是计算出来的列向量,可以用于测试和预测阶段的结果计算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python实现极限学习ELM【hpelm库】(内涵源代码)](https://blog.csdn.net/weixin_44333889/article/details/122171575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [极限学习机Python开源库——elm【内附案例源码】](https://blog.csdn.net/weixin_44333889/article/details/124844604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值