52phm简介


专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。 网站正在不断建设和完善过程中,欢迎大家给予建议和参与社区建设

联系我们


投稿说明


52phm,专注于预测性维护知识学习和交流,欢迎广大从事预测性维护行业人员投稿,投稿请联系管理员(wx: www52phmcn),投稿内容可以是:

  • 学习笔记
  • 技术理论
  • 工程案例
  • 行业资讯

加入我们


官方公众号:52phm,专注预测性维护的学习平台

2021-12-13 23:52:54    互联网    1506    当前专栏:工业异常检测    分类:算法开发    本站官网:www.52phm.cn   

公众号 ...

异常检测模型整理

写在前面

文中使用了其他博主的图,具体链接已不好追踪,如果不妥,还请谅解(私信我加备注哦)~

异常检测主要检测数据中的离群点,异常数据的特征值与正常数据的特征值距离较远。
异常检测具有以下难点: - 标签数据较少,从较少的标签数据中很难学习到哪些是正常数据,哪些是异常数据。- 难以划分异常和正常的边界。- 数据本身存在噪声,导致噪声和异常难以区分。 处理异常检测的模型包括监督模型、半监督学习和无监督学习模型,具体如下:

一、监督模型

常见分类模型都可使用。若有标签数据,则优先使用有监督学习方法解决问题。在基于监督学习的异常检测中,存在正类、负类类别不平衡的问题,因此需要注意不平衡数据的处理。

二、半监督学习

1)若有少量标签数据

参考puLearning中two-step的方法。先使用分类器在标签样本中训练(聚类方法同理),选取置信度较高的预测样本加入训练样本,并不断迭代。

2)若有大量标注数据,但是标注的数据全都是正常数据

i)基于距离的方法

  • Kmeans

思路: 先用干净的数据(没有异常点)得到一个K-Means结果。然后把测试集(包含异常点)根据之前KMeans的结果进行聚类,如果一个点距离它最近的中心超过之前训练集里的最大距离的话,就判断它为异常点。
优点: 用作聚类收敛快。
缺点: ①主要还是聚类算法,异常检测只是聚类功能的一个赠品;②KMeans适用于凸数据集;③初始聚类中心和K的选择影响算法结果。

ii)基于线性模型的方法

  • OCSVM(One-Class SVM)

思路: 将数据密度较高的区域分类为正,将数据密度较低的区域分类为负(异常样本)。
优点: 适合高维数据的异常检测。
缺点: 适合中小型数据集的分析,不适合海量数据情况下的异常检测。

三、无监督模型

1)统计与概率模型

思路: 主要对数据的分布做出假设,并找出假设下所定义的“异常”,如Z-Score。具体步骤: - i)假设数据服从的分布,并根据特征数据训练分布的参数;- ii)根据得到的参数和分布的函数计算预测特征的概率;- iii)①将预测概率小于给定阈值数据当做异常点;②预测概率越大,异常值越低。
推广到高维后,可以假设每个维度各自独立,并将各个维度上的异常度相加。 优点: 速度快,适合大数据量情形。
缺点: ①仅适用于对单独维度进行研究,推广到多维,基本也是通过一些方法进行加权求和等,使用上有很大的局限性;②存在较强的“假设”,实际情况比较复杂,若假设错误,则效果不一定好;③假设各个维度之间相互独立,所以要求设计的特征尽可能相互独立;④基于假设的方法往往因为线上环境和线下环境分布的不同,线上效果可能和线下效果有差异。

2)基于距离的算法

  • KNN

思路: 一个样本和它第k个近邻的距离被当做是临界值,异常点的k近邻距离更大。
优点: 当维度较低时表现较好。
缺点: KNN每次运行需要遍历所有数据,计算开销较高,仅适用于中小数据集和低维数据。 - Kmeans

思路: 使用KMeans对数据进行聚类,考虑离每簇的centroid最远的点,它们就是异常点。
优点: 用作聚类收敛快。
缺点: ①主要还是聚类算法,异常检测只是聚类功能的一个赠品;②KMeans适用于凸数据集;③初始聚类中心和K的选择影响算法结果。
备注: 图片来源https://zhuanlan.zhihu.com/p/77514567

3)基于密度的算法

基于密度的离群点检测方法的关键步骤在于给每个数据点都分配一个离散度,其主要思想是:针对给定的数据集,对其中的任意一个数据点,如果在其局部邻域内的点都很密集,那么认为此数据点为正常数据点,而离群点则是距离正常数据点最近邻的点都比较远的数据点。通常有阈值进行界定距离的远近。 - DBScan

思路: DBSCAN算法在聚类过程中主要通过寻找核心对象来不断扩展密度可达的样本,从而将样本空间中不同位置的高密度空间找出来。除了高密度空间外的其他不属于任何类簇的样本就被视为样本点。比如图中DBSCAN根据密度和含糖率两个特征聚成了4个类簇,黑色实心点代表核心对象,白色点是核心对象密度可达的样本,剩下不在类簇中的星号样本便是异常样本。
优点: 可以找出分布不均匀的数据中局部异常的数据。
缺点:* ①主要还是聚类算法,异常检测只是聚类功能的一个赠品;②样本集的密度不均匀、聚类间距差相差很大时效果较差;③数据量大、特征维度较高的情况下,运行效率低下;④只能得到是否是异常点,无法得到异常程度。 - LOF(Local Outlier Factor)

思路: 通过比较每个点p和其邻域点的密度来判断该点是否为异常点,点p的密度越低,越可能被认定是异常点。至于密度,是通过点之间的距离来计算的,点之间距离越远,密度越低,距离越近,密度越高。对其中的任意一个数据点,如果在其局部邻域内的点都很密集,那么认为此数据点为正常数据点,而离群点则是距离正常数据点最近邻的点都比较远的数据点。
优点: 检测精度高。
缺点: ①LOF方法通过比较所有数据点的LOF值判断离群程度,其需要计算数据点两两之间的距离,造成整个算法时间复杂度为O(n^2);②LOF对密度的是通过点的第k邻域来计算,而不是全局计算,因此得名为“局部”异常因子;③LOF类的算法适用于局部区域空间问题,对于完整区域空间,KNN和Iforest更好;④高维数据情况下效率较低。
备注: 图片来源https://zhuanlan.zhihu.com/p/37753692 - feature bagging 思路: 先将训练数据随机划分(每次选取所有样本的d/2-d个特征,d代表特征数),得到多个子训练集,再在每个训练集上训练一个独立的模型(默认为LOF),并最终合并所有的模型结果(如通过平均)
优点: ensemble的思想。
缺点: 多个LOF的组合,效率较低。

4)基于线性模型

  • PCA

思路: PCA的主要思想是将方差最大的方向作为主要特征(或基于最小投影距离,即样本点投影超平面的距离足够近),常用于数据的降维。
降维方法进行异常检测的两种思路:
①将数据映射到低维特征空间,在低维特征空间的不同维度上查看每个数据点跟其他数据的偏差。如果一个样本在很多特征维度上的偏差都比较大,则考虑为异常样本。
②将数据映射到低维特征空间,然后由低维特征空间重新映射回原空间,尝试用低维特征重构原始数据,看重构误差的大小。如果一个样本不容易被重构出来,表示这个样本的特征跟整体数样本的特征不一致,则考虑为异常样本。
缺点: 线性模型,类似思想的非线性模型可参考Autoencoder。

5)基于树的算法

此类方法的思想是通过划分子空间寻找异常点。 - 孤立森林

思路: 很快被划分到叶子节点的大概率是异常。由于异常值的数量较少且与大部分样本的疏离性,因此,异常值会被更早的孤立出来,也即异常值会距离iTree的根节点更近,而正常值则会距离根节点有更远的距离。具体步骤:

使用如下步骤建立t棵孤立树:
  1. 从训练数据中随机选择Ψ个点作为子样本,放入一棵孤立树的根节点;
  2. 随机指定一个维度,在当前节点数据范围内,随机产生一个切割点p —— 切割点产生于当前节点数据中指定维度的最大值与最小值之间;
  3. 此切割点的选取生成了一个超平面,将当前节点数据空间切分为2个子空间:把当前所选维度下小于p的点放在当前节点的左分支,把大于等于p的点放在当前节点的右分支;
  4. 在节点的左分支和右分支节点递归步骤2、3步骤,不断构造新的叶子节点,直到叶子节点上只有一个数据(无法再继续切割)或树已经生长到了所设定的高度。

孤立树构建完毕后,针对一条测试数据,使用ensemble的方法计算异常得分:

s(x, \psi )=2^{-\frac{E(h(x))}{c(\psi )}}

s(x,ψ)=2−c(ψ)E(h(x))​

其中,h(x)为x在每棵树的高度,c(Ψ) 为给定样本数Ψ时路径长度的平均值,用来对样本x的路径长度 h(x) 进行标准化处理。s(x,Ψ)的取值范围为[0, 1],值越大,说明样本越有可能是异常样本。
优点: ①适合中大型数据集上的异常检测,具有较高的精准度;②适用于特征值是连续值的任务;③若异常特征隐藏在少量特征维度上,孤立森林效果较好(KNN效果不好);④线性时间复杂度;⑤目前几乎成为异常点检测算法的首选项;⑥相较于LOF,孤立森林对高维数据更鲁棒。
缺点: ①中小数据集上效果较差;②iForest仅对即全局稀疏点敏感,不擅长处理局部的相对稀疏点 ,这样在某些局部的异常点较多的时候检测可能不是很准。
备注: https://zhuanlan.zhihu.com/p/74508141

6)基于神经网络的算法

  • AutoEncoder

思路: Autoencoder与主成分分析PCA类似,但是Autoencoder在使用非线性激活函数时克服了PCA线性的限制。Autoencoder的思想是:先用encoder对数据编码(相当于降维),再使用decoder解码,比较和原始数据的差距,使用数据的重建误差作为异常值。模型训练的方向是越近似原始数据越好,对于异常数据,生成出的结果一般和原始数据差距较大。可以使用还原之后与还原之前的MAE误差/MSE误差来衡量异常情况,样本的重建误差越大,则表明异常的可能性越大。
优点: ①适合高维数据,不存在维度诅咒的问题;②能够挖掘隐式特征。
备注: https://zhuanlan.zhihu.com/p/46188296 - 生成对抗网络

思路: 使用GAN的思想,用Generator生成潜在离群点(异常数据),将噪声和真实数据合在一起,让Discriminator分辨出噪声和真实数据,最后使用Discriminator作为异常检测分类器。
优点: ①适合高维数据;②能够挖掘隐式特征。
缺点: ①处理探索性阶段,工业应用可能会存在一定差距;②难以训练,Discriminator与Generator之间需要很好的同步,例如Discriminator更新k次而Generator更新一次。
文章: Liu Y, Li Z, Zhou C, et al. Generative adversarial active learning for unsupervised outlier detection[J]. IEEE Transactions on Knowledge and Data Engineering, 2019.

7)部分算法性能对比

备注: 上述17个数据集的规模都为中小型数据集。内容来源:https://www.zhihu.com/question/280696035
结果分析: 整体来看,IForest和KNN的效果好一些,KNN适用于中小型数据集和低维数据,IForest适用于数据量较大的情况。

4、总结&思考

1)基于聚类的方法存在的问题:聚类算法主要目标仍然倾向于发现簇而不是异常点,当一小团点彼此都相似且都是异常时,聚类算法无法识别。因此,个人更倾向于使用专注于异常检测的算法。
2)对于序列数据来说,不同序列节点的重要程度是不同的,若不考虑自动学习不用时间节点的特征重要度,则可以考虑针对某一特征不同序列节点的数据使用指数平滑(即过去的观测给出不同的权重)。若使用attention等模型来获取不同序列节点的权重,则不需要使用。

