设备多周同日读数场景下的离群点检测最优算法咨询
周期时序设备读数场景的离群点检测方案
该场景属于带固定周/日双重周期的低维时序离群点检测,不存在通用的"最优算法",但按适配优先级排序,以下方案的效果稳定性、复现成本都优于盲试通用离群算法的思路:
优先选时序专属检测方法,效果鲁棒性远高于通用无监督算法
之前试用的iForest、OCSVM都属于通用表格离群检测算法,没有把数据的周期规律纳入建模,效果波动、难复现是正常的,优先试两个轻量方案:- STL分解+残差阈值法:按设备维度对时序做STL分解,剥离趋势项、周/日周期项后,对剩余残差用3σ或IQR规则判异常。对这种明确偏离正常周期模式的点异常、小集群异常检测效果极稳,几乎不需要调复杂参数,复现成本极低。现有字段里的
nv_zscore属于未剥离周期/趋势的简化统计量,检测精度会比残差法差一截。 - Matrix Profile(矩阵轮廓):专门面向时序场景的异常检测算法,只要输入数据的固定周期长度(单周采样点总数为
7*24=168,单日为24),就能直接计算每个点所在子序列与正常模式子序列的匹配距离,距离超阈值即为异常,对集体离群、单点离群的检测精度普遍高于通用无监督算法,参数极少,不需要标注数据支撑。
- STL分解+残差阈值法:按设备维度对时序做STL分解,剥离趋势项、周/日周期项后,对剩余残差用3σ或IQR规则判异常。对这种明确偏离正常周期模式的点异常、小集群异常检测效果极稳,几乎不需要调复杂参数,复现成本极低。现有字段里的
要复现之前OCSVM的最优效果,按固定流程调参即可
低维时序特征下OCSVM的边界刻画能力本身就比iForest强,之前复现失败基本是特征处理和参数没对齐,按以下流程跑基本能找回最优结果:- 特征不要直接扔原始
day/interval整数值,转成sin/cos周期编码,保留已有的nv_zscore特征,所有特征做标准化缩放 - 核函数固定用RBF,gamma参数搜索范围设为
[0.001, 0.01, 0.1, 1],nu参数直接按数据集里c_faulty=1的实际样本占比设置,不需要做大范围参数搜索
注:iForest更适配高维稀疏表格数据,该低维时序场景下iForest容易误判周期边界的正常点,不建议花过多精力调优。
- 特征不要直接扔原始
提供的数据集已经带c_faulty真值标签,调参时直接用F1值、异常召回率作为评估指标选最优参数即可,不需要纯无监督盲调。本示例中的离群点为人工生成,下图紫色为正常值、红色为离群点:
数据集样例如下:
index day interval device nv_zscore c_faulty c_normal 0 0 0 0 -1.308137 0 1 1 0 1 0 -1.330926 0 1 2 0 2 0 -1.285348 0 1 3 0 3 0 -1.253444 0 1 4 0 4 0 -1.194192 0 1 ... ... ... ... ... ... ... 67195 6 19 9 0.882879 1 0 67196 6 20 9 1.544848 1 0 67197 6 21 9 0.147239 1 0 67198 6 22 9 0.674702 1 0 67199 6 23 9 -0.306257 1 0
内容的提问来源于stack exchange,提问作者awovu netux
相关产品推荐
相关产品推荐

