Lego蚂蚁智能监控中异常检测算法的探索与思考

简介: 在传统的监控、智能运维领域,用户想去监控某一个业务指标往往采用环比、同比的阈值配置方式。这在实践中面临不少问题:阈值应该配成多少,不同的业务甚至不同的时间段都需要不同的阈值业务总是出现周期性的趋势,规则配置极易产生误报特殊的业务场景例如活动引起的冲高回落、大促的冲击都会引起大量误报对大量维度的业务,比如上百/上千个不同类型的错误码,大量接口调用量等指标该如何分别配置?


一、背景与挑战

在传统的监控、智能运维领域,用户想去监控某一个业务指标往往采用环比、同比的阈值配置方式。这在实践中面临不少问题:

阈值应该配成多少,不同的业务甚至不同的时间段都需要不同的阈值

业务总是出现周期性的趋势,规则配置极易产生误报

特殊的业务场景例如活动引起的冲高回落、大促的冲击都会引起大量误报

对大量维度的业务,比如上百/上千个不同类型的错误码,大量接口调用量等指标该如何分别配置?

image.png

复杂的业务衍生出了对AIOps领域异常检测算法的需求,借助算法做自动的异常检测,解放对人工经验阈值的配置是一个切实可行的方向。互联网行业中天然沉淀的大量业务数据为算法提供了数据基础,业务人员日常的反馈为算法提供了标注,借此契机智能运维也在近几年飞速发展。

本文结合业界常用的AIOps时间序列异常检测算法和它们在蚂蚁\支付宝业务域中的实践,阐述Lego蚂蚁智能监控算法的部分探索与演变。


二、时序异常检测算法总览

对业界常用时序异常检测算法进行梳理,大致可以归纳为统计分析模型、时间序列(预测)、无监督、有监督、关系型模型等几个方向。各个算法模块从不同角度考虑时序异常检测问题,模块之间也可以嵌套、串行完成整个异常检测流程。

从思路上看:

时间序列相关模型主要用来提取时序信息、对时间序列进行实时预测。如果将异常监控拆分为:异常监控=预测值+和预测值的差距是否异常,那么时间序列预测的准确性就很大程度影响异常检测的效果。时间序列预测算法较多,可以考虑基于统计学的时序建模方法Holt-winters等,也可以考虑xgboost等回归类的机器学习方法,深度学习领域也有适用于序列的rnn类方法[1,2]。

统计分析模型和无监督模型从数据分布上考虑,假如正常数据遵循一定的规律,那么就可以从概率分布等方向入手将边界值归为异常。例如较常用的3-sigma准则、isolation-forest[3]、GAN[4]等算法。

有监督模型将异常检测转化为0/1二分类问题,将用户的反馈和算法形成闭环,让用户来定义异常边界,常用的分类算法例如树模型、svm以及深度网络DNN[5]等都可以用来尝试。

关系型模型试图引入更多外界信息,例如知识图谱、复杂网络等算法运用图信息,关联分析等算法寻找业务之间的关联关系等。

其他:在整个异常检测过程中还需要许多辅助模型,例如当用户反馈的样本量不足时如何解决,如何寻找历史上最合适的参考日期,如何对业务进行分类划分适配不同异常检测模型等。


三、Lego蚂蚁智能监控的实践

Lego是蚂蚁金服内部致力于业务异常发现的智能监控平台:

一方面,相对传统型监控”提供一个平台(工具)-->用户自己配置-->用户自己运维监控效果“的模式,Lego不再只是专注于工具本身的发展,而是延伸到“监控效果”环节,比如故障的发现质量,以及从发现到定位,再到业务恢复的完整应急体系。

另一方面,平台基于智能监控算法自动部署监控,不需要用户配置阈值甚至配置规则。算法学习业务过去的波动、趋势,结合其他相关业务指标,决策目前是否出现了异常。

Lego在智能监控的道路上经历一段时间的探索和实践,算法上经历了从基线到有监督算法的逐步改进,业务上也深入理解并解决了较多的复杂场景。以下对其中的智能算法进行部分介绍。

1. 统计概率模型

初期,借助统计概率模型是比较直接的异常检测思路,数据往往具有其分布规律,如果落在分布边界则触发了小概率事件,可能产生了异常。

N-sigma

