真实面经题目 · 原创解析
时间序列数据中如何检测异常值?在传感器场景下如何判断当前点是否异常?
这题考时间序列异常检测的系统思维。不能只说 3σ 或箱线图,而要结合趋势、季节性、周期、噪声、传感器物理边界和业务代价。判断当前传感器点是否异常时,应比较它与历史基线、近期窗口、同类传感器、预测区间和物理约束的偏离程度,并区分点异常、上下文异常和持续漂移。
真实面经题目 · 原创解析
这题考时间序列异常检测的系统思维。不能只说 3σ 或箱线图,而要结合趋势、季节性、周期、噪声、传感器物理边界和业务代价。判断当前传感器点是否异常时,应比较它与历史基线、近期窗口、同类传感器、预测区间和物理约束的偏离程度,并区分点异常、上下文异常和持续漂移。
我会先区分时间序列异常的类型:单点尖刺、持续偏移、趋势突变、周期异常、缺失和传感器卡死。方法上,简单场景可以用滑动窗口均值/中位数、标准差、MAD、IQR 或 EWMA 建立动态阈值;有明显周期时要先做趋势和季节性分解,比如按小时、星期、节假日建立同周期基线,再看残差是否异常;更复杂时可以用 ARIMA、Prophet、状态空间模型、LSTM/自编码器或 Isolation Forest 等模型预测当前值,并用预测区间判断异常。传感器场景下,判断当前点是否异常不能只和全局均值比,而要看它是否超出物理范围,是否相对最近窗口突变,是否偏离同一时间段历史模式,是否和相邻或同类传感器不一致,是否连续多点异常,以及是否存在采集延迟、丢包、设备重启或校准变化。最终要根据误报和漏报成本设置阈值,并用人工标注、告警命中率、召回率、平均发现时间和业务影响评估效果。
时间序列异常不只有离群点。点异常是某个时刻突然过高或过低;上下文异常是在特定时间段不合理,比如凌晨流量高峰;集体异常是一段时间整体偏移;还有趋势突变、周期消失、数据缺失、重复值和传感器卡死。不同异常类型需要不同方法。
如果序列稳定、没有明显周期,可以用均值加减 3σ、IQR 或分位数阈值检测异常。但很多真实序列有趋势和季节性,直接用全局均值会把正常高峰误判为异常,也会漏掉低谷期的小幅异常。因此静态阈值通常只能作为基线或物理边界。
判断当前点时常用最近 N 个点建立局部基线,例如滑动均值、滑动中位数、标准差、MAD、EWMA。MAD 和中位数对尖刺更稳健,EWMA 对近期变化更敏感。当前值若相对局部基线的残差超过阈值,就可标记为候选异常。
很多业务和传感器数据有小时、日、周周期。此时应比较当前点与历史同一时段的分布,例如过去几周同一小时的均值、分位数或预测区间。也可以先做 STL 分解,把序列拆成趋势、季节项和残差,再对残差做异常检测。
当序列受多变量影响或模式复杂时,可以使用 ARIMA、状态空间、Prophet、机器学习回归、Isolation Forest、自编码器或 LSTM 预测当前值,并计算预测误差。关键不是模型名字,而是输出可解释的正常区间,并用验证集控制误报率和漏报率。
传感器异常判断必须结合设备常识。比如温度、压力、电流有物理上下界;相邻传感器不应在同一环境下差异过大;读数长时间不变可能是卡死;突然跳变后又恢复可能是噪声或采集错误;多个传感器同时变化可能是真实环境变化,而非单点故障。
单个点超阈值只是候选异常,不一定立刻告警。可以设置连续 K 点异常、异常面积、变化率阈值和恢复确认,减少误报。若业务对漏报特别敏感,可以先告警再分级;若误报成本高,则要求多证据一致,比如局部残差、同周期残差和同类传感器对比都异常。
异常检测的效果不能只看准确率,因为异常样本少。应看 precision、recall、F1、PR-AUC、误报率、漏报率、平均发现时间、告警延迟和人工处理成本。传感器场景还要评估是否能提前发现设备故障,以及是否避免了业务损失。
不一定。3σ 假设序列相对稳定且噪声近似正态。若存在季节性、趋势或异常点污染均值方差,3σ 会误判。应结合局部窗口、同周期基线和业务约束。
先标为候选点异常,检查变化率、采集状态和相邻传感器。如果只有单点跳变且无其他证据,可能是噪声;可用连续 K 点规则或平滑策略避免误报。
不一定。多个相邻传感器同时变化可能是真实环境变化或上游系统事件;单个传感器偏离其他同类设备才更像设备故障。需要做空间或同类对比。
可以先用无监督或规则方法建立候选集,如分位数、MAD、STL 残差、Isolation Forest,再抽样人工审核,逐步形成标注集和阈值策略。
用分级告警、连续异常确认、恢复通知合并、同源异常聚合和业务影响排序。不要每个超阈值点都单独报警。