目录

1-算法原理

2-应用


在博客(点这里)里我们讲述了深度极限学习机,今天我们对其进行改进:原始的深度极限学习机顶层采用极限学习机进行分类,我们将其改成核极限学习机,因为应用了核函数,将低维非线性不可分的数据特征映射到高维线性可分,因此能够划分的更加精准

1-算法原理

其主要步骤如下:

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

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

问题引出:由于网络超参数太多,主要有:DKELM各隐含层节点数,ELM-AE的L2 正则化系数,顶层KELM的惩罚系数与核参数,且核函数类型不同,核参数的数量也不一样,因此通过手动选择往往无法得到最优的结果,为此采用粒子群算法对DKELM的超参数进行优化,简称PSO-DKELM。

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

2-应用

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

1)数据准备

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

2)数据处理

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

3)DKELM分类,参数都是手动设置,随便设的,结果如下

%% DKELM
close all;clear;format compact;format short;clc;rng('default')
%%
load 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];%各隐含层节点数,里面有几个数就是几个隐含层,即有几个ELM-AE参与无监督预训练,数字代表隐含层节点数
% 比如 h=[100,50],假如输入是200,输出是5类,则DKELM网络结构为200-100-50-5。
% 比如 h=[100,50,20],假如输入是200,输出是5类,则DKELM网络结构为200-100-50-20-5。
TF='sig';%ELM-AE激活函数
lambda=inf;%ELM-AEL2正则化系数
%顶层核极限学习的惩罚系数与核参数
kernel='RBF_kernel';%核函数类型  RBF_kernel lin_kernel poly_kernel wav_kernel
% kernelpara中第一个参数是惩罚系数
if strcmp(kernel,'RBF_kernel')kernelpara=[1 1]; %rbf有一个核参数
elseif strcmp(kernel,'lin_kernel')kernelpara=[1]; %线性没有核参数
elseif strcmp(kernel,'poly_kernel')kernelpara=[1,1,1]; %多项式有2个核参数
elseif strcmp(kernel,'wav_kernel')kernelpara=[1,1,1,1]; %小波核有3个核参数
end
%%
delm=dkelmtrain(P_train,T_train,h,lambda,TF,kernelpara,kernel);
T1=dkelmpredict(delm,kernelpara,kernel,P_train,P_train);[~, J]=max(T1,[],2);
[~, J1]=max(T_train,[],2);
train_accuracy=sum(J==J1)/length(J)
figure
stem(J,'bo');hold on
plot(J1,'r*');
title('训练集分类结果')
legend('实际输出','期望输出')
% 测试集;
T2=dkelmpredict(delm,kernelpara,kernel,P_test,P_train);
[~, J2]=max(T2,[],2);
[~, J3]=max(T_test,[],2);
test_accuracy=sum(J2==J3)/length(J2)
figure
stem(J2,'bo');hold on
plot(J3,'r*');
title('测试集分类结果')
legend('实际输出','期望输出')

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

4)PSO-DKELM分类,采用PSO优化DKELM(各隐含层节点数,正则化系数,顶层kelm的惩罚系数与核参数),如下,现在只需要设置几个隐含层、ELM-AE激活函数与顶层KELM的核函数类型即可。

%% 优化DKELM超参数,包括各隐含层节点数,正则化系数,顶层kelm的惩罚系数与核参数,
close all;clear;format compact;format short;clc;warning off
%%
load 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);
%% 参数设置
layers=3;%隐含层层数
TF='sig';%ELM-AE激活函数
%顶层核极限学习机参数
kernel='RBF_kernel';%核函数类型  RBF_kernel lin_kernel poly_kernel wav_kernel%%
[x,trace,result]=psofordeepkelm(P_train,P_test,T_train,T_test,layers,TF,kernel); %优化DKELM超参数,包括各隐含层节点数,正则化系数,顶层kelm的惩罚系数与核参数
%将优化结果放到h中
figure
plot(trace)
title('适应度曲线')
xlabel('优化代数')
ylabel('适应度值')hidden=x(1:layers) %各隐含层节点数
lambda=x(layers+1) %L2正则化系数
kernelpara=x(layers+2:end) %顶层kelm惩罚系数与核参数%% 重新训练ML-KELM,看训练集误差
rng('default')
delm=dkelmtrain(P_train,T_train,hidden,lambda,TF,kernelpara,kernel);
T1=dkelmpredict(delm,kernelpara,kernel,P_train,P_train);[~, J]=max(T1,[],2);
[~, J1]=max(T_train,[],2);
train_accuracy=sum(J==J1)/length(J)
figure
stem(J,'bo');hold on
plot(J1,'r*');
title('训练集分类结果')
legend('实际输出','期望输出')
% 测试集;
T2=dkelmpredict(delm,kernelpara,kernel,P_test,P_train);
[~, J2]=max(T2,[],2);
[~, J3]=max(T_test,[],2);
test_accuracy=sum(J2==J3)/length(J2)
figure
stem(J2,'bo');hold on
plot(J3,'r*');
title('测试集分类结果')
legend('实际输出','期望输出')

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

