4、传统异常检测方法:统计方法(均值方差、Z-score)、基于距离的方法(KNN、LOF)、基于密度的方法,优缺点对比
在传感器数据异常检测的工程实践中,TFLite Micro 提供了强大的边缘端推理能力,但模型的有效性高度依赖于前端特征提取与基线判定方法的选择。传统异常检测方法——统计方法、基于距离的方法、基于密度的方法——构成了绝大多数轻量级检测系统的数学基石。它们不依赖大量标注样本,计算开销可控,非常适合部署在 Cortex-M 系列等资源受限的 MCU 上。本章将系统梳理这三类方法的数学原理、判定逻辑、适用边界与工程代价,并通过一个振动传感器实例展示如何在实际项目中组合使用这些方法。
4.1 统计方法:均值方差与 Z-score
4.1.1 核心原理
统计方法假设正常传感器数据服从或近似服从正态分布(高斯分布)。对于采集到的样本序列 \( x_1, x_2, ..., x_n \),计算均值 \( \mu \) 和标准差 \( \sigma \)。根据正态分布的性质,约 99.7% 的数据落在 \( \mu \pm 3\sigma \) 区间内。因此,超出该区间的样本点被视为异常。Z-score 是这一思想的标准化形式:\( Z_i = (x_i - \mu) / \sigma \),当 \( |Z_i| > 3 \) 时判定为异常。该方法在 MCU 上实现时仅需维护两个累加器(用于计算均值和方差),内存占用极小。
4.1.2 判断方法或操作流程
- 离线训练阶段:采集一段正常工况下的传感器数据(建议至少 1000 个样本点),计算均值 \( \mu \) 和标准差 \( \sigma \)。
- 阈值设定:根据实际需求选择 k 值(通常 k=2.5~3.5)。k 值越小,灵敏度越高但误报率也越高。
- 在线检测阶段:对每个新样本计算 \( |x_i - \mu| / \sigma \),若超过 k 则触发异常标志。
- 滑动窗口更新:在非异常状态下,每 N 个样本(如 100 个)用滑动平均法更新 \( \mu \) 和 \( \sigma \),以适应缓慢的传感器漂移。
4.1.3 案例拆解:工业振动传感器温度漂移检测
某旋转机械的加速度传感器输出 1kHz 采样率的振动数据。正常运行时,振动 RMS 值稳定在 0.8g 左右,标准差 0.1g。某日,由于轴承润滑不良,RMS 值缓慢上升至 1.2g。使用 Z-score 方法,设定 k=3,则阈值上限为 \( 0.8 + 3 \times 0.1 = 1.1g \)。当 RMS 超过 1.1g 时系统报警。实际运行中,该方法在第 47 分钟时触发报警,而人工巡检在第 2 小时才发现异常。但该方法对突发性冲击(如刀具断裂)不敏感,因为冲击信号持续时间短,对 RMS 均值影响有限。
4.1.4 常见误区与总结
- 误区一:直接对原始波形做 Z-score,忽略了传感器噪声的非高斯性。建议先提取特征(如峰值、RMS、频谱能量)。
- 误区二:固定阈值不更新。传感器会随温度、老化产生漂移,必须定期更新基线。
- 误区三:将多变量问题拆成多个单变量分别检测,忽略了变量间的相关性。
| 统计方法子类型 | 计算复杂度 | 内存占用 | 适用数据维度 | 主要局限 |
|---|---|---|---|---|
| 均值方差法 | O(1) | 2 个浮点数 | 单变量 | 对非正态分布失效 |
| Z-score 固定阈值 | O(1) | 2 个浮点数 | 单变量 | 无法检测局部异常 |
| 滑动窗口 Z-score | O(W) | W 个样本 | 单变量 | 窗口大小敏感 |
| IQR 四分位距法 | O(n log n) | 需存储全部样本 | 单变量 | 不适合在线流式处理 |
4.2 基于距离的方法:KNN 与最近邻距离
4.2.1 核心原理
距离方法的基本假设是:异常样本在特征空间中远离大多数正常样本。KNN(K-Nearest Neighbors)异常检测不直接做分类,而是计算每个样本到其 k 个最近邻居的平均距离。如果该距离显著大于数据集中其他样本的平均距离,则该样本为异常。对于传感器数据,特征向量可以是滑动窗口内的统计量(均值、方差、峰值)、频域特征(FFT 各频段能量)或时频特征。距离度量常用欧氏距离,但在不同特征量纲差异大时需先做标准化。
4.2.2 判断方法或操作流程
- 特征提取:将原始时间序列切分为长度为 L 的窗口,每个窗口提取 d 维特征向量。
- 离线建模:对正常数据集中的 N 个特征向量,计算两两之间的距离矩阵(N×N),存储每个样本的 k 近邻平均距离。
- 阈值确定:取所有正常样本 k 近邻距离的 95% 或 99% 分位数作为阈值。
- 在线检测:新样本到达时,计算它与所有历史正常样本的距离,取最小的 k 个距离求平均,若超过阈值则报警。
4.2.3 案例拆解:多轴加速度计装配异常检测
在电子产品装配线上,三轴加速度计用于检测螺丝拧紧过程中的冲击波形。正常装配的冲击特征在三维空间中形成两个密集簇(对应两种不同型号的外壳)。某次装配中,由于螺丝刀扭矩异常,产生了一个偏离两个簇的孤立特征点。使用 KNN 方法(k=5),该点的平均最近邻距离为 4.2,而正常样本的平均距离为 1.1,阈值设为 2.5,因此被正确判定为异常。相比之下,若使用单变量 Z-score 分别检测三个轴,该异常点在 X 轴上的 Z-score 仅为 1.8,无法触发报警。
4.2.4 常见误区与总结
- 误区一:未对特征做标准化。加速度计三个轴的量纲相同,但若混合温度、湿度等不同量纲特征,必须标准化。
- 误区二:k 值选择不当。k 太小(如 1)对噪声敏感;k 太大(如 N/2)会平滑掉局部异常。
- 误区三:忽略数据分布的多簇特性。KNN 对多簇数据效果较好,但若簇间距离差异大,需考虑使用局部方法。
4.3 基于密度的方法:LOF(局部离群因子)
4.3.1 核心原理
LOF 方法克服了 KNN 的全局视角缺陷,它关注的是样本相对于其局部邻域的密度。对于每个样本 p,计算其第 k 距离邻域内的局部可达密度(LRD),然后与邻域内其他样本的 LRD 比较,得到局部离群因子 LOF(p)。若 LOF(p) 远大于 1,说明 p 的密度显著低于其邻居,即为异常。LOF 特别擅长检测那些在全局距离上不突出、但在局部区域密度突变的样本——例如,一个样本虽然距离正常簇中心不远,但处于两个正常簇之间的稀疏地带。
4.3.2 判断方法或操作流程
- 计算 k 距离:对每个样本 p,找到其第 k 近邻的距离 \( k\_dist(p) \)。
- 计算可达距离:\( reach\_dist_k(p, o) = max(k\_dist(o), dist(p, o)) \),其中 o 是 p 的邻居。
- 计算局部可达密度:\( LRD_k(p) = 1 / ( \sum_{o \in N_k(p)} reach\_dist_k(p, o) / |N_k(p)| ) \)。
- 计算 LOF:\( LOF_k(p) = ( \sum_{o \in N_k(p)} LRD_k(o) / |N_k(p)| ) / LRD_k(p) \)。
- 判定:LOF 值大于 1.5~2 时视为异常(具体阈值需根据数据分布调整)。
4.3.3 案例拆解:环境传感器多模态漂移检测
一个温湿度传感器节点部署在数据中心机房。正常运行时,温度在 20~25°C、湿度在 40%~60% 范围内波动,形成椭圆形分布。当空调故障时,温度缓慢上升至 30°C,湿度下降至 30%,数据点沿对角线方向漂移。这些漂移点与正常簇的欧氏距离并不大(因为温湿度同时变化,综合距离可能仍在正常范围内),但它们在局部区域形成了低密度轨迹。LOF 方法成功检测出这些漂移点(LOF 值从 1.0 升至 2.3),而 KNN 和 Z-score 均未报警。该案例说明,当异常表现为“组合特征偏移”而非“单特征超限”时,密度方法具有明显优势。
4.3.4 常见误区与总结
- 误区一:直接使用原始时间序列计算 LOF。必须先提取特征并去除时间相关性。
- 误区二:忽略参数 k 的敏感性。建议在训练集上做参数扫描,选择使异常分数分布最稳定的 k。
- 误区三:将 LOF 阈值设为固定值。不同传感器、不同工况下 LOF 的基线不同,应使用正常数据的 95% 分位数动态设定。
4.4 三类方法综合对比与选型建议
| 对比维度 | 统计方法(Z-score) | 距离方法(KNN) | 密度方法(LOF) |
|---|---|---|---|
| 数据分布假设 | 正态分布 | 无明确假设 | 局部密度可比 |
| 计算复杂度(在线) | O(1) | O(N·d) | O(N·d)(简化版) |
| 内存需求 | 极低(<1KB) | 中(需存 N 个特征) | 中高(需存 N 个特征及距离矩阵) |
| 多变量支持 | 弱(需逐维处理) | 强(直接计算多维距离) | 强(天然支持多维) |
| 局部异常检测能力 | 无 | 弱 | 强 |
| 对参数敏感性 | 低(仅 k 值) | 中(k 和距离度量) | 高(k 和阈值) |
| MCU 部署难度 | 极易 | 中等 | 较难 |
| 典型延迟 | 微秒级 | 毫秒级(N≤500) | 秒级(离线) |
4.5 实战中的组合策略与调优经验
在实际传感器系统中,没有任何单一方法能应对所有异常模式。例如,Z-score 擅长检测幅值突变,但对缓变漂移不敏感;KNN 能捕捉多变量联合异常,但计算开销大;LOF 能发现局部密度异常,但参数调优复杂。一个经过验证的组合策略是:
- 特征工程:从原始波形中提取 5~8 个特征,包括 RMS、峰值因子、波形因子、频谱质心、频带能量比等。
- 粗筛层:对每个特征独立计算 Z-score,若任一特征超过 4σ,直接判定为异常(快速响应)。
- 精判层:对通过粗筛的样本,计算其到历史正常样本的 KNN 距离(k=10),若超过 95% 分位数,则标记为疑似异常。
- 模型层:将疑似异常的特征向量输入 TFLite Micro 上的 Autoencoder 模型,重建误差超过阈值则确认异常。
总结而言,统计方法是最轻量的第一道防线,距离方法是可靠的多维判定器,密度方法则是处理复杂分布的高级工具。在 TFLite Micro 的约束下,合理搭配这三类方法,可以在有限资源内实现高精度的传感器异常检测。开发时应先从统计方法入手建立基线,再逐步引入距离和密度方法,每增加一层都要评估其带来的计算开销和误报率变化。