设备运行数据中混入少量异常记录时,怎样描述大多数样本之间的正常关系?
假设工厂记录了电机的温度和振动强度。正常情况下,两者会一起缓慢变化;传感器故障却可能产生“温度很低、振动很高”的记录。普通协方差会把这些点也计算进去,结果可能偏离正常工况。此时需要的是对异常样本不那么敏感的协方差估计。
| 记录 | 温度(℃) | 振动(mm/s) | 数据情形 |
|---|---|---|---|
| A | 60.1 | 2.0 | 正常工况 |
| B | 61.8 | 2.3 | 正常工况 |
| C | 58.9 | 1.8 | 正常工况 |
| D | 59.5 | 2.1 | 正常工况 |
| E | 42.0 | 8.5 | 待核验的异常记录 |
这张表用于说明场景。后面的代码会生成足够多的模拟数据,使用sklearn.covariance.MinCovDet建立稳健基准,再用马氏距离观察偏离程度。
文章目录
- MinCovDet
- 从“所有点的平均关系”到“主要样本的稳定关系”
- sklearn 实现
- Sklearn API参数详解与调参
- 应用案例
- 案例一:模拟粮仓记录中的异常批次核验
- 案例二:设备上线后的工况漂移观察
- 总结
MinCovDet
从“所有点的平均关系”到“主要样本的稳定关系”
MinCovDet 是 Minimum Covariance Determinant,即最小协方差行列式估计。协方差矩阵描述各个变量如何共同变化,行列式可以理解为数据椭球体积的一个尺度。MCD 的基本想法是在固定数量的样本子集中,寻找协方差行列式较小的那一组,降低远离主要分布的样本对结果的影响。
设数据共有n nn个样本,每个样本有p pp