ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TranAD进阶实战:如何接入自定义多变量时间序列数据,快速构建异常检测流水线

TranAD进阶实战:如何接入自定义多变量时间序列数据,快速构建异常检测流水线 TranAD进阶实战如何接入自定义多变量时间序列数据快速构建异常检测流水线【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranADTranAD 是基于 Transformer 架构的多变量时间序列异常检测开源工具VLDB 2022通过自条件化self-conditioning与对抗训练实现高精度异常识别。本文面向新手手把手教你把自己的自定义多变量时间序列数据接入 TranAD从零搭建一条完整的异常检测流水线数据预处理 → 标准化 → 接入训练 → 评估可视化。一、先认识流水线的三个输入train、test、labelsTranAD 不直接读取原始 CSV而是从一个统一的目录processed/数据集名/中读取三个.npy数组文件目录常量定义在 src/folderconstants.py文件含义形状train.npy正常训练数据只含正常样本(时间步, 特征数)test.npy待检测数据可含异常(时间步, 特征数)labels.npy与 test 对齐的 0/1 标签矩阵用于计算 P/R/F1(时间步, 特征数)关键约定参考 preprocess.py 中各数据集的处理逻辑所有数值特征必须按列归一化到 [0, 1] 区间且 train 与 test 必须共用同一组 min/max防止数据泄露train 中不应包含异常样本模型本质是学习正常模式若只有无标签数据可将labels.npy全置 0跳过评估指标仅看异常分数曲线。二、数据准备把自定义数据变成三块标准数组假设你的业务数据是一个 CSV每行一个时间步每列一个传感器/指标如温度、压力、流量。下面以 1200 步、4 列指标为例说明转换思路完整逻辑可对照 preprocess.py 中load_data函数的MSDS分支切分取前 80% 时间步作为train后 20% 作为test或按业务逻辑划分归一化先拼接 traintest 求出每列 min/max再统一缩放核心公式为(x - min) / (max - min 1e-4)对应源码中的normalize3函数构造标签labels与test同形状已知异常区间内的时间步与对应特征列置 1其余为 0落盘用np.save保存为processed/你的数据集名/train.npy、test.npy、labels.npy。 提示若你的数据含缺失值先用 0 填充再归一化参考 WADI 分支的处理方式。三、接入 TranAD只需两处小改动TranAD 通过命令行加载数据数据入口是 main.py 中的load_dataset函数它按--dataset参数从processed/目录读取上述三个文件。接入自定义数据有两种方式方式 A推荐借用现有数据集名把.npy文件直接放进processed/SMD/或其他任意目录文件名与该分支默认读取的文件名一致即可例如 SMD 默认读machine-1-1_train.npy无需改代码即可跑通全流程。方式 B注册新数据集在load_dataset中为你的数据集增加文件映射分支在 src/constants.py 的lm_d、lr_d、percentiles三个字典中各加一项在 src/params.json 中为新数据集补充lm_d阈值区间与lr_d学习率配置。四、训练与评估一条命令跑通流水线数据就绪后克隆仓库https://gitcode.com/gh_mirrors/tr/TranAD 安装依赖pip3 install -r requirements.txt然后执行训练测试一体化命令python3 main.py --model TranAD --dataset 你的数据集 --retrain运行时会依次完成训练TranAD 模型定义于 src/models.py以 10 步滑动窗口n_window10重构当前时间步MSE 重建误差即异常分数默认训练 5 轮权重自动保存到checkpoints/模型_数据集/model.ckpt测试对 test 集逐特征计算异常分数输出与标签对齐的P / R / AUC / F1及整体Hit150%、NDCG150%指标可视化自动生成异常分数曲线、预测对比图存入plots/模型_数据集/目录。想只训练 20% 数据快速验证追加--less参数即可。五、结果解读与调参要点F1 高但 P 低说明异常召回好但误报多可调高 src/params.json 中lm_d阈值下限如(0.999, 1.04)→(0.9999, 1.04)收敛太慢调小lr_d经验范围 1e-4 ~ 1e-2参考内置各数据集配置特征数量影响TranAD 的注意力头数等于特征数建议特征数 ≥ 2单变量数据可参考UCR分支先 reshape 成(N, 1)多模型对比把--model换成GDN、USAD、OmniAnomaly、LSTM_AD等即可在同一数据上对比基线。六、常见问题速查报Processed Data not found确认processed/数据集名/下三个.npy文件名与load_dataset的映射完全一致异常分数全是 0 或恒定多为归一化出错出现 NaN/inf检查是否有空列或全同值列标签对齐错位labels必须与test逐行对齐异常区间的起止行号基于 test 数组而非原始 CSV 行号想看中间异常分数异常分数即backprop测试阶段返回的 per-feature MSE评估逻辑集中在 src/pot.py 与 src/utils.py可按需保存为 CSV 做二次分析。按以上步骤你只需准备三块标准数组并做少量配置就能让 TranAD 在你自己的多变量时间序列上跑起一条可复现、可评估、可可视化的异常检测流水线。【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranAD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表