经过10次优化,得到3个隐含层的节点数分别是74、85、83,ELM-AE的L2正则化系数为542.8677,顶层KELM的惩罚系数为414.3284,核参数为3.9927,采用上述最优超参数进行DKELM建模,得到的测试集分类正确率为99.33%。

4)未来的改进方向

DKELM由于采用了核函数进行,因此不能用于大样本的训练(核矩阵大小为 [训练集样本数 x 训练集样本数]),以后可以改进这些玩意。

基于粒子群优化深度核极限学习机的故障诊断方法相关推荐

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

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

  2. 多目标粒子群优化算法_基于粒子群优化的投资组合优化研究

    原文链接: 基于粒子群优化的投资组合优化研究​tecdat.cn 我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化.在本文中,我将介绍投资组合优化并解释其重要性.其次,我将演示粒子群优 ...

  3. 基于粒子群优化的MPPT控制

    目录 仿真图: 完整代码: 仿真文件: 仿真图: 完整代码: function [sys,x0,str,ts] = BFOA_PSO_pwm(t,x,u,flag) % %u为输入变量,u(1)为电流 ...

  4. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  5. 基于粒子群优化的 OTSU 图像分割

    基于粒子群优化的 OTSU 图像分割 思想:粒子群算法是一种优化算法,与狼群算法,遗传算法类似,用于求取全局最优解:将粒子群与 OTSU 相结合目的是为了快速找到图像分割的最佳阈值,提高图像分割的效率 ...

  6. 基于粒子群优化的BP神经网络(分类应用) - 附代码

    基于粒子群优化的BP神经网络(分类应用) - 附代码 文章目录 基于粒子群优化的BP神经网络(分类应用) - 附代码 1.鸢尾花iris数据介绍 2.数据集整理 3.粒子群优化BP神经网络 3.1 B ...

  7. 基于基于粒子群优化算法的微电网调度(Matlab代码实现)

    目录 ⛳️1 写在前面 ⛳️2 基于基于粒子群优化算法的微电网调度(Matlab代码实现)

  8. 基于粒子群优化堆叠去噪自编码器(PSO-SDAE)的时间序列预测

    基于粒子群优化堆叠去噪自编码器(PSO-SDAE)的时间序列预测 优化参数为学习率,隐藏层节点个数,最大训练次数 matlab代码 ID:69100673407358242

  9. 基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测

    基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测,源码注释详细,matlab实现,直接运行即可. ID:72100632211160748韩雅涵122

  10. 【物理应用】基于粒子群优化算法实现瞬变电磁法视电阻率反演附matlab代码

    1 内容介绍 煤矿井下矿井瞬变电磁法(MTEM)探测中,电磁场呈全空间分布,全空间瞬变电磁反演是复杂的非线性问题,目前反演计算中全空间响应主要由半空间响应乘以全空间响应系数来得到,导致反演结果中顶板和 ...

最新文章

  1. Atlas Cool Application
  2. java导出excel_如何导出你和女票的微信聊天记录
  3. C++虚继承下的内存模型(二)
  4. 华为性格面试的破解方法
  5. Logistic regression (逻辑回归) 概述
  6. suse linux下交叉编译,阐述SUSE 10.1交叉编译环境构建方法
  7. python3.7安装keras教程_Python3.7安装keras和TensorFlow的教程图解
  8. ***常用的***手段
  9. 安装uwsgi报错:error linking uWSGI解决方法
  10. delete index mysql_为什么MySQL不建议delete删除数据「心得分享」
  11. ecology9 系统文件常用说明
  12. 序列的修改、散列和切片
  13. JavaSwing实现简单连连看小游戏
  14. DPI/DFI/端口识别技术
  15. 不用Bootcamp双系统,在Mac上跑Windows是啥感觉?
  16. 使用PMOS管构建电源延时供电电路
  17. BUUCTF Quoted-printable编码
  18. mysql:Row size too large (> 8126)
  19. Orientation-boosted Voxel Nets for 3D Object Recognition--ORION论文阅读
  20. 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法)

热门文章

  1. 使用Emacs阅读邮件和新闻组:Gnus 中文FAQ
  2. 编译原理 第3版 第一章练习
  3. 科研伦理与学术规范2021秋期末考答案|网课期末考答案|学堂在线|北京师范大学印波副教授
  4. 备忘--moodle安装
  5. 030_《Delphi COM深入编程》
  6. 数据结构(c语言版)各章内容总结
  7. java 检测ip网速_使用Speedtest CLI测试你的网速
  8. linux内核线程详解,Linux内核线程
  9. Unreal Engine 4/虚幻 4 Demo下载地址
  10. 数据库服务器信息填写,数据库服务器是怎么填写