正态分布中,99.73%的数据分布在距平均值三个标准差以内。如果我们的数据服从一定分布,就可以从分布曲线推断出现当前值的概率。

image.gifimage.png

反映到监控场景中,如果某一个业务数据服从一定分布(例如正态分布),那么当前数据如果超过N-sigma,则可以判断为异常,一个简要的检测可以描述为:

step1:取历史附近时间窗口内的N个数值作为样本M

  • step1:取历史附近时间窗口内的N个数值作为样本M
  • step2:计算样本的M的均值image.gif、标准差image.gif
  • step3:image.gif

Grubbs' Test\ESD Test等假设检验方法

Grubbs' Test常被用来检验正态分布数据集中的单个异常值,ESD(Extreme Studentized Deviate test)则将Grubbs' Test扩展到k个异常值检测,以Grubbs' Test为例,其算法步骤为:

image.pngimage.gif

总结

统计概率模型初步解决了一个模型如何泛化到其他业务的问题,但也有相应缺陷:

大部分方法存在分布假设。但实际中即使是一个小窗口里的数据分布也很复杂,更可能服从混合正态分布而不是单一的正态分布

涉及部分阈值、N的确定。例如一个业务说它是3-sigma,换个业务说它是2-sigma,同样容易陷入调阈值的怪圈忽略了时间序列本身的周期波动,损失了信息。

2. 时序序列预测模型

统计概率模型没有考虑时间序列上的信息,因此推动我们考虑先做时间序列预测。传统时间序列预测有许多非常好的框架和平滑方法,例如时间序列拆解本身就是一个较好的框架,里面的各个分项可以去做不同模型的尝试。我们先做一个简单的方法总结:

平滑类的方法,例如移动平均及在此基础上的优化,包括加权移动平均、指数平滑、二次指数平滑、三次指数平滑(Holt-Winters)等。平滑方法的基本思想是“融合”新信息和老信息,同时通过加入时间、季节趋势统计项,既体现趋势性又体现季节性。

ARMA/ARIMA[8]等线性模型。AR、MA部分和平滑方法思想比较相近,用过去序列或白噪声序列的线性组合预测未来,I部分将非平稳序列转化为平稳序列,ARIMA是比较典型常用的时序模型,。

STL等时序分解方法,时序分解类的方法将时间序列分解为T+S+R,分别指代趋势、季节和残差

将数据进行变换,提取时序特征;或将数据集转化为有监督数据集,采用xgboost、lstm等机器学习及深度学习方法

其他:例如随机游走、卡尔曼滤波、状态空间模型等其他时序模型

在这里我们尝试了STL[6]、Holt-winters、arima等算法。

STL

STL  (Seasonal-Trend decomposition procedure based on  Loess)为时序分解中一种常见的算法,基于LOESS将某时刻的数据YvYv分解为趋势分量(trend  component)、周期分量(seasonal component)和余项(remainder component):

image.pngimage.gif

STL分为内循环与外循环,其中内循环来负责趋势、周期分量的计算;外层循环主要用于调节robustness weight:

outer loop:

  • 计算robustness weight;

inner loop:

  • Step 1 去趋势;
  • Step 2 周期子序列平滑;
  • Step 3 周期子序列的低通量过滤;
  • Step 4 去除平滑周期子序列趋势;
  • Step 5 去周期;
  • Step 6 趋势平滑;

此处不再赘述。

Holt-winters

Holt-winters即三次指数平滑,指数平滑法都要更新上一时间步长的计算结果,并使用当前时间步长的数据中包含的新信息,它们通过“混合”新信息和旧信息来实现。各种方法的不同之处在于它们跟踪的量的个数和对应的拌和参数的个数。三次指数平滑法,功能最强大,既能体现趋势性又能体现季节性。以乘法公式为例,Holt-winters的公式可以表示为:

image.pngimage.gif

在实践中HW的性能消耗不多,模型中的参数也可以通过实时拟合获取,即模型可以是实时训练的。

lstm

解决时序预测的问题。不同于单维的时序预测模型,lstm在预测时候可以考虑多维的信息,因此比较适合与复杂场景下的时序预测。lstm在监控场景之外已经的得到了广泛的运用,比如在视频,文本的领域,都取得了显著的效果。

在异常监控下,lstm可以用来做指标的未来预测,以及用在异常监测问题上。这两类的问题的输入都为时间序列(一条或多条),经过lstm网络,而输出则根据希望解决的问题不同。在时序预测上,输出的是未来一个时间片段上的预测,而对于有监督的异常监测问题,则是一个二分类问题。

