KPI聚类算法——ROCKA


论文:
Robust and Rapid Clustering of KPIs for Large-Scale Anomaly Detection

问题场景

运维场景下需要对KPI做监控和各种算法处理(比如异常检测),但是KPI数量和维度都太多,每一条单独训练成本太高,所以希望能对KPI进行聚类,每个聚类蔟内用同一个模型。

问题挑战

在这里插入图片描述

  1. 聚类首先要判别距离,KPI曲线上噪声/异常/相位偏差和振幅会造成相似度计算的困难。
  2. KPI曲线时间跨度从几天到数周,维度通常较高,进一步增加了对聚类的挑战。

算法框架

  1. 预处理:消除振幅差异
  2. 基线提取:消除噪声和异常点
  3. 相似性度量:基于形状的SBD距离作为相似性度量,消除相位差异
  4. 聚类:为每个类别计算聚类中心,新来曲线直接与中心计算相似度并聚类
    在这里插入图片描述

算法细节

  1. 预处理
  • 缺失值:线性插值填充
  • 振幅差异:标准化(均值0方差1)
  1. 基线提取
    目的:降低噪声和异常的影响
  • 去异常点:去除异常点并用相邻点做线性填充(本文是去除离均值最远的5%点,也可以用箱线图等)
  • 去噪声:滑动平均,将曲线分成基线和余项
    公式如下:

    效果:
    在这里插入图片描述
  1. 相似性度量
  • 相似性计算:对基线使用基于互相关距离度量SBD来比较相似性。

互相关计算两条kpi的滑动内积,对相位偏差有天然鲁棒性。两条kpi曲线x,y和相位偏差s,标准化互相关NCC及距离度量SBD计算如下:

在这里插入图片描述
在这里插入图片描述
解释:移动s后,x,y无相位差,此时内积最大。NCC范围是[-1,1],SBD范围是[0,2]。SBD越小则相似度越高。
特别的!利用卷积和傅立叶变换可以计算两条长度为m的kpi时间复杂度降低为(mlogm)
4. 聚类

  • 基于密度的聚类算法DBSCAN

实验对比

  1. 聚类效果和微软YADING的对比:
    在这里插入图片描述
  2. 算法内技术的对比
    在这里插入图片描述
  • DTW计算曲线相似度
    DTW可以准确地捕获具有相移的KPI之间的相似性。 但是,它也可以使两个具有不同周期性或季节性的KPI完美对齐。 例如,关于网页浏览量的KPI和关于搜索响应时间的KPI可能具有相似的形状,但季节性不同(例如,一天与一周之间)。 在DTW距离下它们是相似的,但是根据前面所述的运营商规则,不同类型的KPI不能归为同一簇。 此外,DTW计算时间更长。

辅助异常检测

与DONUT结合

  • E1: 仅使用原始DONUT为每条KPI训练模型进行异常检测,按原作者的方法为每条KPI调优寻找能取得最佳F-score的阈值。
  • E2: ROCKA+DONUT。利用ROCKA对KPI曲线进行聚类并求出聚类中心。仅在聚类中心曲线上训练DONUT模型,并选出最佳阈值。将聚类中心的模型及阈值应用于同聚类簇的其他KPI曲线上。
  • E3: ROCKA+DONUT+重选阈值。仍使用聚类中心曲线训练模型应用于同类其他KPI上。但在有足够标注的情况下,我们可以为每条KPI重新调优阈值来取得最佳F-score。

在这里插入图片描述
结果:

  • 相比于E1,E2的方法节省了90%的模型训练时间,而异常检测的平均F-score下降不超过15%,仍能达到0.76的平均F-score。
  • 而在与E1有相同标注量的情况下采用E3的方法,平均F-score下降不超过5%。同时,在面对更大规模的KPI时,同一聚类簇中将包含更多相似曲线,从而能够节省更多的模型训练时间。
发布了79 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34219959/article/details/102856677