基于支持向量机、孤立森林和LSTM自编码器的机械状态异常检测(MATLAB R2021B)

异常检测通常是根据已有的观测数据建立正常行为模型,从而将不同机制下产生的远离正常行为的数据划分为异常类,进而实现对异常状态的检测。常用的异常检测方法主要有:统计方法、信息度量方法、谱映射方法、聚类方法、近邻方法和分类方法等。

早期的异常检测方法主要是基于统计理论,通过对观测数据进行统计建模或密度估计来评价异常,如果数据的分布假设成立,统计方法能够得到一个满意的可证明的解,且为无监督过程,但该方法对数据的统计假设较为依赖,特别是对于高维复杂数据,统计分布往往不能准确假设。而信息度量方法虽不需对数据分布进行假设,但其检测性能取决于信息度量指标,若信息度量不能明显反映异常数据与正常数据的差异,则该方法将失效。基于主成分分析或矩阵分解的空间映射方法,通过将正常和异常数据嵌入到一个低维子空间进行划分,并可自动执行维度约简,适合于高维复杂数据,但在空间映射过程中易丢失部分有用的数据信息。

随着人工智能理论的产生和发展,许多机器学习和数据挖掘的方法被应用于异常检测,主要有基于聚类或近邻的无监督学习方法和基于分类的有监督学习方法。对于聚类方法,不同的计算正常类数据间距离或相似度的策略对聚类结果有很大影响,如果形成的聚类簇太大,易将异常数据包含进去而导致误判。对于近邻方法,通过计算正常类数据的k近邻或局部异常因子来进行异常检测,体现了数据的局部分布特性,检测性能得到了提高,但近邻方法需要存储所有的正常数据,来计算与测试数据间的距离,复杂度较高,而且如果正常数据的分布比较稀疏(即没有足够的近邻点),易导致较大的检测误差。对于分类方法,通过使用可获得的标记数据作为训练样本来构造分类模型,对测试数据进行分类,能够实现一类或多类分类异常检测。

鉴于此,采用支持向量机、孤立森林和LSTM自编码器方法对机械状态进行异常检测,运行环境为MATLAB R2021B。数据集包含来自工业机器的三轴振动测量值, 在计划维护之前和维护之后采集数据。假定在定期维护后采集的数据代表机器的正常运行状况,维护前的数据代表正常或异常情况。每轴的数据存储在单独的列中,每个文件包含 7000 个测量值。

图片

图片

图片

图片

图片

 


function[net]=AE(X,Xtest,Labels,options)
% S-AEEL:Stacked AutoEncoder with Embedded Labels 
% it allows labels embedding inside the hidden layer
% Inputs
% number_neurons:number of neurons in hidden layer.
% X: the training inputs.
% Xtest: the testing inputs
% prefomance: RMSE of training.
% options :training options (3 options -->)
% 
% get options
number_neurons=options.number_neurons; % number of neurons
Layers=options.Layers;% number of layers
ActivF=options.ActivF;% activation function
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X = scaledata(X,0,1);% data Normalization
x=X;% save a copy from original input;
alpha=size(X);% get information for weights generations
% 1:generate a random input weights
input_weights{1}=rand(number_neurons,alpha(2))*2-1;for i=1:Layers
% 2:calculating the hidden layer
tempH=input_weights{i}*X';
CAT=repmat(Labels',size(tempH,1),1);
tempH=[tempH+CAT];
tempH=[tempH;Labels'];
% activation function
switch lower(ActivF)case {'sig','sigmoid'}%%%%%%%% Sigmoid H = 1 ./ (1 + exp(-tempH));case {'sin','sine'}%%%%%%%% SineH = sin(tempH);    case {'hardlim'}%%%%%%%% Hard LimitH = double(hardlim(tempH));case {'tribas'}%%%%%%%% Triangular basis functionH = tribas(tempH);case {'radbas'}%%%%%%%% Radial basis functionH = radbas(tempH);%%%%%%%% More activation functions can be added here                
end
% 3: calculate the output weights beta
B{i}=pinv(H') * X ; %Moore-Penrose pseudoinverse of matrix
% calculate the output : Unlike other networks the AEs uses the same weight
% beta as an input weigth for coding and output weights for decoding
% we will no longer use the old input weights:input_weights. 
Hnew=X*B{i}';
output=Hnew*pinv(B{i}');
input_weights{i+1}=B{i};
end
% 4:calculate the prefomance
labels_hat=scaledata(Hnew(:,end-(size(Labels,2))+1:end),min(Labels),max(Labels));% recovered labels
prefomance=sqrt(mse(x-output));% RMSE of training samples recontruction
rec_acc=sqrt(mse(labels_hat-Labels));% % RMSE of training labels recovering
%% mappings for test set
H_test=Xtest*B{i}';
%% save results
net.xtr_mapp=Hnew; % feature mappings of training inputs
net.xts_mapp=H_test; % feature mappings of testing inputs
net.recovered_labels=labels_hat;% 
net.learning_loss=prefomance;
net.Learning_weights=B;
net.xtr_hat=output;
net.rec_acc=rec_acc;
end
工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。完整数据和代码通过知乎学术咨询获得:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android仿今日头条新闻(一)

新建一个侧边栏的文件,创建成功后直接运行。可以看到带滑动的侧边栏功能如图所示: 主体UI: 新闻UI的实现: 侧边栏: 更换一下颜色: 学习参考-浩宇开发

AI老照片生成视频

地址:AI老照片 让你的图片动起来, 老照片修复与动态化

RK3568平台(opencv篇)opencv处理图像视频

一.读取图像文件并展示 灰度图像: 灰度图需要用 8 位二进制来表示,取值范围是 0-255。用 0 表示 0(黑色), 用 255 表示 1(白色),取值越大表示该点越亮。 RGB 彩色图像:…

XPath 语法笔记

XPath 语法笔记 XPath 表达式运算符谓语(Predicates)1. 选择所有本地名称为特定名称的元素2. 选择具有特定属性的元素3. 选择属性值不等于特定值的元素4. 选择元素内容中包含特定字符串的节点5. 选择元素内容中不包含特定字符串的节点6. 选择特定命名空间…

一台docker机器如何实现构建多平台镜像

1.实现方式 想在 x86_64/amd64 的一台机器平台上,构建适用于多个平台的镜像,例如 linux/amd64、linux/arm64,根据官方文档,有三种方法可以使用: QEMU   使用 QEMU 模拟构建多平台映像是最简单的入门方法&#xff0c…

前端面试题13(API请求方法)

在前端JavaScript中,进行API请求主要可以通过几种方式来实现,最常见的是使用XMLHttpRequest(较旧的方法)、fetch(现代浏览器推荐方法)以及使用第三方库如axios或jQuery.ajax等。 1. XMLHttpRequest 这是最…

仙人掌中的SNMP检测不到服务器

登录有问题的服务器1.检测snmp localhost:~ # ps -ef|grep snmp root 55180 1 0 08:37 ? 00:00:08 /usr/sbin/snmpd -r -A -LF n /var/log/net-snmpd.log -p /var/run/snmpd.pid root 58436 53989 0 09:44 pts/0 00:00:00 grep --colorauto snmp2.检测…

linux 编译perf 工具

centos7下编译步骤: wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.gz tar -xf linux-3.10.tar.gz cd linux-3.10/tools/ yum install -y flex bison python2-devel make perf ./perf/perf top -d 1…

昇思第10天

RNN实现情感分类 二分类问题:Positive和Negative两类 步骤: 1.加载IMDB数据集 2.加载预训练词向量:预训练词向量是对输入单词的数值化表示,通过nn.Embedding层,采用查表的方式,输入单词对应词表中的index,…

【算法专题】模拟算法题

模拟算法题往往不涉及复杂的数据结构或算法,而是侧重于对特定情景的代码实现,关键在于理解题目所描述的情境,并能够将其转化为代码逻辑。所以我们在处理这种类型的题目时,最好要现在演草纸上把情况理清楚,再动手编写代…

FreeRTOS——队列集

一、队列集 一个队列只允许任务间传递的消息为 同一种数据类型 ,如果需要在任务间 传递不同数据类型的消息 时,那么就可以使用队列集 作用:用于对多个队列或信号量进行“监听”(接收或获取),其中 不管哪一…

js 使用 lodash-es 检测某个值是否是函数

import { isFunction } from lodash-eslet isA isFunction(() > {}) console.log(isA) //true https://www.lodashjs.com/docs/lodash.isFunction#_isfunctionvalue https://lodash.com/docs/4.17.15#isFunction 人工智能学习网站 https://chat.xutongbao.top

Spring框架配置进阶_自动装配(XML和注解)

Spring配置进阶 Spring 容器提供配置元数据有三种方式 XML配置文件。基于注解的配置。基于java的配置。 一、自动装配 应用程序上下文为你找出依赖项的过程,Spring会在上下文中自动查找,并自动给bean装配与其关联的属性 Spring中实现自动装配的方式有两种: XML文…

26-ARM常用汇编指令

汇编格式: label:instruction comment label:标号instruction:具体汇编指令comment:注释内容 常用段名: .text:代码段.data:初始化的数据段.bss:未初始化的数据段.ro…

Spring Boot+Vue项目从零入手

Spring BootVue项目从零入手 一、前期准备 在搭建spring bootvue项目前,我们首先要准备好开发环境,所需相关环境和软件如下: 1、node.js 检测安装成功的方法:node -v 2、vue 检测安装成功的方法:vue -V 3、Visu…

JSP WEB开发(一) JSP语言基础

目录 JSP JSP简介: JSP页面 JSP运行原理 JSP脚本元素 JAVA程序片 局部变量 全局变量和方法的声明 全局变量 方法的声明 程序片执行特点 synchronized关键字 表达式 JSP指令标记 page指令 include指令 JSP动作标记 JSP动作元素include和include指令的…

Docker在人工智能领域的应用与实战

摘要 人工智能(AI)技术的快速发展带来了对高效开发和部署工具的需求。Docker作为一个创新的容器化平台,为AI领域提供了强大的支持。本文详细介绍了Docker在AI模型开发、训练、部署以及服务器集群管理等方面的应用,并探讨了其在数…

AcWing 1550:完全二叉搜索树

【题目来源】https://www.acwing.com/problem/content/1552/【题目描述】二叉搜索树 (BST) 递归定义为具有以下属性的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 (2)若它的右…

大数据平台之数据同步

数据同步也成为CDC (Chanage Data Capture) 。Change Data Capture (CDC) 是一种用于跟踪和捕获数据库中数据变更的技术,它可以在数据发生变化时实时地将这些变更捕获并传递到下游系统。以下是一些常用的开源 CDC 方案: 1. Flink CDC Flink CDC 是基于 …

快速上手LangChain:构建强大的语言模型应用

引言 在人工智能和自然语言处理(NLP)领域,构建高效且强大的语言模型应用变得越来越重要。LangChain 是一个专为开发者设计的框架,它简化了语言模型应用的构建流程。本文将详细介绍LangChain的功能和使用方法,帮助读者…