做网站有底薪吗/网站搜索优化
异常检测任务,指的是检测偏离期望行为的事件或模式,可以是简单地检测数值型数据中,是否存在远超出正常取值范围的离群值,也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。
在不同行业中,异常检测的典型应用场景包括:
根据设备传感器采集的信号,识别零部件故障类型
自动检测生产线中产品加工异常,降低不良率或辅助质检人员提高工作效率
监控金融交易中是否存在诈骗行为
根据医学影像数据,识别癌组织及其边界
针对异常数据的不同,以及是否可以人为判断异常行为或故障模式,实现方式各有千秋。本文分为上下两篇,在第一部分,将梳理异常检测问题的一般处理思路,第二部分则结合示例重点讨论基于统计和机器学习的无监督异常检测方法。
什么是异常值
异常值包括离群值和奇异值,以下是相关定义:
离群值(outlier):偏离正常范围的数据,可能是由传感器故障、人为录入错误或异常事件导致,在构建机器学习或统计模型前,如果不对离群值做任何处理,可能会导致模型出现偏差。
奇异值(novelty):数据集未受到异常值污染,但是存在某些区别于原数据分布的观测数据。
首先,了解你的数据
在一头扎进算法或模型开发之前,首先需要做的是仔细查看手中的数据,并考虑以下问题:
01
原始数据中的异常是否是显而易见的?
机电设备的停机、堵转等异常现象,从信号波形就可以直接判断异常原因和发生时间,这类问题比较简单,常用突变点检测函数 findchangepts 或过程控制 SPC (Statistical Process Control) 中 control chart 进行处理。例如图 1(a) 中超出上下置信区间的数据点即为异常点,具体可查看示例:Find abrupt changes in signal[1] ,Control Charts[2] ,统计过程控制[3]
02
从原始数据中是否可以提取出能够有效区分异常的特征?
旋转机械设备的正常和异常数据,从时域信号的波形看上去往往相差无几,但是经过频域变换后,不同频率分量的幅值,可能有较大的不同,这种情况下,可根据频域特征直接检测出异常,如图 1(b) 中标记的异常部分。
03
从统计分析的角度,是否可以分区异常和正常数据?
Predictive Maintenance Toolbox™ 内置的Diagnostic Feature Designer App,可以帮助我们提取时域和频域特征,并分析其统计分布,例如,在工业设备应用中,利用三轴加速度传感器,分别采集设备维护前(蓝色)和维护后(红色)的振动信号,如图 1(c) 所示,对这两类信号(每类多个样本)提取标准差、斜度等常用统计特征,再分析两类信号的特征直方图,见图 1(d),不难看出,二者的各个特征的统计分布均存在一定差异。此外,在 Diagnostic Feature Designer App 中,还可以使用一系列特征排序的方法,例如在有标签或无标签的条件下,分别选用 One-Way ANOVA 和 Laplace Score 分析哪些特征可以更好地辅助判断,并利用这些特征作训练基于机器学习的异常检测模型。
04
如果无法确定数据中是否存在特定的异常模式,应该如何处理?
在全天候运行的工业设备中,故障停机意味着产能的降低,因此设备运营阶段往往采取预防性维护的策略,这意味着异常数据稀缺,并且采集到数据全部或大多是正常数据,异常数据的占比往往较低(获取难度大风险高,或是无法描述异常模式),这也是为什么异常检测任务多被处理为无监督学习问题,仅仅通过正样本(正常数据)训练算法实现任务,或根据数据的隐藏特性筛选出其中的异常样本。
关于如何选择异常检测方法,可参考该链接了解更多相关函数和适用条件:Decision Models for Fault Detection and Diagnosis [4]
简单的一维数据异常检测问题
针对一维数据的异常值检测,处理方法有以下几种:
是否超出历史数据的最大值/最小值
3σ 原则:如果数据符合正态分布,可将 ±3σ 作为极限误差,将落在 μ±3σ 以外样本作为离群值
可以通过箱线图分析/四分位数检验、Grubbs 等方法,进行检测。
例如,针对一组随机生成数,使用 boxchart 函数绘制箱线图,可以简单有效地可视化离群值,默认情况下,boxchart 使用 'o' 符号显示每个离群值。
% 创建一个一维的随机数向量
data = randn(1,1000);
boxchart(data,"DisplayName","random data")
legend
% 选取其中一个离群值
ax = gca;
chart = ax.Children(1);
datatip(chart,"1",3.425);
或者使用实时任务“清除离群值”,选择合适的检测方法和清理方法,并对数据分布和离群值进行可视化和处理:
对于多变量(特征)数据集,特征之间可能存在复杂和高度非线性的相关性,上述离群值剔除的方法将不再适用。
高维数据的异常检测
接下来,通过一个基于工业设备振动信号的预测性维护示例,介绍如何着手处理高维数据的异常检测问题,在该例中,原始数据为使用加速度传感器采集的 x/y/z 三个通道的振动信号。在重要工业设备的实际运营过程中,使用者往往采取定期预防性维护的策略,以避免意外停机造成的风险和经济损失,而设备运行一段时间,可能存在一定的零部件磨损和老化问题,这也是导致异常的部分潜在原因,因此样本标签分为两类:“维护前”(before)和“维护后”(after)。
振动信号是典型的时间序列数据,在进行处理时,常用的方法之一是,按设定的时间窗口,对信号进行时域的统计特征提取或频域特征提取,从而转换成以下结构化数据形式:
load("FeatureEntire.mat")
head(featureAll)
关于如何进行特征提取,可在命令行窗口运行以下指令,打开对应参考文档查看:
>> openExample('predmaint_deeplearning/AnomalyDetectionUsing3axisVibrationDataExample')
将数据集划分为训练集和测试集:
rng(0)
idx = cvpartition(featureAll.label, 'holdout', 0.1);
featureTrain = featureAll(idx.training, :);
featureTest = featureAll(idx.test, :);
将测试集部分的标签进行替换,将“维护前”(before)定义为“异常”(Anomaly),“维护后”(after)定义为“正常”(Normal):
trueAnomaliesTest = featureTest.label;
trueAnomaliesTest = renamecats(trueAnomaliesTest,["After","Before"], ["Normal","Anomaly"]);
featureTestNoLabels = featureTest(:, 2:end);
将训练集中“维护后”(after)的数据样本筛选出来,作为后续异常检测模型的训练样本:
featureNormal = featureTrain(featureTrain.label=='After', :);
feat = featureNormal{:,2:end};
[NumSamples,Dim] = size(feat)
NumSamples=10282
Dim=12
这个数据集一共有 12 个维度的特征和 10282 条样本。
常用的高维数据可视化方法
为了方便理解数据,可采用以下方法,在低维空间内,对高维数据进行可视化:
1. 通过 plotmatrix 函数,随机抽取 3 个特征,将任意两个特征作为横纵坐标:
plotmatrix(feat(:,randi(size(feat,2),1,3)))
title('原始特征')
2. 使用 fsulaplacian 函数,利用 Laplacian Score 算法,选取最重要 2 个特征(第 9 和第 10 个特征)后,绘制其二维平面散点图,观察数据中是否存在某些特定的聚集现象。
idx = fsulaplacian(feat);
idx(1),idx(2)
ans=9
ans=10
scatter(feat(:,idx(1)),feat(:,idx(2)),4,'filled')
title('基于Laplacian Score选择后的特征')
3. 仅选取其中最重要的特征,可通过 tSNE(t-Distributed Stochastic Neighbor Embedding)对数据进行降维:
rng('default')
X=tsne(feat,Standardize=true,Perplexity=100,Exaggeration=20);
scatter(X(:,1),X(:,2),4,'filled')
title('使用tSNE降维 - 二维')
X3=tsne(feat,Standardize=true,Perplexity=100,Exaggeration=20,NumDimensions=3);
scatter3(X3(:,1),X3(:,2),X3(:,3),4,'filled')
title('使用tSNE降维 - 三维')
基于 tSNE 进行数据降维的过程中,将融合多个特征得到新的基向量,再将原始数据投射到对应基向量的低维空间进行可视化,在第二部分中,我们将利用这个方法查看训练样本中的异常情况。
有监督异常检测
Statistics and Machine Learning Toolbox™ 提供了基于模型的异常检测算法,如果已将训练数据标注为正常和异常,可以训练二类分类模型,并使用 resubPredict 和 predict 对象函数分别检测训练数据和新数据中的异常。当对设备的全生命周期中的不同状态,例如健康、老化、异常和寿命终末期有足够了解和相关数据标签时,可考虑数据拟合回归模型,或构建聚类模型,以区分不同状态数据。针对上述机器学习模型,以下对象函数常用于检测数据中的异常:
相似度矩阵 — 使用 outlierMeasure[6] 函数计算随机森林 (CompactTreeBagger) 中,样本和其他观测点之间相似度平方值的平均值;
马氏距离 — 使用mahal[7] 函数,适用于判别分析分类模型 (ClassificationDiscriminant) 和高斯混合模型 (gmdistribution)
无条件概率密度 — 使用 logp[8] ,适用于判别分析分类模型 (ClassificationDiscriminant) 和朴素贝叶斯分类模型 (ClassificationNaiveBayes),包括对应的增量学习模型 (incrementalClassificationNaiveBayes)
此外,利用 Deep Learning Toolbox 构建深度神经网络进行异常检测也是目前该领域的研究热点之一。
在光学检测领域,如图 2(a) 所示,需要检测图像数据中异常,可构建基于卷积神经网络的图像分类模型,并结合深度学习模型解析的方法,例如类激活映射,对异常区域进行可视化,具体示例可参考:Detect Image Anomalies Using Explainable One-Class Classification Neural Network。[9]
在设备预测性维护应用中,针对传感器信号中的异常检测,多用生成式模型,学习正常数据的特征,并尝试重建数据,再利用重建误差作为判定是否异常的指标,如图 2(b) 所示,例如自编码器AutoEncoder(Time Series Anomaly Detection Using Deep Learning )[10] 和 Graph Deviation Network (Multivariate Time Series Anomaly Detection Using Graph Neural Network) [11] 进行多元时序异常检测。
由于篇幅有限,在此先不详细展开介绍上述方法,如感兴趣,可参考对应文档链接。在下一篇中,我们将讨论在没有标签的条件下,或不确定异常类型和成因的场景中,如何针对上述数据集,利用统计和机器学习方法进行无监督异常检测,欢迎继续关注后续内容。
相关文章:

