腾讯织云Metis异常检测原理刨析

Metis当前0.3.0版本开源的时间序列异常检测学件,是从机器学习的角度来解决时序数据的异常检测问题。

1. 基础介绍

1.1 表说明

目前Metis有为三张表:

  • sample_dataset样本表,训练数据来源
  • anomaly异常表,在量值检测、率值检测之后,把异常的数据写入此表
  • train_task 训练任务表,记录训练生成的模型

1.2 数据集说明

进行时间序列异常检测是需要使用历史数据的。一般情况下可以选择历史14天的数据,或者历史一周的数据。或者选择其中的一个时间序列切片。
Metis里,当前检测时间窗口选取的是为3小时,每分钟1个数据点,即窗口值为180。数据集data_c,data_b,data_a, 代表的含义如下图的一周前、一天前、当天,对应数据库sample_dataset表的三个字段data_c,data_b,data_a:
图1
需要说明的是Metis默认180窗口下,一个样本有903个数据点,即一周前:1(待判断点)+180+180,前一天1+180+180,当天1+180。

2. 技术架构

在这里插入图片描述

2.1 离线模块

2.1.1 数据存储

数据存储,即海量的运维数据。一般是对接大数据平台,是经过ETL后的数据,这块是不在Metis开源项目里面。

寻找异常样本的时候,就相当于在海量时间序列里面捞一根针,这个成本很高。Metis通过用无监督或者统计判别的方法,可以把范围大大的缩小。通过算法过滤到大量的正态样本,剩下的就是疑似异常。进而通过Metis人工标注模块打标,再通过有监督学习算法对这些样本进行训练。

2.1.2 统计算法&无监督算法输出疑似异常

这块Metis源码其实也有,但是方法属于在线模块下,需要自行抽出。
统计算法通过3西格玛准测、基于指数移动平均算法(EWMA)
无监督算法通过孤立森林
通过这些算法可以输出疑似异常。

2.1.3 样本库人工打标

通过上一步输出的疑似异常,将写入异常表里,进而可以通过Metis提供的页面进行打标。
在这里插入图片描述

2.1.4 特征工程和有监督算法

经过打标后的数据,进入样本表。可以通过Metis提供的训练模块,先通过特征工程模块提取拟合、统计、分类的特征,再通过xgboost生成模型。
在这里插入图片描述

2.2 在线模块

即在线预测,要把离线训练生成的模型加载到线上。再根据在线预测出的异常写入异常表,再打标,进而不断迭代模型。

2.2.1 数据提取

目前Metis提供2个接口,量值检测(KPI指标的检测)和率值检测(成功率的检测)。接口只能针对一个数据点做异常检测。

2.2.2 统计算法&无监督算法输出疑似异常

即上述离线模块统计算法&无监督算法输出疑似异常的内容。

2.2.3 加载有监督模型

如果请求参数带有taskId,则使用对应taskid的检测模型,如不传,则采用系统默认模型。
taskid的检测模型是通过样本训练生成的模型。

2.2.4 特征工程

通过特征工程模块提取拟合、统计、分类的特征

2.2.5 有监督算法

通过2.2.3 加载的xgboost有监督模型,判断数据点是否异常,这里需要注意的是,通过Metis的量值检测和率值检测接口发现的异常,会把异常数据写入异常表,待人工标注。

3. 特征工程

3.1 拟合特征

拟合特征提取包含移动平均、加权移动平均、周期性特征、指数平滑、双指数加权移动平均、周期性特征。

3.2 分类特征

分类特征提取包含均值、方差、标准差、中位数、自相关、变异系数以及

  • 给定不同大小桶,计算元素在不同的桶中在整个时间序列的百分比
  • 给定不同大小桶,计算c,b,a三个子序列中元素在不同的时间序列中的百分比
  • 将整个时间序列分为三部分:c,b,a。给定阈值= 0.01,返回小于阈值的时间序列元素
  • 将整个时间序列分为五部分。给定阈值= 0.01,返回小于阈值的时间序列元素
  • 给定不同大小桶,计算c,b,a三个子序列中元素在不同的时间序列中的百分比

3.3 统计特征

统计特征提取包含最大值、最小值、均值、方差、标准差、偏度、峰度、中位数、时间序列的平方和、返回序列x的连续变化的绝对值之和、方差是否大于标准差、大于均值的数的个数等30个特征。

4. 打标工程

Metis打标是针对疑似异常做打标,即针对anomaly表内容。
目前anomaly表的数据来源:量值检测和率值检测接口发现的异常之后,把数据写入此表。
在这里插入图片描述

5. 两层判决

先通过第一层statistic(3西格玛准测)、ewma(指数加权移动平均)、polynomial(degree的多项式特征结合上岭回归)、iforest(孤立森林)四种算法检测,如果第一层任意一个算法检测出异常,则使用xgboost再次进行预测输出xgboost的结果,如果四中算法预测都正常,则返回正常。

详情参考系列文章
Metis异常检测初体验
Metis异常检测算法源码
Metis异常检测数据集训练源码深入刨析
Metis异常检测算法率值检测和量值检测源码刨析
Metis异常检测样本管理源码分析

2019年人工智能热门案例精讲之歌词生成器

猜你喜欢

转载自blog.csdn.net/qq_33873431/article/details/106528821