目录

1-算法原理

1.1 深度核极限学习

1.2 深度混合核极限学习机

1.3 问题引出

2-应用

2.1 数据准备

2.2 数据处理

2.3 DHKELM分类

2.4 WOA-DHKELM分类

3-还有更多


在博客(这里)里我们讲述了粒子群优化深度核极限学习机,今天我们继续对其进行改进:原始的深度核极限学习机顶层采用核极限学习机进行分类,现在我们将其改成混合核的极限学习机(线性核、RBF、多项式、小波核两两组合),因为应用了多个核函数,相比于之前的超参数更多,手工调参较为困难

1-算法原理

其主要步骤如下:

1.1 深度核极限学习

步骤1:利用极限学习机与自动编码器相结合,形成极限学习机-自动编码器(ELM-AE),结构如图1,将ELM-AE作为无监督学习的基础单元对输入数据进行贪婪逐层无监督预训练,并保存ELM-AE由最小二乘法获得的输出权值矩阵,

步骤2:然后用这些输出层权重来初始化深度核极限学习机(Deep kernel extreme leaning machine,DKELM),然后结合标签信息对DKELM的输出层权重进行学习,结构图2所示。

1.2 深度混合核极限学习机

与深度核极限学习机结构一样,区别在于顶层KELM采用多个核进行加权,称为混合核极限学习机或者多核极限学习机,简称HKELM。比如,KELM的输入是核矩阵,这里K可以是线性核、RBF、多项式、小波核中的任意一种,而HKELM的输入是,其中K1K2都是线性核、RBF、多项式、小波核中的任意一种,w是核1所占的权重,即HKELM的输入是两个核矩阵加权

这样的模型我们称之为深度混合核极限学习机,简称DHKELM

1.3 问题引出

由于网络超参数太多,主要有:DHKELM各隐含层节点数,预训练时ELM-AE的L2 正则化系数,顶层HKELM的惩罚系数、核1的权重以及K1、K2的核参数,且核函数类型不同,核参数的数量也不一样,因此通过手动选择往往无法得到最优的结果,为此采用鲸鱼算法对DHKELM的超参数进行优化,简称WOA-DHKELM。

优化原理:以最小化分类错误率为适应度函数,WOA的目的就是找到一组最优超参数,使得DHKELM的分类错误率最低。

2-应用

为验证上述方法的有效性,本文将WOA-DHKELM算法用于凯斯西储的轴承数据故障诊断中。

2.1 数据准备

采用凯斯西储轴承故障诊断数据,驱动端,48k采样频率,0HP负载,共10类数据,如下所示。从每类数据中各取100个样本,每个样本长度为864个采样点,共得到1000个样本,然后按照7:3划分训练集与测试集。

2.2 数据处理

对上述采集的样本进行FFT特征提取,提取每个样本的频谱幅值作为最终的特征数据,如下图所示。然后归一化,作为DKELM与WOA-DHKELM的输入数据,标签采用onehot编码,即第一类为[1 0 0 0 0 0 0 0 0 0],第二类为[0 1 0 0 0 0 0 0 0 0]。

2.3 DHKELM分类

参数都是手动设置,随便设的,结果如下

