TranAD对比8大基线模型:LSTM_AD、OmniAnomaly、USAD、GDN等异常检测算法实测分析
TranAD对比8大基线模型LSTM_AD、OmniAnomaly、USAD、GDN等异常检测算法实测分析【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranADTranAD 是基于深度 Transformer 网络的多变量时间序列异常检测框架VLDB 2022 论文开源实现内置了 LSTM_AD、OmniAnomaly、USAD、GDN 等 8 个主流基线模型支持在 SMAP、MSL、SWaT、SMD 等 9 个公开数据集上一键复现论文结果。本文带你实测对比这些异常检测算法的表现并讲清楚 TranAD 为什么更强。一、TranAD 是什么适合谁用TranADDeep Transformer Networks for Anomaly Detection in Multivariate Time Series Data解决的核心问题是多变量时间序列一条时间线上有多个特征如机器 25 个传感器指标需要整体判断是否异常异常检测 异常诊断不仅给出哪段时间异常还能输出每个特征维度的异常分数定位哪个指标出了问题统一对比仓库里直接实现了 8 个基线异常检测算法同代码、同数据、同指标横向对比省去自己搭实验环境的麻烦。 适合人群做时序异常检测研究的研究生/工程师、需要选型异常检测算法的业务同学。二、快速上手3 步跑通异常检测对比实验1️⃣ 获取代码git clone https://gitcode.com/gh_mirrors/tr/TranAD2️⃣ 安装依赖Python ≥ 3.7pip3 install torch1.8.1cpu torchvision0.9.1cpu torchaudio0.8.1 -f https://download.pytorch.org/whl/torch_stable.html pip3 install -r requirements.txt3️⃣ 预处理数据 训练模型# 预处理 9 个数据集数据集不全可删减详见 data/ 下各目录 readme python3 preprocess.py SMAP MSL SWaT WADI SMD MSDS UCR MBA NAB # 训练并测试某个异常检测模型 python3 main.py --model TranAD --dataset SMAP --retrain其中--model可取TranAD、GDN、MAD_GAN、MTAD_GAT、MSCRED、USAD、OmniAnomaly、LSTM_AD--dataset可取SMAP、MSL、SWaT、WADI、SMD、MSDS、MBA、UCR、NAB。加--less参数则只用 20% 训练数据方便快速验证。三、8 大基线异常检测算法一览仓库中所有模型定义在src/models.py训练调度逻辑在main.py每个基线对应一类经典思路基线模型核心思路类型LSTM_AD单变量 LSTM 自编码重建误差判异RNN 自编码OmniAnomalyVAE RNN概率化异常评分支持流式检测变分自编码USAD双自编码器对抗式训练放大正常/异常差距对抗自编码GDN图自注意力 自编码显式建模特征间关系图注意力MAD_GAN生成器 判别器重建误差 判别分数GANMTAD_GAT门控图注意力 LSTM 混合建模GNN RNNMSCRED多变量自编码 图注意力联合训练自编码MERLIN基于自注意力的序列异常评分实现见src/merlin.py注意力四、实测结果对比TranAD 赢在哪项目自带的九大数据集完整对比结果如下图所示指标为各数据集上的 Precision / Recall / AUC / F1 关键结论摘自上表 F1 列TranAD 在 9 个数据集中的 F1 均位于第一梯队NAB 0.9364、UCR 0.9694、MBA 0.9780、SMAP 0.8915、SWaT 0.8151、MSDS 0.9262 均为全场最高GDN 在 MSL 上 F1 最高0.9591但 TranAD 以 AUC 0.9916 的排序能力紧随其后说明其异常分数区分度极强简单模型在复杂场景掉分明显WADI 上 LSTM-NDT 的 F1 仅 0.0271、DAGMM 仅 0.1412而 TranAD 稳定在 0.4951体现 Transformer 对多变量复杂耦合关系的建模优势SMD 数据集上TranAD 拿下 AUC 0.9974、F1 0.9605 双第一工业机器监控场景可直接参考该配置。⚠️ 注意仓库内的基线代码是简化实现官方建议精确复现论文原数据时应使用各基线原始代码库README 中已注明。五、TranAD 为什么更强三大核心技术完整模型定义见 src/models.py 中的TranAD类L491 起核心设计有三点Transformer 编码-解码结构以 10 步窗口输入n_window10编码器学习多变量依赖解码器重建当前时间步重建误差即异常分数自条件Self-conditioning两阶段解码——第一阶段正常解码第二阶段把第一阶段的重建误差作为异常分数条件再次解码让模型学会利用已检测到的异常提升精度对抗训练Adversarial训练中向输入添加对抗扰动增强对未见异常模式的鲁棒性。想拆解各组件贡献仓库提供了 4 个消融变体直接换模型名即可运行python3 main.py --model TranAD_Basic --dataset SMAP --retrain python3 main.py --model TranAD_Transformer --dataset SMAP --retrain python3 main.py --model TranAD_Adversarial --dataset SMAP --retrain python3 main.py --model TranAD_SelfConditioning --dataset SMAP --retrain超参数学习率、epoch 等统一在src/params.json与src/constants.py中配置可按数据集微调。六、如何看懂输出指标训练完成后程序会打印每个特征维度的检测结果与整体汇总例如Training time: 3.1920 s Testing TranAD on SMAP {FN: 0, FP: 182, TP: 748, TN: 7575, f1: 0.8915, precision: 0.8043, recall: 0.9999, Hit150%: 1.0, NDCG150%: 1.0, threshold: 0.1613}P / R / F1检测准确率的经典三件套选型看 F1 最直观AUC异常分数排序能力AUC 高意味着容易通过阈值调参Hit150% / NDCG检测位置与真实异常区间的对齐程度衡量报得准不准位置threshold推荐判异阈值可直接用于线上部署。每次运行还会在plots/下生成训练曲线与预测曲线 PDF如plots/TranAD_SMD/training-graph.pdf便于可视化对比不同模型的收敛情况。七、总结怎么选异常检测算法场景推荐多变量复杂系统、精度优先TranADF1/AUC 综合最强需要图结构建模传感器关系GDN流式/在线检测、概率输出OmniAnomaly计算资源受限LSTM_AD但复杂场景精度损失大TranAD 用统一的代码框架把 Transformer 异常检测做到了开箱即比是时序异常检测选型与论文实验复现的高性价比起点。动手试试吧【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranAD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考