image.gifimage.png

总结

一个实践中的问题是不同业务、不同阶段可能适合不同的预测算法。例如对于规律较强的业务可能不需要做实时预测,昨日的曲线就是较好的基线;对于常见的每天有一定波动和量级浮动的业务,STL等时序分解的方法具有较好的效果;对于规律非常弱的业务,实时的曲线平滑是较好的方案,因此整体可以考虑一些集成方案。

3. 无监督算法

解决了时序预测问题之后我们实际上没有完成完整异常检测,因为还没有回答和预测值差距多少才叫异常。

一个简单的思路是结合1和2,在时间序列预测后对残差嵌套统计分析模型,例如基于ESD检验拓展的S- ESD (Seasonal ESD)与S-H-ESD (Seasonal Hybrid ESD)算法,就将ESD扩展到时间序列数据上。

但我们更希望把这个过程交给用户,让用户来确定异常的边界在哪里。

可是在监控建立的初期,用户的反馈是非常稀少珍贵的,在没有标记反馈的情况下,如何让用户快速享受智能服务?无监督算法可能是一个解法方案。

isolation-forest

iForest 适用连续数据的异常检测,其识别的主要是孤立点——可以理解为分布稀疏且离密度高的群体较远的点。用统计学来解释,在数据空间里面,分布稀疏的区域表示数据发生在此区域的概率很低,因而可以认为落在这些区域里的数据是异常的。

它的直观理解是这样的:假如我们用一个超平面来随机切割空间,第一步切将整体空间分为2个子空间,第二步我们再用随机超平面来切割每个子空间,以此循环下去直到子空间里都只剩下一个数据点位置。我们可以想象,对于那些相当聚集、密度相对较高的数据点,他们需要被切割很多次才能独居一个子空间;相对的对于那些稀疏、密度相对较低的数据点,则很容易就在循环中找到了自己的空间。再用随机模拟的过程反复进行这个过程,就形成了iForest的整体实现思想。iForest  由t个iTree(Isolation Tree)孤立树 组成,每个iTree是一个二叉树结构,其实现步骤如下:

image.pngimage.gif

one-class svm

ocsvm也是一种无监督方案,算法希望学习一个超平面将数据尽可能包在一起,从而识别新的数据和已有训练数据是否相似。该问题的优化目标与二分类SVM略微不同,但依然很相似:

image.pngimage.pngimage.gif


image.gif


dbscan

异常检测和聚类是两项很相关的任务,聚类获得的孤立点往往也是异常检测领域下的异常点。

dbscan  (density-based spatial clustering of applications with noise)[10]  是一种常用的基于密度的聚类方法,任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。重复该过程直到所有核心对象都有类别为止。对于不在任何一个类别内的点被标记为噪音点。

dbscan 有两个主要参数,密度和簇内最小样本数,决定最终的聚类结果。

image.pngimage.gif

总结

无监督算法在监控初期可以不借助外界反馈,快速通过数据的自身分布识别异常点。如果在特征工程阶段能根据业务场景构造特征,可以构造不同业务目的的模型。无监督算法另一个特点是需要较多的业务训练数据,但准确率较高。

其存在的问题是识别效果,尤其是召回率上的表现往往不够理想。对于部分业务监控而言,一些故障在数据上可能远不能被称为“离群点”、“孤立点”,可能只是稍微偏离了预估值,这在无监督中难以识别,也会存在调整松紧系数的困境。

4. 有监督算法

有监督算法将用户反馈、算法优化形成一个良性循环圈,用户的标注代表了用户对异常的判断标准,异常检测问题也比较自然地转化为二分类问题求解。

image.pngimage.gif

模型构建可以采用LR\xgboost\random forest\svm等常用模型,特征的构造和模型构建不再赘述,在这里总结几个问题:

  • 当问题转化为分类问题时,异常检测领域存在的黑白样本浓度不均匀就会突显出来,这也是有监督模型在异常检测领域的主要问题。
  • 有监督的方案往往不支持单个业务拥有自己的模型,积累样本需要借助伙伴们共同建设样本集的力量。

四、结束语

