基于哈里斯鹰算法的极限学习机(ELM)分类算法-附代码
基于哈里斯鹰算法的极限学习机(ELM)分类算法
摘要:本文利用哈里斯鹰算法对极限学习机进行优化,并用于分类问题
1.极限学习机原理概述
典型的单隐含层前馈神经网络结构如图1 所示,由输入层、隐含层和输出层组成,输 入层与隐含层、隐含层与输出层神经元间全连接。其中,输入层有 n 个神经元,对应 n 个输入变量, 隐含层有 l个神经元;输出层有 m 个神经元 ,对应 m 个输出变量 。 为不失一般性,设输 入层与隐含层间的连接权值 w 为:
w
=
[
w
11
w
12
.
.
.
w
1
,
n
w
21
w
22
.
.
.
w
2
n
.
.
.
w
l
1
w
l
2
.
.
.
w
l
n
]
(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)
其中,
w
n
w_n
wn表示输入层第
i
i
i个神经元与隐含层第
j
j
j个神经元间的连接权值。
设隐含层与输出层间的连接权值 , 为
β
\beta
β:
β
=
[
β
11
β
12
.
.
.
β
1
m
β
21
β
22
.
.
.
β
2
m
.
.
.
β
l
1
β
l
2
.
.
.
β
l
m
]
(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)
其中,自
β
j
k
\beta_{jk}
βjk表示隐含层第 j 个神经元与输出层第 k个神经元间的连接权值。
设隐含层神经元的阈值值 b 为:
b
=
[
b
1
b
2
.
.
.
b
l
]
(3)
b =\left[\begin{matrix}b_1\\ b_2\\ ...\\ b_l \end{matrix}\right]\tag{3}
b=
b1b2...bl
(3)
设具有 Q 个样本的训练集输入矩阵 X 和输出矩阵 Y 分别为
X
=
[
x
11
x
12
.
.
.
x
1
Q
x
21
x
22
.
.
.
x
2
Q
.
.
.
x
n
1
x
n
2
.
.
.
x
n
Q
]
(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
=
[
t
1
,
.
.
,
t
Q
]
m
∗
Q
,
t
j
=
[
t
1
j
,
.
.
.
,
t
m
j
]
T
=
[
∑
i
=
1
t
β
i
1
g
(
w
i
x
j
+
b
i
)
∑
i
=
1
t
β
i
2
g
(
w
i
x
j
+
b
i
)
.
.
.
∑
i
=
1
t
β
i
m
g
(
w
i
x
j
+
b
i
)
]
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
(
w
1
,
.
.
.
,
w
i
,
b
1
,
.
.
.
,
b
l
,
x
1
,
.
.
.
,
x
Q
)
=
[
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
)
]
Q
∗
l
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}
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
2.ELM学习算法
由前文分析可知,ELM在训练之前可以随机产生 w 和 b , 只需确定隐含层神经元个数及隐含层和神经元的激活函数(无限可微) , 即可计算出 β \beta β 。具体地, ELM 的学习算法主要有以下几个步骤:
(1)确定隐含层神经元个数,随机设定输入层与隐含层间的连接权值 w 和隐含层神经元的偏置 b ;
(2) 选择一个无限可微的函数作为隐含层神经元的激活函数,进而计算隐含层输出矩 阵 H ;
(3)计算输出层权值: β = H + T ′ \beta = H^+T' β=H+T′
值得一提的是,相关研究结果表明,在 ELM 中不仅许多非线性激活函数都可以使用(如 S 型函数、正弦函数和复合函数等),还可以使用不可微函数,甚至可以使用不连续的函数作为激 活函数。
3.分类问题
本文对乳腺肿瘤数据进行分类。采用随机法产生训练集和测试集,其中训练集包含 500 个样本,测试集包含 69 个样本 。
4.基于哈里斯鹰算法优化的ELM
哈里斯鹰算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108528147
由前文可知,ELM的初始权值和阈值都是随机产生。每次产生的初始权值和阈值具有满目性。本文利用哈里斯鹰算法对初始权值和阈值进行优化。适应度函数设计为训练集的错误率与测试集的错误率的和,以期望使训练得到的网络在测试集和训练集上均有较好的结果:
f
i
t
n
e
s
s
=
a
r
g
m
i
n
(
T
r
a
i
n
E
r
r
o
r
R
a
t
e
+
T
e
s
t
E
r
r
o
r
R
a
t
e
)
。
fitness = argmin(TrainErrorRate + TestErrorRate)。
fitness=argmin(TrainErrorRate+TestErrorRate)。
5.测试结果
哈里斯鹰算法相关参数如下:
%训练数据相关尺寸
R = size(Pn_train,1);
S = size(Tn_train,1);
N = 20;%隐含层个数
%% 定义哈里斯鹰优化参数
pop=20; %种群数量
Max_iteration=50; % 设定最大迭代次数
dim = N*R + N*S;%维度,即权值与阈值的个数
lb = [-1.*ones(1,N*R),zeros(1,N*S)];%下边界
ub = [ones(1,N*R),ones(1,N*S)];%上边界
将经过哈里斯鹰优化后的SSA-ELM与基础ELM进行对比。
预测结果如下图
哈里斯鹰收敛曲线如下:
数据结果如下:
哈里斯鹰优化ELM结果展示:----------------
训练集正确率Accuracy = 98.2%(491/500)
测试集正确率Accuracy = 100%(69/69)
病例总数:569 良性:357 恶性:212
训练集病例总数:500 良性:316 恶性:184
测试集病例总数:69 良性:41 恶性:28
良性乳腺肿瘤确诊:41 误诊:0 确诊率p1=100%
恶性乳腺肿瘤确诊:28 误诊:0 确诊率p2=100%
传统ELM结果展示:----------------
训练集正确率Accuracy = 90.2%(451/500)
测试集正确率Accuracy = 84.058%(58/69)
病例总数:569 良性:357 恶性:212
训练集病例总数:500 良性:316 恶性:184
测试集病例总数:69 良性:41 恶性:28
良性乳腺肿瘤确诊:37 误诊:4 确诊率p1=90.2439%
恶性乳腺肿瘤确诊:21 误诊:7 确诊率p2=75%
从上述数据可以看出,哈里斯鹰-ELM训练得到的网络,无论是在测试集和训练集上的正确率均高于基础ELM训练得到的网络。哈里斯鹰-ELM具有较好的性能。
6.参考文献
书籍《MATLAB神经网络43个案例分析》
7.Matlab代码
相关文章
- java算法集训代码填空题练习3
- 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21
- ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测titanic(泰坦尼克号)数据集生存人员
- DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练&测试过程全记录
- 基于多目标粒子群优化算法的计及光伏波动性的主动配电网有功无功协调优化(Matlab代码实现)
- 计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
- 基于粒子群由优化算法对微网中的分布式电源进行最优调度实现配电网稳定运行(Matlab代码实现)
- 【路径规划】一种越野环境下车辆驾驶风险规避运动规划算法(Matlab代码实现)
- 基于Dijkstra和A*算法的机器人路径规划(Matlab代码实现)
- 基于智能优化算法的机器人路径优化(Matlab代码实现)
- 【路径优化】基于改进的RRT算法的全局路径规划(Matlab代码实现)
- 【经济调度】基于蝙蝠算法实现电力系统经济调度(Matlab代码实现)
- 【负荷预测】基于改进灰狼算法(IGWO)优化的LSSVM进行负荷预测(Matlab代码实现)
- 人工鱼群算法(AFSA)的梯级水库调度(Matlab代码实现)
- 【故障定位】基于多元宇宙算法的主动配电网故障定位方法研究(Matlab代码实现)
- 基于蜣螂算法的极限学习机(ELM)分类算法-附代码
- 基于花授粉算法改进的DELM预测 -附代码
- 基于麻雀算法改进的随机森林分类算法 - 附代码
- 基于二进制正余弦算法的背包问题求解- 附代码
- 智能优化算法:飞蛾扑火优化算法-附代码
- 智能优化算法:鸟群算法-附代码
- 具备自纠正和逐维学习能力的粒子群算法-附代码
- 基于改进粒子群优化算法的柔性车间调度问题(Python代码实现)
- 基于象虫损害优化算法的投资组合问题(Matlab代码实现)
- 路径规划算法:Dijkstra算法 - 附代码