3、异常检测概念:异常类型、异常评分与二分类告警、评估指标
TinyML 传感器异常检测的核心任务,是从连续采集的时序数据中识别出“不正常”的模式。与传统的阈值告警(如温度超过 80°C 就报警)不同,异常检测需要回答三个递进的问题:什么是异常?如何量化异常?如何评估检测得好不好?本章将围绕这三个问题,系统梳理异常的类型划分、评分与告警的差异,以及分类评估指标的计算逻辑与适用场景,为后续调参提供理论基准。
3.1 异常类型:从数据形态到业务语义
3.1.1 核心原理:三类异常的数学定义
在 TinyML 传感器场景中,异常类型决定了特征提取方式与模型选择。根据 Hawkins 的经典定义与时间序列异常检测的扩展,异常可分为三类:
- 点异常(Point Anomaly):单个数据点相对于全局分布显著偏离。例如加速度计在平稳运行时突然出现一个 5g 的尖峰,该点本身即为异常。数学上,若
x(t)满足|x(t) - μ| > 3σ(μ 为均值,σ 为标准差),则可视为点异常。 - 上下文异常(Contextual Anomaly):数据点在全局范围内正常,但在特定上下文(时间、季节、工况)下异常。例如电机在 25°C 环境温度下正常振动幅度为 0.5g,但在 60°C 高温下振动幅度达到 0.5g 则属于异常——因为高温下轴承润滑变差,正常振动应更高。上下文异常必须结合时间戳、环境变量或工况标签判断。
- 集体异常(Collective Anomaly):单个数据点正常,但一组连续数据点的联合模式异常。例如振动传感器连续 10 个周期出现幅值递增的脉冲序列,每个脉冲本身在正常范围内,但整体模式表明轴承出现早期点蚀。
3.1.2 判断方法:如何区分三类异常
在实际工程中,可通过以下流程快速分类:
- 单点检验:计算每个采样点的 z-score(
z = (x - μ) / σ),若 |z| > 3 则标记为候选点异常。 - 上下文检验:将数据按工况标签(如温度区间、转速档位)分组,在每组内重新计算 μ 和 σ,再检验单点是否偏离组内分布。
- 序列模式检验:对连续窗口(如 128 点)提取特征(峰值、频谱能量、过零率),用滑动窗口检测特征序列是否出现突变或周期性异常。
下表总结了三类异常在 TinyML 传感器中的典型表现与检测策略:
| 异常类型 | 传感器示例 | 特征表现 | 推荐检测方法 |
|---|---|---|---|
| 点异常 | 加速度计 | 单轴瞬时尖峰 | z-score、固定阈值 |
| 上下文异常 | 温度+振动 | 特定温度下振动偏高 | 条件归一化、回归残差 |
| 集体异常 | 电流传感器 | 连续脉冲序列 | 滑动窗口特征、序列模型 |
3.1.3 案例拆解:工业泵振动监测
某工厂在离心泵上部署了 TinyML 振动监测节点,采样率 2kHz,每 10 秒上传一次特征。初始阶段使用固定阈值(振动幅值 > 2g 告警),但现场出现两类误报:
- 误报场景 A:泵启动瞬间产生 3g 的瞬时冲击,持续 50ms,属于正常启动过程,但被判定为点异常。
- 误报场景 B:泵在低负荷运行时振动幅值 1.2g,高负荷时 1.8g,均属正常。但固定阈值 1.5g 导致高负荷时频繁告警。
分析后发现:场景 A 是点异常但属于“已知正常事件”,场景 B 是上下文异常(负荷为上下文变量)。解决方案:
- 对启动过程建立“启动窗口”标记,在启动后 2 秒内禁用告警。
- 引入负荷信号(通过电流互感器采集),将振动幅值除以负荷值进行归一化,再计算 z-score。
改进后,误报率从 12 次/天降至 1 次/天,且成功捕获了轴承早期故障(表现为连续 5 个周期的振动递增,属于集体异常)。
3.2 异常评分与二分类告警:从连续值到决策
3.2.1 核心原理:评分是连续谱,告警是离散决策
异常评分(Anomaly Score)是模型输出的连续值,表示数据点或窗口的“异常程度”。常见评分方式包括:
- 距离度量:如马氏距离、欧氏距离到正常簇中心的距离。
- 重构误差:自编码器输入与输出的 MSE(均方误差)。
- 概率密度:高斯混合模型输出的负对数似然。
- 隔离森林:路径长度的倒数。
二分类告警则是将评分与阈值 θ 比较,输出“正常(0)”或“异常(1)”。评分与告警的本质区别在于:评分保留了不确定性信息,告警则丢弃了程度信息。例如,评分 0.9 与 0.6 都触发告警,但 0.9 的异常置信度远高于 0.6,这在后续人工复核或自动处置时具有不同意义。
3.2.2 判断方法:阈值选择与告警策略
阈值 θ 的选择直接影响告警的敏感性与特异性。常用方法包括:
- 分位数法:在训练集上计算评分的 95% 或 99% 分位数作为 θ。适用于评分分布稳定的场景。
- 代价敏感法:定义误报代价 CFP 和漏报代价 CFN,选择使总代价最小的 θ。例如,设备损坏代价远高于误报代价时,应降低 θ 以提高召回率。
- 动态阈值:根据时间或工况调整 θ。例如,夜间环境噪声低,可降低 θ;白天环境噪声高,可提高 θ。
下表对比了评分与告警在不同场景下的适用性:
| 维度 | 异常评分 | 二分类告警 |
|---|---|---|
| 输出形式 | 连续值(0~1 或 0~∞) | 离散值(0/1) |
| 信息量 | 保留异常程度 | 丢失程度信息 |
| 存储开销 | 需存储评分序列 | 仅存储告警事件 |
| 调参灵活性 | 可事后调整阈值 | 需重新训练或重设阈值 |
| TinyML 适用性 | 适合边缘端持续监控 | 适合低功耗事件触发 |
3.2.3 案例拆解:电池温度异常评分调参
某储能系统在电池模组上部署温度传感器,使用自编码器计算重构误差作为异常评分。初始阈值设为 0.05,导致以下问题:
- 夏季高温时段,正常温度波动较大,重构误差经常超过 0.05,产生大量误报。
- 冬季低温时段,电池温度变化平缓,早期热失控(温度缓慢上升)的重构误差仅为 0.03,未触发告警。
分析发现:评分分布随环境温度变化而漂移。解决方案:
- 将环境温度作为条件变量,训练条件自编码器(输入为电池温度+环境温度)。
- 在验证集上绘制不同环境温度区间下的评分分布,分别设定 θ高温=0.08、θ常温=0.05、θ低温=0.03。
- 在边缘端部署分段阈值查找表,每 5 分钟根据环境温度切换 θ。
调参后,误报率降低 70%,且成功提前 15 分钟捕获了一次热失控前兆(评分从 0.02 缓慢升至 0.04,超过低温阈值 0.03)。
3.3 评估指标:精确率、召回率、F1 与 AUC
3.3.1 核心原理:混淆矩阵与指标定义
评估异常检测模型需要对比预测结果与真实标签。混淆矩阵定义如下:
- TP(真阳性):实际异常,预测异常。
- FP(假阳性):实际正常,预测异常(误报)。
- TN(真阴性):实际正常,预测正常。
- FN(假阴性):实际异常,预测正常(漏报)。
基于混淆矩阵,核心指标为:
- 精确率(Precision) = TP / (TP + FP),衡量告警的“纯度”。
- 召回率(Recall) = TP / (TP + FN),衡量对异常的“捕获率”。
- F1 分数 = 2 × (P × R) / (P + R),精确率与召回率的调和平均,适用于类别不平衡场景。
- AUC(Area Under ROC Curve):ROC 曲线下的面积,衡量模型在不同阈值下的排序能力,AUC=0.5 表示随机猜测,AUC=1.0 表示完美排序。
3.3.2 判断方法:如何选择评估指标
指标选择取决于业务目标:
- 误报代价高(如频繁误报导致运维人员麻木):优先优化精确率。
- 漏报代价高(如设备损坏或安全事故):优先优化召回率。
- 两者均衡:使用 F1 分数。
- 阈值未定:使用 AUC 评估模型本身的排序能力,不依赖具体阈值。
下表展示了不同场景下的指标优先级:
| 应用场景 | 误报代价 | 漏报代价 | 首选指标 |
|---|---|---|---|
| 消费电子(如手机跌落检测) | 低(仅弹窗提示) | 中(用户可能忽略) | 召回率 |
| 工业设备预测性维护 | 中(停机检查成本) | 高(设备损坏) | F1 或召回率 |
| 医疗可穿戴(如跌倒检测) | 高(占用急救资源) | 极高(生命危险) | 召回率为主,精确率辅助 |
| 安防入侵检测 | 高(出警成本) | 高(安全事件) | F1 或 AUC |
3.3.3 案例拆解:智能门磁异常检测的指标权衡
某智能家居门磁传感器使用 TinyML 检测“非法闯入”与“正常开门”的差异。模型输出异常评分,需设定告警阈值。初始阈值设为 0.5,在测试集(100 个正常事件,20 个异常事件)上得到:TP=15,FP=8,FN=5,TN=92。
计算指标:
- 精确率 = 15 / (15+8) = 65.2%
- 召回率 = 15 / (15+5) = 75.0%
- F1 = 2 × (0.652 × 0.75) / (0.652 + 0.75) = 69.8%
分析发现:8 次误报中有 6 次是“快递员短暂开门后立即关门”,属于正常行为但评分偏高。5 次漏报中有 3 次是“缓慢推门”导致评分偏低。
调参过程:
- 将阈值从 0.5 降至 0.4,召回率提升至 85%,但精确率降至 55%。
- 引入“开门持续时间”特征:若开门时间 < 3 秒且评分 < 0.6,则判定为正常。该规则将 FP 从 8 降至 3。
- 最终阈值 0.45 + 持续时间规则,得到精确率 83.3%,召回率 85%,F1=84.1%。
同时计算 AUC:通过改变阈值绘制 ROC 曲线,AUC=0.91,表明模型排序能力良好,主要问题在于阈值选择而非模型本身。
3.3.4 常见误区与总结
- 误区一:只看准确率(Accuracy)。在异常检测中,异常样本通常占比极低(如 1%),即使全部预测为正常,准确率也有 99%,但模型毫无价值。必须使用精确率、召回率或 F1。
- 误区二:忽略类别不平衡。TinyML 传感器数据中,正常样本远多于异常样本。训练时需使用加权损失或过采样/欠采样,评估时使用 PR 曲线而非 ROC 曲线(ROC 在极端不平衡下过于乐观)。
- 误区三:固定阈值不调整。传感器数据分布会随环境、老化、季节变化,阈值应定期用新数据重新校准。
- 误区四:混淆“评分”与“概率”。自编码器的重构误差不是概率,不能直接与 0.5 比较。需先通过验证集将评分映射到概率或直接使用分位数阈值。
总结:异常检测的评估是一个多目标权衡过程。在 TinyML 资源受限环境下,建议采用“离线 AUC 评估 + 在线 F1 调参”的双层策略:离线阶段用 AUC 筛选模型结构,在线阶段用 F1 调整阈值与规则,最终实现误报与漏报的平衡。