Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1285969
  • 博文数量: 196
  • 博客积分: 4141
  • 博客等级: 中将
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 20:04
文章存档

2019年(31)

2016年(1)

2014年(16)

2011年(8)

2010年(25)

2009年(115)

分类: 系统运维

2019-05-09 22:56:49



  1. B. 智能运维 --- 质量保障 --- 异常检测 --- 指标聚类
  2.     微软亚研院的AIOps底层算法: KPI快速聚类
  3.         复杂度分析
  4.             时序数据数量大、维度高。运维中的时序数据集通常具有大量实例(如数百万个),每个实例具有较高维度(如数千维),难以使用传统的聚类方法进行快速聚类。
  5.             时序数据实例间的相似性难以准确刻画。不同于简单的数值型、类别型数据,时间序列数据上通常存在着相位扰动和随机噪声,使得对时序数据实例之间的相似性刻画较为困难。不恰当的相似性度量会大大降低聚类的准确性。
  6.             聚类算法参数难以确定。许多聚类算法的效果和参数的选取有密切关系。面对大规模的时序数据,难以人工选取合适的参数。需要设计更智能的参数选择方法。
  7.         设计思想
  8.             输入数据集采样。对大量的时序数据进行随机采样,并使用逐段聚集平均(PAA)算法缩减每条时序数据实例的维度。用采样后的数据集作为聚类算法的输入。
  9.             在采样后的数据集上进行时序数据聚类。使用L1距离作为时序数据曲线间的相似性度量。在基于密度的聚类算法DBSCAN的基础上,设计出多密度的聚类算法Multi-DBSCAN,并使算法能够自动决定参数。
  10.             对大量数据采用分派(assignment)策略进行分类。对于采样中未被选择的大量时序数据曲线,采用分派策略将其分到与其L1距离最近的已聚类曲线所属的聚类簇中。同时建立了有序邻居图(Sorted Neighbor Graph, SNG)辅助计算时序数据实例之间的距离,提高分派算法的计算效率。
  11.         实现细节
  12.             输入数据集采样
  13.                 随机采样(random sampling)是一种减少数据实例个数的有效手段。采样过程中需要遵循两个原则:
  14.                     (1)每个类别的数据均在采样集中出现至少m次。
  15.                     (2)采样集中各类别数据所占比例与原数据集中的比例偏差不超过给定阈值ε。
  16.                 使用逐段聚集平均(Piecewise Aggregate Approximation,PAA)进行维度缩减。
  17.             时序数据聚类
  18.                 文中使用L1距离作为时序数据实例间的相似性度量,采用多密度的DBSCAN(Multi-DBSCAN)算法进行聚类。
  19.                 真实的时序数据模式较为复杂,在一个数据集中可能存在多种密度的聚类簇(如下图所示)。因此本文中将基于密度的DBSCAN算法改进为多密度的Multi-DBSCAN,提升聚类准确性。
  20.             分派策略
  21.                 在对采样集进行聚类后,使用分派(assignment)策略对大量未分类时序数据曲线进行快速分类。
  22.                 具体的,对于一个未分类实例,找出与它相似性距离最近的已分类实例A。若二者的距离小于A所在聚类簇的密度半径,则将该实例划分至与A相同的类别中。否则,认为该实例是一个异常(outlier)。
  23.     清华AIOps算法:KPI聚类
  24.         项目背景
  25.             然而,大多数前沿的异常检测算法(如Opprentice,EDAGS,DONUT)都需要为每条KPI单独建立异常检测模型,在面对海量KPI时,会产生极大的模型选择、参数调优、模型训练及异常标注开销。幸运的是,由于许多KPI之间存在隐含的关联性,它们是较为相似的。
  26.         复杂度分析
  27.             其一,KPI曲线上的噪声、异常、相位偏差和振幅(量纲)差异通常会改变KPI曲线的形状,从而影响对KPI的相似性判别,难以用传统方法实现快速准确的聚类。
  28.             其二,一条KPI曲线通常包含上万个数据点,时间跨度从几天到数周,从而完整的刻画其曲线模式(例如周期性、季节性等)。
  29.         算法框架
  30.             问题
  31.                 噪声和异常:曲线上与正常值不符的波动
  32.                 振幅差异:KPI曲线可能具有不同量级的振幅,例如同一服务的两个相关但不同模块的QPS曲线。
  33.                 相位偏差:两条KPI曲线之间的整体相位偏移。例如,同一系统调用链上的一组KPI可能具有相似的形状,但存在一定的时延,从而产生相位偏差。
  34.             步骤
  35.                 预处理:对原始KPI数据进行标准化,消除振幅差异。对于KPI中存在的少量缺失值,采用线性插值进行填充。之后对每条原始KPI数据进行标准化(standardization)得到均值为0方差为1的曲线,消除振幅差异的影响,从而能够比较不同系统及应用的KPI之间的相似性。
  36.                 基线提取:去除曲线上的噪声和可能的异常点,提取基线来表示曲线的形状。
  37.                     去除异常点:首先要平滑一些极端异常值。通常,曲线上的异常点比例不超过5%。因此,通过去除偏离均值最远的5%的数据点,并使用其相邻的正常观测值对这些点做线性填充,即可去除多数极端异常值。
  38.                     此外,一条实际KPI曲线可被视为一条平滑的基线(表征了曲线的正常模式)和许多随机噪声组成。一个简单有效的去除噪声的方法是在KPI曲线上使用一个小的滑动窗口做滑动平均,将曲线分为基线与余项两部分。对于KPI T,应用大小为W的滑动窗口,步长为1,其基线B和余项R可由下式计算,效果如图3所示。
  39.                 相似性度量:采用基于形状的SBD距离作为相似性度量,消除曲线间的相位偏差影响。
  40.                     为了判别KPI曲线间的形状相似性,作者对基线使用一种基于互相关(cross-correlation)距离度量SBD来比较它们的相似性。
  41.                 聚类与分派:对样本集中的KPI进行高效、鲁棒的聚类,为每个类别计算聚类中心表征该类别曲线形状。对于大量未分类曲线,利用聚类中心为其快速分派类别。
  42.                     利用相似性度量SBD,作者采用基于密度的聚类算法DBSCAN对随机采样的部分KPI进行聚类。DBSCAN的核心思想是根据所用的相似性度量在样本的稠密区域中找到若干核心样本(cores),之后通过样本相似性的传递性来扩展各核心样本所在的区域(即若a与b相似,b与c相似,则a、b、c均属于同一聚类簇),形成聚类簇。

阅读(2569) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~