SLS机器学习介绍(03):时序异常检测建模

本文介绍了时序异常检测的重要性和常见类型,包括异常值、波动点和断层异常。文中详细阐述了基于预测的异常检测方法,如数据平滑、阈值检测和KSigma、分位数异常检测。此外,还探讨了变点描述和统计检测方法,如局部峰值点检测策略、EDM和PELT算法,提供了实际应用中的平台实验结果。
摘要由CSDN通过智能技术生成

文章系列链接


摘要与背景

虽然计算机软硬件的快速发展已经极大提高了应用程序的可靠性,但是在大型集群中仍然存在大量的软件错误和硬件故障。系统要求7x24小时不间断运行,因此,对这些系统进行持续监控至关重要。这就要求我们就被从系统中持续采集系统运行日志,业务运行日志的能力,并能快速的分析和监控当前状态曲线的异常,一旦发现异常,能第一时间将信息送到相关人员手中。因此,使用机器学习和数据挖掘的手段对系统自动化进行异常检测至关重要。

让我们来看时序数据的一些常见异常:

  1. 延时的毛刺:在对读写敏感的场景中,经常会有IO毛刺问题困扰,这些毛刺往往被平均难以通过肉眼或P99等监控方法发现


基于预测的异常检测

2.业务系统调用量异常:以云服务提供的API为例,因各种原因会有一个短暂的Burst和下降。对于重要接口可以在监控系统上发现,但当我们面向几百个接口的监控时也会力不从心


基于预测的异常检测

3.水位上升:新版本发布后,各个指标的形态与历史吻合,但是整体的平均水位有拔高


基于预测的异常检测

当业务组合(B)复杂,部署规模(N)变大后,依靠传统的人眼+依赖同比环比等绝对值算法来判断就捉襟见肘了,以下我们提供对这一类问题的分类与解法。

$$ Scale = B * N * NumberOfSeriesData $$

异常类型概述

通常说的异常大致分为异常值、波动值、异常时间序列等几种情况:

  • 异常值(Outlier)

    • 给定输入时间序列x,异常值是时间戳值对$(t,x_t)$,其中观测值$x_t$与该时间序列的期望值$(E(x_t))$不同。
  • 波动点(Change Point)

    • 给定输入时间序列x,波动点是指在某个时间t,其状态在这个时间序列上表现出与t前后的值不同的特性。
  • 断层异常(Breakout)

    • 时序系统中某一时刻的值比前一时刻的值陡增或者陡降很多。
  • 异常时间序列(Anomalous Time Series)

    • 给定一组时间序列$X={x_i}$,异常时间序列$x_i \in X$是在X上与大多数时间序列值不一致的部分。

PS:上述归纳的异常均是针对单条时序曲线的形态异常,在工作交流中,发现网络流量的同学不仅要关注流量数值的大小异常、增量异常,同时还要考虑在一定的窗口期内,针对单业务线的各个网络包成分的异常,这些特定场景的异常需要设计特定的算法进行判别。在此不展开讨论,做异常的同学可以私下钉钉我,多多交流!

开源异常检测系统

  • 这里添加了一些我在调研中找到的异常检测算法包,有Java版本、R版本供各位同学参考使用
算法 具体描述
EGADS ExtremeLow 密度模型异常值 EGADS基于密度的异常检测
EGADS CP EGADS中波动点检测
EGADS KSigmaModel 异常值 EGADS中经典的KSigma模型
Extreme R异常值 开源的异常值检测、阈值绝对值和残差检测异常
Twitter Outliter 基于广义的ESD方法的Twitter R语言异常检测库
BreakOut Twitter CP Twitter一个基于ESD统计检测来实现变点检测的R语言库
Change Pt1-2-3 R R语言版本的变点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值