Skip to content

Python 异常检测(Anomaly Detection)在工业设备监测中的常用机器学习算法


1. 传统机器学习方法

1.1 基于统计/距离的方法

(1) Z-Score / 标准差检测

  • 原理:基于均值与方差检测极端点
  • 适用场景:数据呈正态、简单传感器数据
  • 优点:实现简单、速度快
  • 缺点:对噪声敏感,适用面有限

(2) IQR(四分位数)

  • 原理:基于箱线图离群点规则
  • 适用场景:分布未知的小规模数据
  • 优点:不依赖分布
  • 缺点:无法处理复杂序列

(3) KNN 异常检测

  • 原理:基于样本到邻居的距离
  • 适用场景:低维数据,特征稳定的场景
  • 优点:直观、容易实现
  • 缺点:高维时计算大,实时性差

(4) LOF(Local Outlier Factor)

  • 原理:比较局部密度差异
  • 适用场景:工业多传感器数据异常
  • 优点:适合密度不均的复杂数据
  • 缺点:参数敏感

2. 基于概率模型的方法

(1) GMM(Gaussian Mixture Model)高斯混合模型

  • 原理:使用多个高斯分布描述正常行为
  • 适用场景:传感器数据聚类、设备状态识别
  • 优点:能模拟复杂分布
  • 缺点:需要大量数据拟合

(2) HMM(隐马尔可夫模型)

  • 原理:对时间序列状态进行建模
  • 适用场景:转速信号、振动序列
  • 优点:可解释性好,适合序列
  • 缺点:难以表示复杂工业系统

3. 基于监督/半监督学习的方法

(1) SVM / One-Class SVM

  • 原理:用超平面包围正常数据
  • 适用场景:无异常标签或少量异常标签
  • 优点:效果稳定,适合小数据
  • 缺点:不适合大规模数据

(2) Isolation Forest(孤立森林)

  • 原理:随机切分特征空间,异常点更容易被隔离
  • 适用场景:工业设备异常检测最常用
  • 优点:快、适合大规模、多维数据
  • 缺点:对时间序列依赖弱

4. 深度学习方法(工业检测主流)

4.1 自编码器(AutoEncoder)

(1) AE / DAE(去噪自编码器)

  • 原理:只用正常数据训练重构网络,异常重构误差大
  • 适用场景:多传感器、振动、声音
  • 优点:工业视觉、信号监测常用
  • 缺点:对工况变化敏感

(2) VAE(变分自编码器)

  • 适用场景:复杂非线性信号
  • 优点:更稳定的潜空间
  • 缺点:训练复杂

4.2 时间序列模型

(1) LSTM / GRU 异常检测

  • 原理:预测下一时刻值或重构序列
  • 适用场景:振动序列、温度序列、压力波形
  • 优点:适合时间依赖
  • 缺点:训练慢

(2) LSTM AutoEncoder

  • 适用场景:设备长期监测最常用
  • 优点:效果优秀,模型小
  • 缺点:需大量正常数据

(3) Transformer 异常检测

如 Informer、Anomaly Transformer

  • 适用场景:多维序列,大规模数据
  • 优点:处理长序列能力强
  • 缺点:计算量大

4.3 GAN(生成对抗网络)

  • 原理:通过生成-判别重构异常
  • 适用场景:工业视觉、图像缺陷检测
  • 优点:效果最好之一
  • 缺点:训练不稳定

5. 工业视觉特有的异常检测方法

(1) CNN 特征 + Isolation Forest

  • 适用于表面缺陷检测

(2) 深度图像重构(AE / VAE / GAN)

  • 适合表面瑕疵、小样本缺陷检测

(3) 卷积 AutoEncoder + 像素级误差

  • 工业视觉业内最常用

6. 典型工业应用场景对应方法

工业场景推荐算法
振动信号(轴承/电机)LSTM-AE、One-Class SVM、Isolation Forest
多传感器 IoT 监控Isolation Forest、GMM、AutoEncoder
表面缺陷检测AE/VAE/GAN,CNN+IF
工业声学检测LSTM、AE、Spectrogram+CNN
设备健康评估HMM、LSTM、Transformer

MachineLearningNote

因为下面所有的机器学习代码均使用了sklearn,这里也补充了一下Sklearn的学习博客:

1,logistic Regression

关于逻辑回归文件夹中的数据和代码,详情请参考博客:

2,Decision Tree

关于决策树文件夹中的数据和代码,详情请参考博客:

3,K-NearestNeighbor(KNN)

关于K近邻文件夹中的代码和数据,详情请参考博客:

4,Naive Bayes

关于朴素贝叶斯文件夹中的代码,详情请参考博客:

5,K-Means&DBSCAN

关于K-Means&DBSCAN文件夹中的代码和数据,详情请参考博客:

6,Ensemble Learning

关于集成学习文件夹中的代码,详情请参考博客:

7,One Class SVM

关于单样本分类文件夹中的代码,详情请参考博客:

8,PCA

关于PCA降维算法文件夹中的代码,详情请参考博客:

9,LDA

关于LDA降维文件夹中的代码,详情请参考博客:

10,EM(GMM)

关于EM算法文件夹中的代码,详情请参考博客:

11,SVM

关于SVM算法文件夹中的代码,详情请参考博客:

12,XGBoost

关于XGBoost算法文件夹中的代码,详情请参考博客:

13,IsolationForest

关于IsolationForest算法文件夹中的代码,详情请参考博客:

14,RamdomForest

关于RamdomForest算法文件夹中的代码,详情请参考博客:

15,Local Outlier Factor(LOF)

关于 Local Outlier Factor(LOF) 算法文件夹中的代码,详情请参考博客:

16,SVD

关于 SVD 算法文件夹中的代码,详情请参考博客: