异常检测与根因分析
定义
异常检测是从海量生产数据中自动识别偏离正常模式的异常事件;根因分析是在检测到异常后,追溯导致异常的根本原因。两者构成”发现问题→定位原因”的闭环。
异常的类型
时序异常(设备/传感器数据)
| 类型 | 表现 | 典型场景 |
|---|
| 突刺(Spike) | 瞬间大幅偏离 | 传感器故障、电磁干扰 |
| 漂移(Drift) | 缓慢持续偏移 | 传感器老化、设备磨损 |
| 周期破坏 | 正常周期被打破 | 轴承故障引起振动模式变化 |
| 死值(Flatline) | 值长时间不变 | 传感器断线、采集故障 |
过程异常(生产过程数据)
| 类型 | 表现 | 典型场景 |
|---|
| 参数越界 | 工艺参数超出正常范围 | 温度过高、压力异常 |
| 质量突变 | 良率突然下降 | 原料批次问题、设备劣化 |
| 节拍异常 | 生产速度显著变化 | 设备降速、物料卡顿 |
| 产量偏差 | 实际与计划偏差大 | 停机、待料、人员不足 |
异常检测方法
统计方法
- 3σ规则:超过均值±3σ即为异常(适用于正态分布)
- 控制图:Xbar-R图、EWMA图、CUSUM图
- IQR方法:Q1-1.5×IQR ~ Q3+1.5×IQR 为正常范围
机器学习方法
| 算法 | 原理 | 适用场景 |
|---|
| Isolation Forest | 异常点更容易被孤立 | 多维数据、无标签 |
| LOF | 局部密度偏离 | 局部异常 |
| One-Class SVM | 学习正常边界 | 小样本 |
深度学习方法
| 算法 | 原理 | 适用场景 |
|---|
| AutoEncoder | 重建误差大的为异常 | 高维数据、复杂模式 |
| LSTM-AE | 时序数据的自编码器 | 时序异常检测 |
| Transformer | 注意力机制捕捉长程依赖 | 多变量时序 |
方法选择决策树
有标注数据?
├── 是 → 用有监督模型(分类器)
└── 否 → 数据维度?
├── 低维(<10)→ 统计方法(控制图/3σ)
└── 高维 → 样本量?
├── 少 → One-Class SVM
└── 多 → Isolation Forest / AutoEncoder
根因分析
从异常到根因的推理链
异常检测 → 影响范围确认 → 相关因素筛选 → 因果推断 → 根因确认 → 纠正措施
│ │ │ │ │ │
"良率下降" "3号产线" "温度/原料/设备" "温度偏移" "加热器老化" "更换加热器"
知识图谱驱动的根因分析
构建工厂实体关系图谱:
设备 ──生产──→ 工序 ──消耗──→ 物料
│ │ │
├──采集──→ 参数 ├──批次──→ 供应商
│ │
└──影响──→ 质量 ←──影响──┘
当检测到”良率异常”时:
- 查图谱找到关联的设备、工序、物料
- 检查各关联节点的数据是否也有异常
- 沿因果链溯源,定位最可能的根因节点
因果推断方法
| 方法 | 思路 | 适用场景 |
|---|
| 相关性筛选 | 找与异常时间相关的其他变量 | 初步缩小范围 |
| 格兰杰因果 | A的变化是否在B之前发生 | 时序因果方向 |
| PC算法 | 基于条件独立性构建DAG | 多变量因果图 |
| do-演算 | Pearl的因果推理框架 | 干预效果评估 |
端到端系统架构
数据采集层 分析层 应用层
┌───────────┐ ┌───────────┐ ┌───────────┐
│ SCADA │ │ Flink实时 │ │ 告警通知 │
│ MES │──→ Kafka ──→│ 异常检测 │──→ 告警 ──→│ 根因看板 │
│ QMS │ │ 特征计算 │ │ 知识沉淀 │
└───────────┘ └───────────┘ └───────────┘
│
离线训练
│
┌───────────┐
│ 根因图谱 │
│ 因果模型 │
└───────────┘
大数据工程师的角色
| 环节 | 数据工作 |
|---|
| 数据准备 | 整合 SCADA/MES/QMS 多源数据,对齐时间戳 |
| 特征工程 | 滑动窗口统计特征、频域特征、趋势特征 |
| 实时检测 | 实时数据流水线 上的 Flink 异常检测算子 |
| 模型管理 | 异常检测模型的版本管理、A/B测试、效果监控 |
| 图谱构建 | 从 数仓 中抽取实体关系,构建知识图谱 |
关联指标