今天的我们还在途中,仍然存在许多不足、存在许多困难需要攻克。在AIOps的道路上也欢迎更多对智能监控感兴趣的小伙伴加入我们,一起努力。


参考文献:

[1]Connor  J T, Martin R D, Atlas L E. Recurrent neural networks and robust time  series prediction[J]. IEEE transactions on neural networks, 1994, 5(2):  240-254.

[2]Karim  F, Majumdar S, Darabi H, et al. LSTM fully convolutional networks for  time series classification[J]. IEEE Access, 2017, 6: 1662-1669.

[3]Liu  F T, Ting K M, Zhou Z H. Isolation forest[C]//2008 Eighth IEEE  International Conference on Data Mining. IEEE, 2008: 413-422.

[4]Radford  A, Metz L, Chintala S. Unsupervised representation learning with deep  convolutional generative adversarial networks[J]. arXiv preprint  arXiv:1511.06434, 2015.

[5]Wang  Z, Yan W, Oates T. Time series classification from scratch with deep  neural networks: A strong baseline[C]//2017 international joint  conference on neural networks (IJCNN). IEEE, 2017: 1578-1585.

[6]Cleveland  R B, Cleveland W S, McRae J E, et al. STL: a seasonal-trend  decomposition[J]. Journal of official statistics, 1990, 6(1): 3-73.

image.gifimage.gif


相关文章
|
17天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
1天前
|
存储
基于遗传算法的智能天线最佳阵列因子计算matlab仿真
本课题探讨基于遗传算法优化智能天线阵列因子,以提升无线通信系统性能,包括信号质量、干扰抑制及定位精度。通过MATLAB2022a实现的核心程序,展示了遗传算法在寻找最优阵列因子上的应用,显著改善了天线接收功率。
|
24天前
|
算法 安全
分别使用OVP-UVP和OFP-UFP算法以及AFD检测算法实现反孤岛检测simulink建模与仿真
本课题通过Simulink建模与仿真,实现OVP-UVP、OFP-UFP算法及AFD检测算法的反孤岛检测。OVP-UVP基于电压幅值变化,OFP-UFP基于频率变化,而AFD则通过注入频率偏移信号来检测孤岛效应,确保电力系统安全稳定运行。系统使用MATLAB 2013b进行建模与仿真验证。
|
9天前
|
算法 计算机视觉 Python
圆形检测算法-基于颜色和形状(opencv)
该代码实现了一个圆检测算法,用于识别视频中的红色、白色和蓝色圆形。通过将图像从RGB转换为HSV颜色空间,并设置对应颜色的阈值范围,提取出目标颜色的区域。接着对这些区域进行轮廓提取和面积筛选,使用霍夫圆变换检测圆形,并在原图上绘制检测结果。
14 0
|
1月前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
2月前
|
机器学习/深度学习 监控 算法
目标检测算法技术
8月更文挑战第11天
|
2月前
|
机器学习/深度学习 监控 算法
目标检测算法
8月更文挑战第5天
|
2月前
|
机器学习/深度学习 监控 算法
目标检测算法
8月更文挑战第8天
|
3月前
|
监控 算法 自动驾驶
目标检测算法:从理论到实践的深度探索
【7月更文第18天】目标检测,作为计算机视觉领域的核心任务之一,旨在识别图像或视频中特定对象的位置及其类别。这一技术在自动驾驶、视频监控、医疗影像分析等多个领域发挥着至关重要的作用。本文将深入浅出地介绍目标检测的基本概念、主流算法,并通过一个实际的代码示例,带您领略YOLOv5这一高效目标检测模型的魅力。
467 11
|
3月前
|
机器学习/深度学习 人工智能 监控
人工智能 - 目标检测算法详解及实战
目标检测需识别目标类别与位置,核心挑战为复杂背景下的多目标精准快速检测。算法分两步:目标提取(滑动窗口或区域提议)和分类(常用CNN)。IoU衡量预测与真实框重叠度,越接近1,检测越准。主流算法包括R-CNN系列(R-CNN, Fast R-CNN, Faster R-CNN),YOLO系列,SSD,各具特色,如Faster R-CNN高效候选区生成与检测,YOLO适用于实时应用。应用场景丰富,如自动驾驶行人车辆检测,安防监控,智能零售商品识别等。实现涉及数据准备、模型训练(示例YOLOv3)、评估(Precision, Recall, mAP)及测试。
118 5

热门文章

最新文章