%% DHKELM
close all;clear;format compact;format short;clc;rng('default')%% 加载数据
load result/data_feature_fft[train_x,train_ps]=mapminmax(train_X',-1,1);
test_x=mapminmax('apply',test_X',train_ps);P_train = double(train_x)' ;
P_test  = double(test_x)' ;
T_train = double(train_Y);
T_test  = double(test_Y);
%%  参数设置
%elm-ae的参数
h=[100 ,50];%各隐含层节点数
TF='sig';%ELM-AE激活函数
lambda1=inf;%elm-ae的L2正则化系数
%顶层核极限学习的惩罚系数lambda与核参数ker1
lambda2=100;%正则化系数
w=0.5;%混合核kernel1的权重w,kernel2就是1-w
%核函数类型1.RBF_kernel 2.lin_kernel 3 poly_kernel 4 wav_kernel
kernel1='RBF_kernel';
kernel2='poly_kernel';% 核参数设置  详情看kernel_matrix
if strcmp(kernel1,'RBF_kernel')ker1_para=1; %rbf有一个核参数
elseif strcmp(kernel1,'lin_kernel')ker1_para=[]; %线性没有核参数
elseif strcmp(kernel1,'poly_kernel')ker1_para=[1,1]; %多项式有2个核参数
elseif strcmp(kernel1,'wav_kernel')ker1_para=[1,1,1]; %小波核有3个核参数
end
% 核参数设置  详情看kernel_matrix
if strcmp(kernel2,'RBF_kernel')ker2_para=1; %rbf有一个核参数
elseif strcmp(kernel2,'lin_kernel')ker2_para=[]; %线性没有核参数
elseif strcmp(kernel2,'poly_kernel')ker2_para=[1,1]; %多项式有2个核参数
elseif strcmp(kernel2,'wav_kernel')ker2_para=[1,1,1]; %小波核有3个核参数
end
%%
dhkelm=dhkelmtrain(P_train,T_train,h,lambda1,TF,...lambda2,w,ker1_para,kernel1,ker2_para,kernel2);
% T1=dhkelmpredict(dhkelm,w,ker1,kernel1,ker2,kernel2,P_train,P_train);%训练集
T2=dhkelmpredict(dhkelm,w,ker1_para,kernel1,ker2_para,kernel2,P_test,P_train);%测试集[~,J1]=max(T2,[],2);%转换为类别号
[~,J2]=max(T_test,[],2);%转换为类别号acc=sum(J1==J2)/length(J2)%排一下序 更好看
[~,index]=sort(J2);figure
plot(J2(index),'ro')
hold on;grid on
plot(J1(index),'k*')
title('DHKELM')
legend('真实标签','预测标签')
xlabel('样本编号')
ylabel('类别号')

由于是随便设置的参数,所以结果不好。也说明做参数优化是有必要的。

2.4 WOA-DHKELM分类

采用WOA优化DHKELM(各隐含层节点数,正则化系数,顶层kelm的惩罚系数与核参数),难点在于不同的核函数组合核参数数量不一致,所以在WOA优化的时候寻优维度与寻优上下界要分段,部分设置如下。

%由于隐含层层数与核函数类型会影响寻优维度,所以下面我们分段进行寻优范围设置
xmin=[];xmax=[];
% 首先是各层节点数,范围是1-100,整数
xmin=[xmin ones(1,layers)];
xmax=[xmax 100*ones(1,layers)];
% 然后是ELM-AE的正则化系数与 hkelm的惩罚系数 与kernel1的权重系数
xmin=[xmin 1e-3 1e-3 0];
xmax=[xmax 1e3  1e3  1];
% 最后是hkelm的核参数
% 核参数设置  详情看kernel_matrix
if strcmp(kernel1,'RBF_kernel') && strcmp(kernel2,'RBF_kernel')xmin=[xmin 1e-3 1e-3 ];xmax=[xmax 1e3 1e3];%两个 RBF_kernel的 各一个核参数 范围都是1e-3到1e3
elseif strcmp(kernel1,'RBF_kernel') && strcmp(kernel2,'lin_kernel')xmin=[xmin 1e-3 ];xmax=[xmax 1e3];%线性核没有核参数
elseif strcmp(kernel1,'RBF_kernel') && strcmp(kernel2,'poly_kernel')xmin=[xmin 1e-3 1e-3 1 ];xmax=[xmax 1e3 1e3 10 ];%RBF_kernel一个核参数 而poly_kernel一共2个,第一个和rbf一样是1e-3到1e3。而第二个参数是幂指数,我们定义他的范围是1-10
elseif strcmp(kernel1,'RBF_kernel') && strcmp(kernel2,'wav_kernel')%xmin=[xmin 1e-3 1e-3 1e-3 1e-3 ];xmax=[xmax 1e3 1e3 1e3 1e3 ];%RBF_kernel一个核参数 wav_kernel有3个核参数
elseif strcmp(kernel1,'lin_kernel') && strcmp(kernel2,'lin_kernel')xmin=xmin;xmax=xmax;
elseif strcmp(kernel1,'lin_kernel') && strcmp(kernel2,'poly_kernel')xmin=[xmin 1e-3 1 ];xmax=[xmax 1e3 10];
elseif strcmp(kernel1,'lin_kernel') && strcmp(kernel2,'wav_kernel')xmin=[xmin 1e-3 1e-3 1e-3 ];xmax=[xmax 1e3 1e3 1e3 ];
elseif strcmp(kernel1,'poly_kernel') && strcmp(kernel2,'poly_kernel')xmin=[xmin 1e-3 1 1e-3 1 ];xmax=[xmax 1e3 10 1e3 10 ];
elseif strcmp(kernel1,'poly_kernel') && strcmp(kernel2,'wav_kernel')xmin=[xmin 1e-3 1 1e-3 1e-3 1e-3 ];xmax=[xmax 1e3 10 1e3 1e3 1e3 ];
elseif strcmp(kernel1,'wav_kernel') && strcmp(kernel2,'wav_kernel')xmin=[xmin 1e-3 1e-3 1e-3 1e-3 1e-3 1e-3 ];xmax=[xmax 1e3 1e3 1e3 1e3 1e3 1e3 ];
end
dim=length(xmin);

优化后的适应度曲线如下所示。适应度曲线是一条下降的曲线,表示随着woa优化的,能够找到一组更好的超参数,使得DHKELM的分类错误率越来越低。

经过20次优化,采用上述最优超参数进行DHKELM建模,得到的测试集分类正确率为99.33%。

3-还有更多

代码链接在评论区

1.MATLAB原子轨道优化深度混合核极限学习机的轴承故障诊断(AOS-DHKELM)
2.MATLAB天鹰优化器优化深度混合核极限学习机的轴承故障诊断(AO-DHKELM)
3.MATLAB气味体优化深度混合核极限学习机的轴承故障诊断(AO-DHKELM)
4.MATLAB灰狼优化深度混合核极限学习机的轴承故障诊断(GWO-DHKELM)
5.MATLAB算术优化算法优化深度混合核极限学习机的轴承故障诊断(AOA-DHKELM)
6.MATLAB粒子群优化深度混合核极限学习机的轴承故障诊断(PSO-DHKELM)
7.MATLAB蜉蝣优化深度混合核极限学习机的轴承故障诊断(MA-DHKELM)
8.MATLAB鲸鱼优化深度混合核极限学习机的轴承故障诊断(WOA-DHKELM)
9.MATLAB麻雀优化深度混合核极限学习机的轴承故障诊断(SSA-DHKELM)

基于鲸鱼优化深度混合核极限学习机的故障诊断方法相关推荐

  1. 基于深度混合核极限学习机的多变量输入时间序列预测

    0.前言 深度混合核极限学习机的时间序列预测方法:首先采用多层ELM-AE实现抽象特征提取,然后将提取的抽象特征用来训练一个混合核极限学习机实现分类.深度混合核极限学习机实际上是由多层极限学习机+HK ...

  2. 灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多输入单输出模型,GWO-HKELM分类预测。

    %采用混合核函数类型:RBF核函数和poly核函数 function omega = kernel_matrix(Xtrain,kernel_type1, kernel_type2,kernel_pa ...

  3. ​【预测模型】基于粒子群算法优化核极限学习机实现数据预测matlab代码

    1 简介 煤与瓦斯突出是煤矿煤炭生产过程中面临的主要动力灾害之一.研究表明,在有发生煤与瓦斯突出的矿井中,煤层均发育一定程度的构造煤,且构造煤厚度越大,瓦斯突出的危险性越严重.因此,如果能够准确预测出 ...

  4. 【Kelm预测】基于哈里斯鹰算法优化核极限学习机实现数据预测matlab代码

    1 简介 工业过程常含有显著的非线性,时变等复杂特性,传统的核极限学习机有时无法充分利用数据信息,所建软测量模型预测性能较差.为了提高核极限学习机的泛化能力和预测精度,提出一种哈里斯鹰算法结合核极限学 ...

  5. 基于核极限学习机KELM、在线顺序极限学习机OS-ELM、在线贯序核极限学习机OSKELM

    基于核极限学习机KELM.在线顺序极限学习机OS-ELM.在线贯序核极限学习机OSKELM.遗忘因子的在线贯列核极限学习F-OSKELM和自适应遗忘因子的在线贯列核极限学习AF-OSKELM数据预测, ...

  6. 【Kelm分类】基于哈里斯鹰算法优化核极限学习机实现数据分类附matlab代码

    1 简介 为了提高核极限学习机(KELM)的分类正确率,采用哈里斯鹰算法(HHO)对惩罚系数,宽度参数两个参数进行优化.首先,根据乳腺良恶性肿瘤数据库训练集并利用哈里斯鹰算法优化核极限学习机;然后,通 ...

  7. 机器学习教程 之 半监督学习 基于图正则项的半监督极限学习机

    半监督学习是指在模型训练阶段同时利用有标签数据和无标签数据.我之前介绍过的半监督学习方法包括 基于分歧的半监督学习方法 机器学习教程 之 半监督学习 Tri-training方法 (论文.数据集.代码 ...

  8. 【图像分割】基于萤火虫优化的半监督谱聚类彩色图像分割方法(Matlab代码实现)

    目录 0 概述 1 萤火虫算法 1.1 思想来源 1.2 数学模型 1.2.1 萤火虫相对荧光亮度 1.2.2 萤火虫吸引度 1.2.3 位置更新 1.3 算法步骤 2 基于萤火虫优化的半监督谱聚类彩 ...

  9. 【信号去噪】基于鲸鱼优化算法优化VMD实现数据去噪附matlab代码

    1 内容介绍 一种基于WOAVMD算法的信号去噪方法,具体为:根据鲸鱼优化算法分别建立目标包围,发泡网攻击以及猎物搜寻的数学模型,然后进行初始化参数,在取值范围内初始化鲸鱼的位置向量,根据位置向量对原 ...

  10. 基于鲸鱼优化算法的Simulink仿真模型参数优化

    目录 1.鲸鱼优化算法(WOA) 1.1算法原理 1.1.1 包围猎物 1.1.2 狩猎行为 1.1.3 搜索猎物 1.4 算法流程 2.如何用matlab .m文件脚本调用simulink模型并传入 ...

最新文章

  1. day3 集合、文件操作、函数、局部变量
  2. 面包板上的高频放大电路
  3. 2020黑群晖最稳定版本_80%用户的选择!win10最稳定好用的版本更新,你敢升级吗?...
  4. Python 去除序列s中的重复元素
  5. 面试之什么是java虚拟机
  6. html:(22):认识css样式和css的优势
  7. 最安全的浏览器?黑客大赛微软Edge被破解5次夺下“冠军”
  8. “五月天才不短咧” TME live这样焕发线上Live演出的生命力
  9. 解决MySQL在修改列时因为外键依赖出错的问题
  10. html插入精灵,帮助插入超链接到CSS精灵代码..Java? HTML?
  11. 5G时代需要新的商业模式,国产芯片将不再落后
  12. URL重写,asp.net URL重写,URLRewriter.dll下载
  13. OC中的字符串转换为C中的字符串
  14. thinkphp5 没有getField
  15. c语言 库仑计_iPhone 6s 意外关机罪魁祸首竟是它!想知道它是怎么玩的吗!
  16. Ajax学习笔记(1)
  17. idea打开后不显示界面,win+D快捷键解决问题
  18. BZOJ1003物流运输
  19. Kali2021.1 关于w3af的一些问题
  20. 自己动手作PPPOE服务器

热门文章

  1. TracePro v6.02 Win32-ISO 1CD(光学机构仿真软件\
  2. MacOS Big Sur 11.2.2 (20D80) With and OC 0.6.7 原版DMG黑苹果镜像
  3. Java 常见的面试题(反射)
  4. 如何用猿大师播放器把海康威视硬盘录像机截取MP4视频在web页面上回放?支持本地和远程视频吗?
  5. 【大学物理学】机械振动
  6. Altera 在线资源使用
  7. linux+qq+输入法下载,QQ拼音输入法下载
  8. CentOS 7安装java及其配置
  9. PowerBuilder9 爬取酷狗网页版音乐
  10. 暴雨公式 matlab,对雨水暴雨强度公式中降雨历时分解.pdf