Skip to content

claywares/Seeker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Seeker - 时间序列异常检测机器学习项目

Read Slide

Click Here

异常定义

在 Seeker 项目中,异常(Anomaly)指的是时间序列中明显偏离预期行为的数据点或模式。根据历史数据学习得到的正常行为作为基准,可以识别以下类型的异常:

点异常: 单个数据点明显高于或低于序列中的其他值。

上下文异常: 数据点在特定上下文中才被视为异常(例如:某个值在周末是正常的,但在工作日则属于异常)。

集体异常: 一组数据点作为整体呈现异常,即使单个点可能都在正常范围内。

局限性

Seeker 目前主要聚焦于单变量时间序列的点异常检测。以下类型的异常暂不在支持范围内:

  • 上下文异常
  • 渐变趋势或微小的趋势变化
  • 多变量或高度不规则时间序列中的异常
  • 需要领域专业知识或外部上下文的异常

点异常检测

点异常是最简单也是最常见的异常类型,非常适合首次实验和演示。例如,CPU 使用率和内存占用的瞬时突增或突降都属于点异常。

检测方法

统计方法

  • Z-score(标准分数)法
  • IQR(四分位距)法
  • EWMA(指数加权移动平均)法

机器学习方法

  • Isolation Forest(孤立森林)
  • LOF(局部离群因子)

DEMO核心逻辑

构建一个智能、可靠的CPU异常检测系统,减少误报,提高运维效率。

🔧 技术架构:多算法融合 + 智能评分

  • 第一步:多算法并行检测
    • 同时运行5种检测算法:Z-score、IQR、EWMA、Isolation Forest、LOF
    • 优势: 避免单一算法的偏差,提高检测的鲁棒性
  • 第二步:三维评分体系
    • 综合评分 = 40% × 方法一致性 + 40% × 偏离程度 + 20% × 持续性
    • 方法一致性评分 (40%)
      • 统计有多少种算法认为是异常
      • 体现"民主投票"原则,减少误报
    • 偏离程度评分 (40%)
      • 计算数据点偏离正常值的程度
      • 客观反映异常的严重性
    • 持续性评分 (20%)
      • 评估异常在时间上的连续性
      • 过滤瞬时噪声,关注真正的问题
  • 第三步:双重验证机制
    • 最终异常 = Isolation Forest初筛 AND (多算法一致 OR 高评分)
    • 基础筛选: 必须被Isolation Forest检测到
    • 验证条件: 至少2种方法一致 OR 评分超过99%分位数
  • 第四步:智能分级
    • P0 (紧急): 评分最高1/3,立即处理
    • P1 (重要): 评分中等1/3,重点关注
    • P2 (一般): 评分较低1/3,可延后处理

方法简述

Z-score方法

选择 3 作为阈值基于统计学中的"三西格玛法则"(68-95-99.7规则):

数据分布特征

  • ±1σ 区间:包含约 68% 的数据
  • ±2σ 区间:包含约 95% 的数据
  • ±3σ 区间:包含约 99.7% 的数据

阈值选择权衡

  • 较低阈值(如 2σ):检测更敏感但假阳性率更高
  • 较高阈值(如 4σ):假阳性率低但可能漏检
  • 3σ:在大多数场景下能较好平衡准确率和召回率

IQR方法

四分位数解释

  • Q1(第一四分位数):25% 的数据小于此值
  • Q3(第三四分位数):75% 的数据小于此值
  • IQR = Q3 - Q1:包含中间 50% 数据的范围

k 参数说明(通常取 1.5)

  • 用于控制检测的敏感度
  • k=1.5:标准设置,检测强度适中
  • k=3.0:宽松设置,降低误报
  • k 值越小,检出的异常越多

异常判定边界

  • 下界 = Q1 - k×IQR
  • 上界 = Q3 + k×IQR
  • 超出这些边界的点被判定为异常

EWMA方法

基本原理

  • EWMA(指数加权移动平均)对最近的数据赋予更高权重
  • 通过移动窗口计算局部统计特征
  • 特别适合检测突发性异常