机器学习应用 | 使用 MATLAB 进行异常检测(上)
异常检测任务,指的是检测偏离期望行为的事件或模式,可以是简单地检测数值型数据中,是否存在远超出正常取值范围的离群值,也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。 在不同行业中,异常检测的典型…...

Java -jar参数详解
java -jar 命令用于执行打包成可执行 JAR 文件的 Java 应用程序。在运行时,你可以通过命令行传递参数给这个应用程序。 1. -jar 参数: 说明: 指定要执行的 JAR 文件。示例:java -jar your-application.jar 2. -D 参数ÿ…...

RocksDB 在 vivo 消息推送系统中的实践
作者:vivo 互联网服务器团队 - Zeng Luobin 本文主要介绍了 RocksDB 的基础原理,并阐述了 RocksDB 在vivo消息推送系统中的一些实践,通过分享一些对 RocksDB 原生能力的探索,希望可以给使用RocksDB的读者带来启发。 一、背景 在…...

【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)
前言: 由于c语言的程序编译链接的这块知识点不清楚,回来复习一遍,以便于好理解c知识,我会尽快更新下一篇文章。 目录 1.程序的翻译环境和执行环境 2.翻译环境(编译链接) 编译(编译器…...

点滴生活记录1
2023/10/10 今天骑小电驴上班,带着小鸭子一起。路上的时候,我给小鸭子说,你要帮我看着点路,有危险的时候提醒我,也就刚说完没几分钟,一个没注意,直接撞到一个拦路铁墩子上,车子连人歪…...

gitea仓库迁移
(1)先安装git,再直接将源机器上的gitea文件夹复制到新机器上。这样原始数据及账号信息都还在。 (2)根据实际情况修改gitea\custom\conf\app.ini文件夹下app.ini文件的相关路径。 (3)如下命令启…...

〖大前端 - 基础入门三大核心之JS篇㊽〗- BOM特效开发
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…...

【扩散模型】ControlNet从原理到实战
ControlNet从原理到实战 ControlNet原理ControlNet应用于大型预训练扩散模型ControlNet训练过程ControlNet示例1 ControlNet与Canny Edge2. ControlNet与Depth3. ControlNet与M-LSD Lines4. ControlNet与HED Boundary ControlNet实战Canny Edge实战Open Pose 小结参考资料 Cont…...

AI并行计算:CUDA和ROCm
1 介绍 1.1 CUDA CUDA(Compute Unified Device Architecture)是Nvidia于2006年推出的一套通用并行计算架构,旨在解决在GPU上的并行计算问题。其易用性和便捷性能够方便开发者方便的进行GPU编程,充分利用GPU的并行能力࿰…...

2023五岳杯量子计算挑战赛数学建模思路+代码+模型+论文
目录 计算力网络(CPN)是一种新型的信息基础设施,完整论文代码见文末 问题描述 2.1 问题1 2.2 问题2 2.3 问题3 问题1的解答过程: 问题3的解答过程: 决策优化应用场景:人工智能模型超参数调优 背景信…...

生信数据分析高效Python代码
1. Pandas glob获取指定目录下的文件列表 import pandas as pd import globdata_dir "/public/data/" # 获取文件后缀为.txt的文件列表 df_all pd.concat([pd.read_csv(f, sep\t) for f in glob.glob(data_dir *.txt)]) print(df_all)2. 使用 enumerate 函数获取…...

Spring Kafka常用配置详解
目录 前言producer配置consumer 配置listener 配置 前言 在 Spring Kafka 中,主要的配置分为三大块,分别是producer、consumer、listener,下面我们就按模块介绍各个模块的常用配置 producer配置 在 Spring Kafka 中,spring.kaf…...

跨域的多种方案详解
浏览器的同源策略是为了保护用户的安全,限制了跨域请求。同源策略要求请求的域名、协议和端口必须完全一致,只要有一个不同就会被认为是跨域请求。 本文列举了一些处理跨域请求的解决方案: JSONPCORS跨域资源共享http proxynginx反向代理web…...

Java / Scala - Trie 树简介与应用实现
目录 一.引言 二.Tire 树简介 1.树 Tree 2.二叉搜索树 Binary Search Tree 3.字典树 Trie Tree 3.1 基本概念 3.2 额外信息 3.3 结点实现 3.4 查找与存储 三.Trie 树应用 1.应用场景 2.Java / Scala 实现 2.1 Pom 依赖 2.2 关键词匹配 四.总结 一.引言 Trie 树…...

JS/jQuery 获取 HTTPRequest 请求标头?
场景:在jquery封装的ajax请求中,默认是异步请求。 需要定一个秘钥进行解密,所以只能存放在请求头中。然后需要值的时候去请求头中读取。 注意:dataType设置,根据请求参数的格式设置,如果是加密字符串&…...

Leetcode—2034.股票价格波动【中等】
2023每日刷题(五十二) Leetcode—2034.股票价格波动 算法思想 实现代码 class StockPrice { public:int last 0;multiset<int> total;unordered_map<int, int> m;StockPrice() {}void update(int timestamp, int price) {if(m.count(time…...

【Linux】diff命令使用
diff命令 是一个用于比较两个文件或目录之间差异的命令。它可以显示两个文件之间的行级别差异,并以易于阅读的格式输出结果。 著者 由保罗艾格特、迈克海特尔、大卫海耶斯、理查德史泰尔曼和Len Tower撰写。 diff命令 -Linux手册页 语法 diff [选项] [文件1]…...

讯飞星火认知大模型与软件测试结合,提升软件质量与效率
随着人工智能技术的不断发展,越来越多的企业开始将其应用于软件开发过程中。其中,讯飞星火认知大模型作为一种基于深度学习的自然语言处理技术,已经在语音识别、机器翻译、智能问答等领域取得了显著的成果。而在软件测试领域,讯飞…...

【Flink on k8s】- 4 - 在 Kubernetes 上运行容器
目录 1、准备 k8s 集群环境、Docker 环境 2、启用 kubernetes 2.1 查询 k8s 集群基本状态...

软件重装或系统重装后避免重复踩坑
1. Office软件的坑在于字体又没了 Word字体库默认没有仿宋_GB2312和楷体仿宋_GB2312,需要手动添加。 提供如下两个下载链接,亲测有效: 仿宋_GB2312 楷体_GB2312 安装步骤:解压-复制.ttf文件至C:\Windows\Fonts 持续更新贴~...

【Jmeter】JSON Extractor变量包含转义字符,使用Beanshell脚本来消除
如果使用Jmeter的JSON Extractor提取的变量包含特殊字符,直接引用时会包含转义字符。可以使用Beanshell脚本来进行字符串转换,从而消除这些转义字符。 import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONArray; import com.ali…...

GO设计模式——5、建造者模式(创建型)
目录 建造者模式(Builder Pattern) 建造者模式的核心角色 优缺点 使用场景 注意事项 代码实现 建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是将一个复杂对象的构建与它的表示分离&…...

《LeetCode力扣练习》代码随想录——字符串(反转字符串II---Java)
《LeetCode力扣练习》代码随想录——字符串(反转字符串II—Java) 刷题思路来源于 代码随想录 541. 反转字符串 II 模拟过程 class Solution {public String reverseStr(String s, int k) {if(s.length()1){return s;}char[] chs.toCharArray();for(int i…...

WMMSE方法的使用笔记
标题很帅 原论文的描述WMMSE的简单应用 无线蜂窝通信系统的预编码设计问题中,经常提到用WMMSE方法设计多用户和速率最大化的预编码,其中最为关键的一步是将原和速率最大化问题转化为均方误差最小化问题,从而将问题由非凸变为关于三个新变量的…...

MySQL核心知识点整理大全1-笔记
目录 MySQL 一、MySQL的基本概念 1.数据库 2.表 3.列 4.行 5.主键 6.索引 二、MySQL的安装与配置 1.下载MySQL安装包 2.安装MySQL 3.启动MySQL 4.配置MySQL a.设置监听端口和IP地址 b.设置数据存储路径 c.设置字符集和排序规则 5.测试MySQL 三、MySQL的基本操…...

理解输出电压纹波和噪声:来源与抑制
医疗设备、测试测量仪器等很多应用对电源的纹波和噪声极其敏感。理解输出电压纹波和噪声的产生机制以及测量技术是优化改进电路性能的基础。 1:输出电压纹波 以Buck电路为例,由于寄生参数的影响,实际Buck电路的输出电压并非是稳定干净的直流…...

uni-app 微信小程序之好看的ui登录页面(二)
文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…...

Textual Inversion
参考博客1:https://www.bilibili.com/read/cv25430752/...

笙默考试管理系统-MyExamTest----codemirror(47)
笙默考试管理系统-MyExamTest----codemirror(44) 目录 笙默考试管理系统-MyExamTest----codemirror(44) 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试…...