AI Anomaly Detection

Other

AI时序异常检测技能。基于Amazon Chronos-2零样本时序大模型,对用户提供的数据(CSV/Excel/JSON/粘贴)或API接口数据,进行多方法融合异常检测(Z-Score/MAD/IQR/移动平均偏离),自动分类异常类型(点异常/上下文异常/集体异常/水平偏移)并评定严重度(P0-P2),生成包含时序标注图、残差分析、异常分布、热力图、详细列表的交互式HTML可视化报告。触发词:异常检测、异常分析、时序异常、数据异常、检测异常、anomaly detection、找异常点、异常报告。

Install

openclaw skills install @bettermen/anomaly-detection

AI 时序异常检测技能

基于 Amazon Chronos-2 (120M参数) 零样本时序大模型 + 4种检测方法融合,对时序数据自动发现异常点,生成专业分析报告。

功能概述

  1. 数据接收:CSV/Excel/JSON 文件、用户粘贴数据、或 API 接口数据
  2. 时序预测:Chronos-2 逐点回测预测,无需训练,零样本推理
  3. 多方法融合检测:Z-Score + 改进Z-Score(MAD) + IQR + 移动平均偏离,4选2多数投票
  4. 异常分类:点异常 / 上下文异常 / 集体异常 / 水平偏移
  5. 严重度评定:P0严重 / P1警告 / P2轻微
  6. 报告生成:交互式 HTML (Plotly) + CSV 异常明细导出

适用场景

  • IT运维:服务器 CPU/内存/QPS 异常检测
  • 电商:销量/流量/转化率异常波动
  • 金融:交易量/价格异常检测
  • IoT:传感器数据异常
  • 业务监控:任何时序指标的异常告警

输入数据格式

至少包含两列:时间戳 和 数值指标。

timestamp,value
2024-01-01 00:00,120.5
2024-01-01 01:00,118.3
2024-01-01 02:00,135.7
...

支持多列数据,会自动识别时间列和数值列。也支持:

  • Excel (.xlsx/.xls)
  • JSON (.json)
  • Parquet (.parquet)

工作流

Step 1: 接收数据

若用户提供文件路径 → 直接使用。若用户粘贴数据 → 保存为临时 CSV。若用户描述数据来源(如 API)→ 帮助实现数据获取。若用户未提供 → 引导用户提供数据。

数据要求:

  • 最少 20 个时间点
  • 时间频率需一致(秒/分/时/日/周/月)
  • 数值列需为数字类型

Step 2: 确认检测参数

向用户确认(或使用默认值):

参数默认值说明
zscore_threshold2.5Z-score 阈值,超过即标记
mad_threshold3.0改进Z-score(MAD) 阈值
iqr_multiplier1.5IQR 乘数
context_length2048Chronos-2 上下文窗口长度

大多数情况下默认值即可满足需求。若用户数据波动较大,可适当提高阈值减少误报。

Step 3: 运行异常检测

调用核心脚本 scripts/anomaly_detect.py

python scripts/anomaly_detect.py --input <data.csv> --output <results_dir>

可选参数:

python scripts/anomaly_detect.py \
  --input data.csv \
  --output results/ \
  --zscore-threshold 2.5 \
  --mad-threshold 3.0 \
  --iqr-multiplier 1.5 \
  --context-length 2048

脚本执行流程:

  1. 创建 Python 虚拟环境并安装依赖(chronos-forecasting, pandas, numpy, scipy, plotly)
  2. 加载数据并自动校验(时间格式、缺失值、频率推断)
  3. 加载 Chronos-2 模型(首次需从 HuggingFace 下载 ~500MB)
  4. 逐点回测预测(用历史数据预测当前点)
  5. 4种方法分别检测异常
  6. 投票融合(至少2种方法确认才标记为异常)
  7. 异常分类和严重度评定
  8. 输出 anomaly_data.jsonanomalies.csvtime_series_with_detection.csv

Step 4: 生成 HTML 报告

调用 scripts/report_gen.py

python scripts/report_gen.py --data <results_dir>/anomaly_data.json --output <report.html>

报告包含:

  • 异常概览面板(总数/严重度/异常率)
  • 主时序图(Plotly交互式,异常点分级标注)
  • 残差分析图(时序 + 直方图 + σ区间)
  • 异常类型分布(饼图 + 柱状图)
  • 异常时段热力图(日期×时段)
  • 异常明细表格(时间/值/偏离度/Z-Score/严重度/类型)
  • 检测方法说明

Step 5: 展示结果

preview_url 打开 HTML 报告,并梳理关键发现:

  • 异常总数和占比
  • 最严重的异常点(按 Z-Score 排序 TOP 5)
  • 异常集中时段
  • 异常类型分布(点异常 vs 集体异常 vs 水平偏移)
  • 可能的业务原因分析
  • 建议后续行动

异常检测方法说明

1. Z-Score 检测

计算每个残差的 Z-Score = |残差 - 均值| / 标准差。适用于正态分布数据。

2. 改进 Z-Score (MAD)

使用中位数和 MAD(中位数绝对偏差)代替均值和标准差,对离群值更鲁棒。

3. IQR 四分位距

基于 Q1 - 1.5×IQR 到 Q3 + 1.5×IQR 的区间判断。

4. 移动平均偏离

对比实际值与局部移动平均的偏离程度,检测趋势突变和水平偏移。

融合策略

需要至少 2 种方法 同时标记才确认为异常点,有效降低误报率。

异常类型

类型说明示例
point 点异常单个时间点异常CPU 瞬时飙升至 100%
contextual 上下文异常在特定上下文中异常凌晨 3 点的正常流量在工作时间就异常
collective 集体异常连续多个点异常连续 1 小时的服务降级
level_shift 水平偏移数值整体水平变化系统升级后 QPS 永久下降 30%

严重度等级

等级条件含义
P0 严重Z-Score > 3.5 或 IQR 比率 > 3.0极端异常,需立即处理
P1 警告Z-Score > 2.5 或 IQR 比率 > 1.5明显异常,需关注
P2 轻微其他确认异常轻微异常,可观察

依赖管理

首次运行自动安装:

  • chronos-forecasting >= 0.1.0
  • pandas >= 2.0
  • numpy >= 1.24
  • scipy >= 1.10
  • plotly >= 5.0
  • openpyxl >= 3.0

注意事项

  • Chronos-2 模型约 500MB,首次下载需要时间(使用 hf-mirror 镜像加速)
  • CPU 推理:每个数据点约 1-3 秒(回测预测),数据量越大时间越长
  • 数据量 < 20 个点会给出警告,但仍会尝试检测
  • 默认使用 4选2 多数投票融合策略,减少误报
  • 用户本地没有 GPU,默认 CPU 模式
  • 仅作数据分析用途,发现异常后需人工判断和处理
  • HuggingFace 下载慢时自动使用 HF_ENDPOINT=https://hf-mirror.com
  • 若数据量 > 500 点,回测预测会每隔几个点进行一次以提高效率