参考资料:
1、https://zhuanlan.zhihu.com/p/30169110
2、https://github.com/yzhao062/Pyod
3、https://sklearn.apachecn.org/docs/master/26.html

版权声明:遵循 CC 4.0 BY-SA 版权协议
原文链接:https://blog.csdn.net/quiet_girl/article/details/119301702

免责声明


[推荐] 异常检测方法综述

2021-12-19 14:20:42    互联网    479    分类:算法开发    专栏:工业异常检测   


[推荐] 异常检测——常见方法分类

2021-12-19 14:43:14    互联网    1514    分类:算法开发    专栏:工业异常检测   


[推荐] 异常检测——孤立森林

2021-12-19 15:00:11    互联网    413    分类:算法开发    专栏:工业异常检测   



转发此文章到社区


关注公众号进群

让志同道合读者学习交流



阅读论文:电网的故障检测

摘要存在的基于模型的方法无法涵盖时间序列的所有方面先进测量技术的出现带动着新一轮的数据爆炸,推动着数据导向形方法的发展方法包含:运用注意机制的长短期记忆架构,来提取时间序列特征 一维卷积神经网络获取频率信息基于频率的非监督分类信号方法,对于不同的分类,使用多任务学习方法本文提出的技术特别先进,甚至胜过数据网站的冠军术语索引:异常检测,故障检测,卷积神经网络,长短期记忆,多任务学习,高维时间序列1.介绍电网系统升级,把网络和传感技术相...

2021-12-13 13:36:07    互联网    1662    分类:论文速递    专栏:未分组   


大型旋转机械状态监测与故障诊断

1 故障诊断的含义故障就是指机械设备丧失了原来所规定的性能和状态。通常把运行中的状态异常、缺陷、性能恶化及事故前期的状态统称为故障,有时也把事故直接归为故障。而故障诊断则是根据状态监测所获得的信息,结合设备的工作原理、结构特点、运行参数及其历史运行状况,对设备有可能发生的故障进行分析、预报,对设备已经或正在发生的故障进行分析、判断,以确定故障的性质、类别、程度、部位及趋势。大型旋转机械

2021-12-13 17:29:41    互联网    7319    分类:算法开发    专栏:故障诊断   


光谱信息在癌症检测上的应用

拉曼光谱(Raman) 与傅里叶变换红外光谱(FTIR) 在癌症的检测上具有一定的应用价值。由于检测组织中水的存在常使结果变得复杂,FTIR常用于皮肤层面的检测。在材料的制备与探针选择上,拉曼方法也更适用于组织活检,甚至实时检测。1.拉曼光谱在乳腺癌检测上的应用文章:Application of Raman Spectroscopy and Infrared Spectroscopy in the Identification of Breast Cancer(2016)期刊 Applied

2021-12-14 15:50:53    互联网    814    分类:算法开发    专栏:数字信号处理   


数据挖掘--风电机组异常数据识别与清洗

一、赛题背景(一)背景风能是一种环境友好且经济实用的可再生能源。中国是世界排名第一的风力发电国家、新装风力发电设备装机容量最大的国家,并且保持快速增长。由于风力发电正处于飞速发展阶段,风电场数量和规模不断扩大,然而受地理条件和环境因素限制,风电场多位于偏僻遥远的平原、山区或海上,因此为风电公司引入SCADA系统(数据采集与监视控制系统)对风电场群的日常运行进行集中监控、调度和管理,但风电机组受设备、环境、运行状态等因素影响,SCADA系统实时采集的风机运行数据会存在有大量异常值和缺失值,这些“脏数据”的

2021-12-19 01:00:15    互联网    1263    分类:算法开发    专栏:风电机组   


异常检测——拓扑异常检测(TAD)

分类是一种基于密度的outlier detection思想它不使用局部密度,而是利用近邻将数据构造成图。与其他KNN方法不同的是,它不用设定K作为参数,而是设定一个maximal inter-observation distance(被称为图resolution)的参数。在算法中,如果两个点之间的距离小与图resolution,就在他们之间加一个边。当整张图构建完成以后,通过设定一个阈值P...

