一、极限学习机的概念

极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法。

ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),在保证学习精度的前提下比传统的学习算法速度更快。

二、极限学习机的原理

ELM是一种新型的快速学习算法,对于单隐层神经网络,ELM可以随机初始化输入权重和偏置并得到相应的输出权重。

(选自黄广斌老师的PPT)

对于一个单隐层神经网络(见Figure 1),假设有个任意的样本,其中。对于一个有个隐层节点的单隐层神经网络可以表示为

其中,为激活函数,为输入权重,为输出权重,是第个隐层单元的偏置。表示的内积。

单隐层神经网络学习的目标是使得输出的误差最小,可以表示为

即存在,使得

可以矩阵表示为

其中,是隐层节点的输出,为输出权重,为期望输出。

为了能够训练单隐层神经网络,我们希望得到,使得

其中,,这等价于最小化损失函数

传统的一些基于梯度下降法的算法,可以用来求解这样的问题,但是基本的基于梯度的学习算法需要在迭代的过程中调整所有参数。而在ELM算法中, 一旦输入权重和隐层的偏置被随机确定,隐层的输出矩阵就被唯一确定。训练单隐层神经网络可以转化为求解一个线性系统。并且输出权重可以被确定

其中,是矩阵的Moore-Penrose广义逆。且可证明求得的解的范数是最小的并且唯一。

三、实验

    我们使用《简单易学的机器学习算法——Logistic回归》中的实验数据。
原始数据集
我们采用统计错误率的方式来评价实验的效果,其中错误率公式为:
对于这样一个简单的问题,
MATLAB代码
主程序
%% 主函数,二分类问题%导入数据集
A = load('testSet.txt');data = A(:,1:2);%特征
label = A(:,3);%标签[N,n] = size(data);L = 100;%隐层节点个数
m = 2;%要分的类别数%--初始化权重和偏置矩阵
W = rand(n,L)*2-1;
b_1 = rand(1,L);
ind = ones(N,1);
b = b_1(ind,:);%扩充成N*L的矩阵tempH = data*W+b;
H = g(tempH);%得到H%对输出做处理
temp_T=zeros(N,m);
for i = 1:Nif label(i,:) == 0temp_T(i,1) = 1;else temp_T(i,2) = 1;end
end
T = temp_T*2-1;outputWeight = pinv(H)*T;%--画出图形
x_1 = data(:,1);
x_2 = data(:,2);
hold on
for i = 1 : N  if label(i,:) == 0  plot(x_1(i,:),x_2(i,:),'.g');  else  plot(x_1(i,:),x_2(i,:),'.r');  end
endoutput = H * outputWeight;
%---计算错误率
tempCorrect=0;
for i = 1:N[maxNum,index] = max(output(i,:));index = index-1;if index == label(i,:);tempCorrect = tempCorrect+1;end
enderrorRate = 1-tempCorrect./N;

激活函数

function [ H ] = g( X )H = 1 ./ (1 + exp(-X));
end
黄老师提供的极限学习机的代码:点击打开链接

简单易学的机器学习算法——极限学习机(ELM)相关推荐

  1. 简单易学的机器学习算法——梯度提升决策树GBDT

    梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越 ...

  2. 简单易学的机器学习算法——Metropolis-Hastings算法

    在简单易学的机器学习算法--马尔可夫链蒙特卡罗方法MCMC中简单介绍了马尔可夫链蒙特卡罗MCMC方法的基本原理,介绍了Metropolis采样算法的基本过程,这一部分,主要介绍Metropolis-H ...

  3. Python机器学习17——极限学习机(ELM)

    本系列基本不讲数学原理,只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法. (2023年3月11日,已更新--针对评论区指出没有加入激活函数,现在已更新,加入了sigmod激活函数, ...

  4. 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)

    引言 LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的 ...

  5. 简单易学的机器学习算法——受限玻尔兹曼机RBM

    受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种基于能量模型的神经网络模型,在Hinton提出针对其的训练算法(对比分歧算法)后,RBM得到了更多的关注,利用 ...

  6. 简单易学的机器学习算法——非线性支持向量机

    一.回顾     前面三篇博文主要介绍了支持向量机的基本概念,线性可分支持向量机的原理以及线性支持向量机的原理,线性可分支持向量机是线性支持向量机的基础.对于线性支持向量机,选择一个合适的惩罚参数,并 ...

  7. 简单易学的机器学习算法——K-Means++算法

    一.K-Means算法存在的问题 由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指 ...

  8. 简单易学的机器学习算法——Gibbs采样

    一.Gibbs采样概述 前面介绍的Metropolis-Hastings采样为从指定分布中进行采样提供了一个统一的框架,但是采样的效率依赖于指定的分布的选择,若是选择的不好,会使得接受率比较低,大量的 ...

  9. 史上简单易学的机器学习算法——EM算法 缘木求鱼

    一.机器学习中的参数估计问题 二.EM算法简介 在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法.EM算法是期望极大(Expecta ...

  10. 简单易学的机器学习算法——神经网络之BP神经网络

    一.BP神经网络的概念     BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的.具体来说,对于如下的只含一个隐层的神经网络模型: (三层BP神经网络模型) ...

最新文章

  1. [bzoj3673/3674可持久化并查集加强版]
  2. 如何备考上海市高等学校计算机一级,计算机一级考试备考攻略
  3. 一些简单网络命令用法
  4. 区块链之智能合约入门
  5. 五分钟了解Consul
  6. win7安装python
  7. Spring的ApplicationEvent的使用
  8. Font Awesome-为Bootstrap设计的图标字体
  9. OpenGL 获取当前屏幕坐标对应的三维坐标
  10. 关于sqlserver中SqlParameter的用法注意事项
  11. 详解Java异或运算符
  12. 统信UOS应用商店十月活动
  13. LCP 03. 机器人大冒险-力扣双百代码
  14. AB 系统OTA升级
  15. Docker硬盘空间使用分析与清理
  16. redis的游标和模糊查询key的不适用
  17. Unity—手机端的触屏控制
  18. 一幅长文细学GaussDB(一)——数据库介绍
  19. html使用a跳转页面,HTML之a标签的使用
  20. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——1.3 微信公众平台的使用...

热门文章

  1. 黑群晖drive套件的使用教程
  2. linux变utf8为sjis命令,【通译】PHP中 文字编码变换时 使用SJIS-win而非SJIS,使用eucJP-win而非EUC-JP...
  3. 三款免费好用的代码对比工具,丢弃BeyondCompare
  4. Python简单实现图书管理系统
  5. js生成二维码 中间有logo
  6. java视频上传,播放预览,解决苹果手机视频无法预览的问题
  7. 92 款中国风古风古韵中文字体美工古代书法字体打包下载
  8. python测网速_tespeed-测试网速的Python工具
  9. Delphi android 开发视频教程
  10. 如何使用计算机勾绘汇水面积,水文计算算例