《微软亚研院的AIOps底层算法: KPI快速聚类》要点:
本文介绍了微软亚研院的AIOps底层算法: KPI快速聚类,希望对您有用。如果有疑问,可以联系我们。
导读
智能运维中存在海量时序数据(KPI)需要监控、检测异常、关联, 而AIOps的一个底层算法就是把大规模时序数据快速准确地聚类成有限的若干类别,从而大大降低后续数据分析与挖掘工作的开销. 其应用场景包括自动适配异常检测算法、辅助标注、辅助构建故障传播链等. 本文介绍的案例是由微软亚洲研究院发表在数据库领域顶级会议VLDB 2015的文章《Yading: Fast Clustering of Large-Scale Time Series Data》.
在大数据时代,快速、大规模的分析技术的重要性日益凸显,人们利用这些技术完成实时和交互性任务中的数据分析工作.运维中常见的KPI数据是一种时间序列数据,它具有数据实例多、维度高的特点.为了降低数据分析工作的开销,提高分析效率,人们希望将海量的时序数据曲线分为若干类别,从而减少需要考察的曲线数目.因此,如何对大规模的时间序列数据进行快速、准确的聚类是一个关键性问题.
本文中,作者设计了一套端到端的时序数据聚类算法Yading,实现了对大规模时间序列数据的高效、准确、自动化聚类.为验证算法效果,作者在公开数据集上将Yading与若干传统时序数据聚类算法进行对比,并在微软的实际工业数据上对算法进行了测试,证明了Yading的高效性和分类准确性.
为应对上述挑战,本文设计了一套端到端的时序数据聚类算法Yading,分以下三步实现大规模时序数据的快速、准确聚类,算法框架如下图所示.
输入数据集采样.对大量的时序数据进行随机采样,并使用逐段聚集平均(PAA)算法缩减每条时序数据实例的维度.用采样后的数据集作为聚类算法的输入.
在采样后的数据集上进行时序数据聚类.使用L1距离作为时序数据曲线间的相似性度量.在基于密度的聚类算法DBSCAN的基础上,设计出多密度的聚类算法Multi-DBSCAN,并使算法能够自动决定参数.
对大量数据采用分派(assignment)策略进行分类.对于采样中未被选择的大量时序数据曲线,采用分派策略将其分到与其L1距离最近的已聚类曲线所属的聚类簇中.同时建立了有序邻居图(Sorted Neighbor Graph, SNG)辅助计算时序数据实例之间的距离,提高分派算法的计算效率.
大规模的时序数据集中通常含有数以万计的时序数据实例,每个实例上含有大量的数据点,直接对整个数据集进行聚类将带来巨大的计算开销.因此,本文通过随机采样和维度缩减的手段降低需要考察的实例数目和维度,将采样后的数据集作为聚类模块的输入,降低计算开销.
由于不需要对输入数据的分布作任何假设,随机采样(random sampling)是一种减少数据实例个数的有效手段.采样过程中需要遵循两个原则:(1)每个类别的数据均在采样集中出现至少m次.(2)采样集中各类别数据所占比例与原数据集中的比例偏差不超过给定阈值ε.基于上述原则,作者采用数学方法推导出采样数据集大小的上界和下界,对原始数据集进行随机采样.
对于每个时序数据实例,使用逐段聚集平均(Piecewise Aggregate Approximation,PAA)进行维度缩减.具体的,对于一条长度为D的时序数据,PAA将其划分为d个帧(d<D),将每个帧用一个值(例如该帧上数据点的均值)表示,从而将时序数据的长度从D减小为d,达到降维的目的.
通过上述两项操作,能够从规模为N*D的原始数据集中获得规模为s*d的采样数据集(s≤N, d≤D),且采样集保持原数据集的分布(underlying distribution)不变.用采样集作为聚类模块的输入,大大降低了计算开销.
点(x1,y1)与点(x2,y2)的L1距离可表示为:L = |x1-x2|+|y1-y2|.L1 距离计算复杂度低,且对于脉冲噪声具有一定的鲁棒性,适合作为处理大规模时序数据的相似性度量.
时序数据集中的数据曲线模式多种多样,每个类别中含有的曲线数量也有较大差异.面对这种情况,基于密度的聚类方法是一种很好的选择.一般地,如果时序曲线a和b相似,b和c相似,则a、b、c很可能属于同一类别.基于密度的聚类算法正是根据这一思想将相似曲线逐步加入同一聚类簇中,从而能够找出任意形状的聚类簇.特别地,真实的时序数据模式较为复杂,在一个数据集中可能存在多种密度的聚类簇(如下图所示).因此本文中将基于密度的DBSCAN算法改进为多密度的Multi-DBSCAN,提升聚类准确性.
在对采样集进行聚类后,使用分派(assignment)策略对大量未分类时序数据曲线进行快速分类.具体的,对于一个未分类实例,找出与它相似性距离最近的已分类实例A.若二者的距离小于A所在聚类簇的密度半径,则将该实例划分至与A相同的类别中.否则,认为该实例是一个异常(outlier).为提高计算效率,本文中还建立了有序邻居图,利用剪枝的方法加速寻找最邻近实例的过程,实现对大量时序数据的快速分类.
文中使用标准化互信息(Normalized Mutual Information, NMI)作为指标对聚类算法的准确性进行评价.作者分别在15个时序数据集上将本文提出的算法YADING与三种常用的聚类算法DECLUE2.0、DBSCAN、CLARANS进行对比,在不同规模数据集上的计算时间及所有数据集上的平均NMI如下图所示.可以看出,YADING在计算效率和聚类准确性方面均领先于几种常用算法.
本文介绍了一套快速、准确的时序数据聚类算法,用于对大规模时序数据进行快速分类,是时序数据挖掘与分析工作的重要手段.通过随机采样和维度缩减获得规模较小的采样集,从而大大减小聚类算法需要考察的数据量,降低计算开销.之后设计了一套基于L1 距离和Multi-DBSCAN算法的时序数据聚类方案,并能够自动进行密度估计,具有较高的鲁棒性.对于大量的未分类时序数据,根据聚类结果采用分派策略进行快速分类.最后,文中分别采用理论推导与真实数据验证的方式证明了该算法在解决大规模时序数据聚类问题上的高效性和准确性,具有很好的实用价值.
此外,在NetMan实验室今年十月份推出的智能运维挑战赛中,将提供来自互联网公司的公开脱敏数据集,供大家尝试自己的KPI聚类算法.欢迎感兴趣的朋友踊跃参与.
由于长度限制,本文没有介绍细节,特此附上原文链接,点击阅读原文获取.
转载请注明本页网址:
http://www.vephp.com/jiaocheng/1944.html