2021-12-19 14:40:05    互联网    432    分类:算法开发    专栏:工业异常检测   


异常检测——ABOD(angle-based outlier detection)

论文:Angle-Based Outlier Detection in High-dimensional Data,kdd2008问题高维度情况下,距离同质化。基础:1、在高维空间中角度比距离更稳定[1]2、如果其他大部分的点都在相似的方向上,那么点O是个离群点3、如果许多其他的点在不同的方向上,那么点O不是离群点。方法对于一个给定的点P,它与任意其他点x,y之间的角度构成一个...

2021-12-19 14:55:27    互联网    954    分类:论文速递    专栏:工业异常检测   


异常分析-数据模型就是一切《Outlier Analysis 2nd Edition》

几乎所有异常值检测算法都会建立数据中正常模式的模型,然后根据这些模式的偏差计算给定数据点的异常值。 例如,该数据模型可以是生成模型,例如高斯混合模型,基于回归的模型或基于邻近的模型。 所有这些模型对数据的“正常”行为做出不同的假设。 然后通过评估数据点与模型之间的拟合质量来计算数据点的离群值分数。 在很多情况下,模型可能是算法定义的。 例如,基于最近邻的离群值检测算法根据其最近邻距离的分布对数据点

2021-12-21 11:00:33    互联网    401    分类:算法开发    专栏:工业异常检测   


时间序列预测

时间序列预测基于历史数据对其后某段时间内的数据进行预测,例如通过对菜品以往的销售数据,预测未来7天不同菜品的销售量,以减少菜品脱销或备货不足。时间序列与常见的回归问题的不同点在于:1、时间序列是跟时间有关的,而线性回归模型中观察结果是独立的;2、随着上升或者下降的趋势,更多的时间序列出现季节性趋势的形式。常用按时间序列排列的一组随机变量X_1,X_2,…,X_t来表示一个随机事件序列,记为{X_t};用x_1,x_2,,...,x_n或{x_t,t=1,2,...,n}表示该随机序列的n个有序观察

2021-12-25 19:45:22    互联网    649    分类:算法开发    专栏:时间序列预测   


时间序列预测的8种常用方法简介

时间序列预测8种常用方法简介,包括朴素预测法、简单平均法、移动平均法、简单指数平滑法、霍尔特(Holt)线性趋势法、Holt-Winter方法、AMRIA。

2021-12-25 19:46:21    互联网    862    分类:算法开发    专栏:时间序列预测   


计算机视觉-OpenCV图像处理模块

计算机视觉基础首先是处理图像、视频这些非结构化的数据, 而图像处理库比较常用和强大的有 PIL、OpenCV 模块, 本项目主要讲述 OpenCV 的具体用法 主要介绍了opencv模块在图像处理方面的一些常用操作。 * 图像文件操作* 图像基本操作* 绘图功能* 轨迹栏做调色板* 图像阈值* 图像平滑* 边缘检测* 轮廓检测* 颜色空间转换及目标追踪* 图像增强

2022-03-31 21:15:04    博客笔记    558    分类:算法开发    专栏:图像预处理   


  • 52phm公告

  • 在这里,可以学习接触到工业互联网技术知识以及落地案例,其中涵盖工业数据集、工业标准库、机理模型、设备知识、机器学习、 深度学习、特征工程、振动分析、工业视觉、边缘硬件及传感器等技术知识!


工业异常检测   
  • 关于站长


  •         从事设备故障预测与健康管理行业多年的PHM算法工程师(机器医生)、国际振动分析师, 实践、研发和交付的项目涉及“化工、工业机器人、风电机组、钢铁、核电、机床、机器视觉”等领域。专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。


当前文章目录


52phm社区

52phm社区,专注预测性维护的学习平台!

Saas体验

+ 工业demo学习系统

技术博客

+ 博客首页    + 算法开发    + 边缘感知   

+ 设备机理    + 开发环境

+ 论文速递   

友情链接

+ 在码圈

联系我

Copyright© 2021 52phm社区

京ICP备2021029973号-1