基于核极限学习机(KELM)分类 -附代码
基于核极限学习机(KELM)分类
文章目录
- 基于核极限学习机(KELM)分类
- 1.极限学习机原理概述
- 2.ELM学习算法
- 3.KELM理论基础
- 4.分类问题
- 5.测试结果
- 6.Matlab代码
摘要:本文利用核极限学习机进行优化,并用于分类
1.极限学习机原理概述
典型的单隐含层前馈神经网络结构如图1 所示,由输入层、隐含层和输出层组成,输 入层与隐含层、隐含层与输出层神经元间全连接。其中,输入层有 n 个神经元,对应 n 个输入变量, 隐含层有 l个神经元;输出层有 m 个神经元 ,对应 m 个输出变量 。 为不失一般性,设输 入层与隐含层间的连接权值 w 为:
w=[w11w12...w1,nw21w22...w2n...wl1wl2...wln](1)w =\left[\begin{matrix}w_{11}&w_{12}&...&w_{1,n}\\ w_{21}&w_{22}&...&w_{2n}\\ ...\\ w_{l1}&w_{l2}&...&w_{ln} \end{matrix}\right]\tag{1} w=⎣⎢⎢⎡w11w21...wl1w12w22wl2.........w1,nw2nwln⎦⎥⎥⎤(1)
其中,wnw_nwn表示输入层第iii个神经元与隐含层第jjj个神经元间的连接权值。
设隐含层与输出层间的连接权值 , 为β\betaβ:
β=[β11β12...β1mβ21β22...β2m...βl1βl2...βlm](2)\beta =\left[\begin{matrix} \beta_{11}&\beta_{12}&...&\beta_{1m}\\ \beta_{21}&\beta_{22}&...&\beta_{2m}\\ ...\\ \beta_{l1}&\beta_{l2}&...&\beta_{lm} \end{matrix}\right] \tag{2} β=⎣⎢⎢⎡β11β21...βl1β12β22βl2.........β1mβ2mβlm⎦⎥⎥⎤(2)
其中,自βjk\beta_{jk}βjk表示隐含层第 j 个神经元与输出层第 k个神经元间的连接权值。
设隐含层神经元的阈值值 b 为:
b=[b1b2...bl](3)b =\left[\begin{matrix}b_1\\ b_2\\ ...\\ b_l \end{matrix}\right]\tag{3} b=⎣⎢⎢⎡b1b2...bl⎦⎥⎥⎤(3)
设具有 Q 个样本的训练集输入矩阵 X 和输出矩阵 Y 分别为
X=[x11x12...x1Qx21x22...x2Q...xn1xn2...xnQ](4)X =\left[\begin{matrix}x_{11}&x_{12}&...&x_{1Q}\\ x_{21}&x_{22}&...&x_{2Q}\\ ...\\ x_{n1}&x_{n2}&...&x_{nQ} \end{matrix}\right]\tag{4} X=⎣⎢⎢⎡x11x21...xn1x12x22xn2.........x1Qx2QxnQ⎦⎥⎥⎤(4)
KaTeX parse error: Undefined control sequence: \matrix at position 11: Y =\left[\̲m̲a̲t̲r̲i̲x̲{y_{11},y_{12},…
设隐含层神经元的激活函数为 g(x),则由图1 可得, 网络的输出 T 为:
T=[t1,..,tQ]m∗Q,tj=[t1j,...,tmj]T=[∑i=1tβi1g(wixj+bi)∑i=1tβi2g(wixj+bi)...∑i=1tβimg(wixj+bi)]m∗1,(j=1,2,...,Q)(6)T = [t_1,..,t_Q]_{m*Q},t_j = [t_{1j},...,t_{mj}]^T =\left[\begin{matrix}\sum_{i=1}^t\beta_{i1}g(w_ix_j + b_i)\\ \sum_{i=1}^t\beta_{i2}g(w_ix_j + b_i)\\ ...\\ \sum_{i=1}^t\beta_{im}g(w_ix_j + b_i) \end{matrix}\right]_{m*1},(j=1,2,...,Q)\tag{6} T=[t1,..,tQ]m∗Q,tj=[t1j,...,tmj]T=⎣⎢⎢⎡∑i=1tβi1g(wixj+bi)∑i=1tβi2g(wixj+bi)...∑i=1tβimg(wixj+bi)⎦⎥⎥⎤m∗1,(j=1,2,...,Q)(6)
式(6)可表示为:
Hβ=T’(7)H\beta = T’ \tag{7} Hβ=T’(7)
其中, T’为矩阵 T 的转置; H 称为神经网络的隐含层输出矩阵 , 具体形式如下 :
H(w1,...,wi,b1,...,bl,x1,...,xQ)=[g(w1∗x1+b1)g(w2∗x1+b2)...g(wl∗x1+bl)g(w1∗x2+b1)g(w2∗x2+b2)...g(wl∗x2+bl)...g(w1∗xQ+b1)g(w2∗xQ+b2)...g(wl∗xQ+bl)]Q∗l(8)H(w_1,...,w_i,b_1,...,b_l,x_1,...,x_Q) =\left[\begin{matrix} g(w_1*x_1 + b_1)&g(w_2*x_1 + b_2)&...&g(w_l*x_1 + b_l)\\ g(w_1*x_2 + b_1)&g(w_2*x_2 + b_2)&...&g(w_l*x_2 + b_l)\\ ...\\ g(w_1*x_Q + b_1)&g(w_2*x_Q + b_2)&...&g(w_l*x_Q + b_l) \end{matrix}\right]_{Q*l}\tag{8} H(w1,...,wi,b1,...,bl,x1,...,xQ)=⎣⎢⎢⎡g(w1∗x1+b1)g(w1∗x2+b1)...g(w1∗xQ+b1)g(w2∗x1+b2)g(w2∗x2+b2)g(w2∗xQ+b2).........g(wl∗x1+bl)g(wl∗x2+bl)g(wl∗xQ+bl)⎦⎥⎥⎤Q∗l(8)
2.ELM学习算法
由前文分析可知,ELM在训练之前可以随机产生 w 和 b , 只需确定隐含层神经元个数及隐含层和神经元的激活函数(无限可微) , 即可计算出β\betaβ 。具体地, ELM 的学习算法主要有以下几个步骤:
(1)确定隐含层神经元个数,随机设定输入层与隐含层间的连接权值 w 和隐含层神经元的偏置 b ;
(2) 选择一个无限可微的函数作为隐含层神经元的激活函数,进而计算隐含层输出矩 阵 H ;
(3)计算输出层权值:β=H+T′\beta = H^+T'β=H+T′
值得一提的是,相关研究结果表明,在 ELM 中不仅许多非线性激活函数都可以使用(如 S 型函数、正弦函数和复合函数等),还可以使用不可微函数,甚至可以使用不连续的函数作为激活函数。
3.KELM理论基础
核极限学习机(Kernel Based Extreme Learning Machine,KELM)是基于极限学习机(Extreme Learning Machine,ELM)并结合核函数所提出的改进算法,KELM 能够在保留 ELM 优点的基础上提高模型的预测性能。
ELM 是一种单隐含层前馈神经网络,其学习目标函数F(x) 可用矩阵表示为:
F(x)=h(x)×β=H×β=L(9)F(x)=h(x)\times \beta=H\times\beta=L \tag{9} F(x)=h(x)×β=H×β=L(9)
式中:xxx 为输入向量,h(x)h(x)h(x)、HHH 为隐层节点输出,βββ 为输出权重,LLL 为期望输出。
将网络训练变为线性系统求解的问题,β\betaβ根据 β=H∗⋅Lβ=H * ·Lβ=H∗⋅L 确定,其中,H∗H^*H∗ 为 HHH 的广义逆矩阵。为增强神经网络的稳定性,引入正则化系数 CCC 和单位矩阵 III,则输出权值的最小二乘解为
β=HT(HHT+Ic)−1L(10)\beta = H^T(HH^T+\frac{I}{c})^{-1}L\tag{10} β=HT(HHT+cI)−1L(10)
引入核函数到 ELM 中,核矩阵为:
ΩELM=HHT=h(xi)h(xj)=K(xi,xj)(11)\Omega_{ELM}=HH^T=h(x_i)h(x_j)=K(x_i,x_j)\tag{11} ΩELM=HHT=h(xi)h(xj)=K(xi,xj)(11)
式中:xix_ixi ,xjx_jxj 为试验输入向量,则可将式(9)表达为:
F(x)=[K(x,x1);...;K(x,xn)](IC+ΩELM)−1L(12)F(x)=[K(x,x_1);...;K(x,x_n)](\frac{I}{C}+\Omega_{ELM})^{-1}L \tag{12} F(x)=[K(x,x1);...;K(x,xn)](CI+ΩELM)−1L(12)
式中:(x1,x2,…,xn)(x_1 , x_2 , …, x_n )(x1,x2,…,xn) 为给定训练样本,nnn 为样本数量.K()K()K()为核函数。
4.分类问题
本文对乳腺肿瘤数据进行分类。采用随机法产生训练集和测试集,其中训练集包含 500 个样本,测试集包含 69 个样本 。 测试正则化系数 C 和核函数参数 S 分别为2和4,选取核函数为rbf 高斯核函数。
5.测试结果
训练集结果如下图所示
测试集结果如下图所示:
训练集正确率:100%
测试集正确率:89.8551%
病例总数:569 良性:357 恶性:212
训练集病例总数:500 良性:300 恶性:200
测试集病例总数:69 良性:57 恶性:12
良性乳腺肿瘤确诊:55 误诊:2 确诊率p1=96.4912%
恶性乳腺肿瘤确诊:7 误诊:5 确诊率p2=58.3333%
6.Matlab代码
个人资料
基于核极限学习机(KELM)分类 -附代码相关推荐
- 基于核极限学习机KELM、在线顺序极限学习机OS-ELM、在线贯序核极限学习机OSKELM
基于核极限学习机KELM.在线顺序极限学习机OS-ELM.在线贯序核极限学习机OSKELM.遗忘因子的在线贯列核极限学习F-OSKELM和自适应遗忘因子的在线贯列核极限学习AF-OSKELM数据预测, ...
- 基于樽海鞘算法的极限学习机(ELM)回归预测-附代码
基于樽海鞘算法的极限学习机(ELM)回归预测 文章目录 基于樽海鞘算法的极限学习机(ELM)回归预测 1.极限学习机原理概述 2.ELM学习算法 3.回归问题数据处理 4.基于樽海鞘算法优化的ELM ...
- 灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多输入单输出模型,GWO-HKELM分类预测。
%采用混合核函数类型:RBF核函数和poly核函数 function omega = kernel_matrix(Xtrain,kernel_type1, kernel_type2,kernel_pa ...
- 【Kelm分类】基于哈里斯鹰算法优化核极限学习机实现数据分类附matlab代码
1 简介 为了提高核极限学习机(KELM)的分类正确率,采用哈里斯鹰算法(HHO)对惩罚系数,宽度参数两个参数进行优化.首先,根据乳腺良恶性肿瘤数据库训练集并利用哈里斯鹰算法优化核极限学习机;然后,通 ...
- 基于深度混合核极限学习机的多变量输入时间序列预测
0.前言 深度混合核极限学习机的时间序列预测方法:首先采用多层ELM-AE实现抽象特征提取,然后将提取的抽象特征用来训练一个混合核极限学习机实现分类.深度混合核极限学习机实际上是由多层极限学习机+HK ...
- 【预测模型-ELM分类】基于鲸鱼算法优化核极限学习机实现数据分类附matlab代码
1 内容介绍 极限学习机(extreme learning machine,ELM)作为一种新兴的机器学习方法,已经成为了一个热门的研究方向. ELM 随机确定单隐含层网络的输入权值和隐含层节点偏置, ...
- 基于哈里斯鹰算法的极限学习机(ELM)分类算法-附代码
基于哈里斯鹰算法的极限学习机(ELM)分类算法 文章目录 基于哈里斯鹰算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于哈里斯鹰算法优化的ELM 5 ...
- 基于粒子群算法的极限学习机(ELM)分类算法-附代码
基于粒子群算法的极限学习机(ELM)分类算法 文章目录 基于粒子群算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于粒子群算法优化的ELM 5.测试 ...
- 【NLP傻瓜式教程】手把手带你RCNN文本分类(附代码)
继续之前的文本分类系列 [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) [NLP傻瓜式教程]手把手带你fastText文本分类(附代码) ...
- 【NLP傻瓜式教程】手把手带你fastText文本分类(附代码)
写在前面 已经发布: [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) 继续NLP傻瓜式教程系列,今天的教程是基于FAIR的Bag of ...
最新文章
- docker-dockerfile
- SQL*PLUS命令的使用大全
- php js统计链接点击次数,JS实现在线统计一个页面内鼠标点击次数的方法
- 七天学习计划_c#_[1]泛型类(还有六天,明天继续写!)
- UVALive 4225 Prime Bases 贪心
- windows下训练FCN模型所遇到的问题
- 树莓派+神经计算棒2实时人脸检测
- linux学习作业-第七周
- python下载晚上excel_Python自动操控excel,一小时解决你一天的工作
- jdk的selector(2)channel的注册
- Scrapy选择器和持久化
- 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】
- 平面判断两点连线是否交叉
- the7主题 一个强大的wordpress 主题 html5拖拽式建站系统
- 网络会议openmeetings下的openmeetings-util文件分析3
- 中职计算机c语言课程,中职计算机C语言教学探讨
- php 微信模拟登陆给用户发送消息(文字,图片,图文)
- HBuilder webapp实现消息推送
- SpringBoot22-spingboot数据访问-Spring Data JPA
- 机器学习:朴素贝叶斯模型算法原理(含实战案例)
热门文章
- JAVAWeb项目 微型商城项目-------(三)导包及工具类的准备
- [日期]字符串转Data对象
- centos redis php扩展,手动在centos下安装redis及php扩展
- oracle异常:主动抛出自定义异常+捕获指定异常
- 合沟微服务怎么添加_如何在微服务中使用webservice?
- (day 52 - 递归 and 短路逻辑运算符的用法 ) 剑指 Offer 64. 求1+2+…+n
- java中listview_需要高效的数据映射在Android /Java中进行ListVIEW钻孔的例子
- HighCharts:为plotLines基准线添加label标签不显示
- git-ftp:用git管理ftp服务器简单入门
- SpringMVC学习笔记(2)-参数绑定的常用方法