span参数说明(通常取5-20)

  • 控制移动窗口大小和权重衰减速度
  • span越小,对近期数据越敏感
  • span=5:快速响应,适合检测突变
  • span=20:平滑处理,降低误报

threshold参数说明(通常取1.5-3.0)

  • 用于控制检测的敏感度
  • threshold=1.5:敏感度高,可能有更多误报
  • threshold=3.0:更保守,减少误报
  • threshold越小,检出的异常越多

异常判定方式

  • 计算数据点与EWMA均值的偏差
  • 将偏差与局部标准差的threshold倍比较
  • 超出阈值的点被判定为异常

Isolation Forest方法

基本原理

  • 基于树结构的无监督学习方法
  • 通过随机分割空间来隔离异常点
  • 异常点通常更容易被隔离

contamination参数说明(通常取0.01-0.1)

  • 用于指定预期的异常比例
  • contamination=0.01:预期1%的数据是异常
  • contamination=0.1:预期10%的数据是异常
  • 值越大检出的异常越多

异常判定方式

  • 计算每个数据点的隔离度
  • 隔离度越高越可能是异常
  • 根据contamination设定的比例确定阈值

LOF方法

基本原理

  • 基于密度的局部离群点检测
  • 计算每个点相对于其邻域的局部密度
  • 密度显著低于邻居的点被判定为异常

参数说明

  • n_neighbors(通常取20-50):用于计算局部密度的邻居数
  • contamination(通常取0.01-0.1):预期的异常比例

异常判定方式

  • 计算每个点的局部离群因子
  • 因子值越大表示越可能是异常
  • 根据contamination参数确定阈值

方法对比

检测方法 适用场景 优点 缺点
Z-score CPU突发峰值监控 • 计算简单
• 容易理解
• 适合正态分布数据
• 受极端值影响大
• 假设数据正态分布
IQR 长期趋势异常 • 对异常值不敏感
• 不依赖数据分布
• 稳定性好
• 不适合实时检测
• 可能过于保守
EWMA 实时监控场景 • 对突变敏感
• 考虑时序特性
• 适合实时数据
• 参数调优较复杂
• 初始阶段不稳定
Isolation Forest 高维数据分析 • 计算效率高
• 适用于高维数据
• 不需要假设数据分布
• 参数敏感
• 随机性导致结果不稳定
LOF 密度分布不均匀数据 • 适应局部密度变化
• 处理复杂分布
• 对尺度不敏感
• 计算开销大
• 对参数选择敏感

适用

  • CPU利用率 ✅ - 实现已经在用这个指标
  • 内存利用率 ✅ - 特性相似,可直接应用
  • 磁盘I/O ✅ - 通常表现为百分比或速率,适用

不适用

  • 吞吐量 ❌ - 业务相关,需要上下文感知
  • 响应时间 ❌ - 分布特性复杂,需要百分位数分析
  • 延迟 ❌ - 类似响应时间,分布长尾特性
  • 并发数 ❌ - 具有明显的时间模式和上下文依赖

Roadmap

短期(1-2个月)

  1. 增强现有系统
    • 优化无监督方法的参数
    • 实现更好的ensemble策略
    • 添加置信度评分
  2. 开始标签收集
    • 基于现有检测结果生成伪标签
    • 实现简单的人工反馈机制
    • 建立标签质量控制流程

中期(3-6个月)

  1. 构建有监督模型
    • 实现特征工程pipeline
    • 训练XGBoost分类器
    • 建立模型评估体系
  2. 实现混合架构
    • 无监督+有监督双轨检测
    • 实现决策融合逻辑
    • 性能和准确率对比评估

长期(6-12个月)

  1. 系统优化
    • 根据生产反馈持续调优
    • 实现自动化标签生成
    • 模型自适应更新
  2. 扩展能力
    • 支持多指标类型
    • 实现上下文感知检测
    • 添加异常解释功能

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors