摘要
- 为确保服务的质量和可靠性,监控大量KPI和检测异常对于大型互联网络公司非常重要。
- 相比于其他时间序列,KPI要长得多,且噪声、异常、相位变化和幅度差异通常会改变KPI的形状并误导聚类算法。
- 论文中提出了一种强大而快速的聚类算法ROCKA,其由四个步骤:预处理、基线提取、聚类和分配组成。
介绍
大多数异常检测算法具有挑战性: 模型选择、参数调整、模型训练、异常标记
KPI是以预定义的时间间隔聚合的流数据,因此基本上是时间序列。当下大多数已发表的论文着重于聚类方法和相似性度量,并假设理想化的时间序列数据,曲线平滑而无异常。
KPI集群面临着经典时间序列聚类中不存在的两个主要新挑战。
噪声,异常,相移和幅度差异通常会改变KPI的形状,从而扭曲KPI的相似性,使其难以使用传统方法准确地聚类KPI KPI通常包含数万个数据点
ROCKA
1. 为了进行有意义的比较,将KPI标准化(消除幅度差异) 2. 提取每个KPI的基础形状称为基线(进一步减少噪声和异常的影响) 3. 采用SBD作为距离测量,处理相移方面很强大,且在处理高维时间序列数据时实现高计算效率 4. ROCKA使用基于密度的有效算法,根据基线的形状相似性创建聚类。 5. 代表性KPI被识别为每个群集中的质心,新的KPI可以根据它们到质心的距离,分配到不同集群。
论文贡献总结
- 第一个关于聚类特殊时间序列(KPI)以及用用强有效的聚类算法(ROCKA)的工作。
- 针对ROCKA,提出三种有效的技术:基线提取、基于形状相似性度量和基于密度的聚类方法
- 使用公共时间序列数据集和实际KPI数据集来验证ROCKA的稳健性和效率。
- ROCKA将状态异常检测算法的模型训练时间缩短了90%,性能损失仅为15%。
- 这是首次报道的使用聚类来减少异常检测的训练开销的研究。
挑战和ROCKA概述
1. 挑战
关键绩效指标通常是定期的,根据应用和系统,它们的周期可能从几天到几周不等。因此,每个KPI通常有数千个点来完全捕获其在一段时间内的行为。
- 噪声和异常:
噪声:在KPI中期望值附近很小的随机波动
异常:在KPI中期望值附近显著波动
噪音和异常可能会误导聚类方法,因为它们可以扭曲KPI之间的相似性。 - 幅度差异
有些KPI看起来不相似,可是如果取出幅度差异,这些KPI可能就具有相似的模式并且可以放在一个集群中进行分析。 - 相移
指两个KPI之间的全局水平移位;相移可能引起难以找到相似的KPI。
这些变化对群集KPI提出了重大挑战,因为它们可能会改变KPI形状,而群集算法需要对这些变化的处理能力很强。此外,KPI通常是高维时间序列数据,同时算法应该具有低复杂度。
2. ROCKA概述
- 为了聚类大量的KPI流,我们创建一个聚类模型,使用随机抽取的KPI流样本,将其余的KPI流分配到聚类中,一个小的样本数据集,就可以将大量的KPI聚类
算法:
1. 预处理
- 线性插值: 对于一条KPI,缺少数据点是很正常的,我们使用线性插值的方法来填充这些KPI流。
- 标准化: 时间序列必须进行标准化,从而使得来自不同源的KPI流具有比较价值
2. 基线提取
- 噪声和异常会改变一条KPI曲线的形状,我们需要一个简单且有效的方法来删除这些极值点从而展现出KPI流的底层结构
(1)平滑极值 - 标准化之后,KPI流得到均值和单位方差均为0。一般的,时间序列出现的异常所占比例小于5%,因而我们简单地移除偏移平均值最远的5%的数据,然后使用线性插值的方法填充那些点。
(2)提取基线 - 除了异常,噪音也会影响两条KPI的相似程度,通过一个小的滑动窗体,使用移动平均的方法,将KPI曲线分解为两部分:基线+残差
- 再次标准化,得到一条标准化之后的基线,将其作为聚类算法的输入。
3. 基于密度的聚类
- 基于形状上的相似性,对样本KPI进行基于密度的聚类。
(1)基于形状的相似度度量 - Lp规范、DTW、互相关
- 基于相关性的度量通常用于信号处理,能够本地地处理时间序列间的相移。可以使用卷积定理和快速傅立叶变换可以将互相关的计算复杂度降低到O(mlog(m))。 因此,基于相关性的度量可以是我们的KPI的合适的相似性度量。互相关计算两个时间序列的滑动内积,这对于相移本身是稳健的。
- 基于形状的距离(SBD)
- 在本文中,我们使用SBD来测量基线的相似性,这些基线具有比理想时间序列更高的维度和更多的相移。
- 互相关是CCs的最大值,意味着在最佳相移s时两条时间序列的相似性;在实践中,规范化互相关(NCC)将值限定在[-1,1]之间,1显示了更好的相似性。
- 接着我们可以根据NCC来定义基于形状的距离(SBD),它的范围是[0,2],0意味着两条序列有同样的形状
(2)使用参数估计的基于密度的聚类
聚类算法大致可以分为6种,我们使用DBSCAN算法 - 首先,它在密集区域可以形成任意性形状和大小的簇
其次,利用相似性的传递,可以扩展聚类 - DBSCAN的主要思想就是寻找一些密集区域的核心,然后根据相似性的传递性来扩展这些核心
- 只有在密度半径以内的对象才可以被吸引到核心内部
如何确定参数theta??
- minPts,Kdis(一个对象和KNN之间的SBD);对于任何一个对象的Kdis都是以降序排列的,曲线的平坦部分表示围绕多个对象的密度是一致的,其上的Kdis可以被认为是候选密度半径,因为它确保了大量的核以扩展簇;而陡峭的部分表示显着的密度变化。
- 但是,候选密度半径应足够小,以确保核心及其邻居彼此相似。大的候选值实际上对应于对象彼此不相似的稀疏区域。具有大Kdis的对象实际上被认为是异常值,即,它与大多数其他对象不相似,并且不应该聚集到任何群集中。
- 操作员可以调整最大半径以获得不同粒度的簇。即,较大的最大半径导致一些粗粒度的簇,而较小的值导致许多细粒度簇和大部分异常值。
4. 分配
计算每个集群的质心,然后将其他没有标记的KPI分配到其中
- 通常,在每一个聚类中,聚类质心算法如下:
- 由于我们使用SBD作为距离度量,因此质心可以用作代表性KPI,捕获群集中KPI的共同基础形状。 对于异常检测,我们可以仅在质心上训练异常检测模型。 在实践中,运营商可以通过其质心直观地了解每个集群中的KPI。
- 认为NCC<0.8的两个时间序列不具有强相关性,因而一条未标记的KPI如果和最近的聚类质心之间的SBD>0.2就认为这是一个异常。
- ROCKA的时间复杂度是O(Nmlog(m) + n^2mlog(m) + n log(n))
评价
1. 基线算法:YADING和YADING’
- YADING是一种用于大规模时间序列数据的新方法。它使用具有L1距离作为相似性度量的多密度聚类算法。它会自动选择多个密度半径,并对每个半径进行基于密度的聚类。YADING在准确性方面优于DENCLUE和DBSCAN算法,并且在速度上优于CLARAN。然而,由于在现实世界的KPI数据中存在太多的形状变化,因此KPI之间的L1距离落入大范围,导致在找到适当的密度半径方面存在一些困难。根据我们的实验,超过95%的真实世界KPI被标记为使用原始YADING的异常值,这是不可接受的。因此,在本文中,当使用真实世界的KPI时,我们使用YADING的改进版本,称为YADING’,通过微调密度半径,以便在YADING中获得更好的聚类结果。
2.公共数据集的结果
我们首先在三个公共数据集上评估ROCKA,并将我们的结果与YADING进行比较。
(1)数据集:我们使用三个公共时间序列数据集,这些时间序列通常被认为是理想化的数据,只有极少的异常和轻微的噪声。 此外,所有三个数据集都是大尺寸的并且具有比其他公共数据集相对较高的维度,使得具有高计算复杂度的算法不适合。 数据也是基于聚类的基础事实来标记的,因此我们可以轻松评估算法的性能。
(2)评估指标:我们使用了一个公认的度量指标,归一化交互信息(NMI),用来评估聚类的准确性。 NMI测量标签和获得的聚类之间的相互依赖性。它的范围从0到1,其中1表示簇完全匹配标签,0表示它们完全不相关。
(3)结果:ROCKA算法表现的要优于YADING
3. 实践中的结果
(1)数据集
属于同一个类型的KPI流,根据它们的不同形状,可以被聚集成不同的簇;但不同类型的KPI不可以属于同一个簇
(2)评估指标
- 在实践中,F-score是运营商评估聚类的广泛使用的直观指标。因此,我们决定在此实验中使用F-score作为我们的评估指标。 F-score是精度和召回的调和平均值,最佳值为1(完美精确度和召回率),最差值为0;对于多类问题,最终的F值是所有级别的平均F值。
- 由于群集应仅包含一种类型的KPI,因此在群集之后,我们通过多数投票规则确定每个群集的KPI类型。然后我们根据分配的KPI类型计算精度和召回率。值得一提的是,基于密度的算法(例如ROCKA和YADING’)将与任何聚类不相似的KPI标记为异常值。由于运营商很难在大规模数据集中识别异常值KPI,因此我们在计算F分数时忽略它们(即,我们仅计算已分配给群集的KPI的F分数);我们使用指标(异常值的一部分)来显示每个算法被视为异常值的KPI的百分比。通常,在实际KPI数据集中存在一些异常值是很常见的,然而,对噪声和异常敏感的算法可能会错误地将大量KPI标记为异常值。相比之下,鲁棒算法将具有较低比例的异常值。
(3)结果
-
聚类真实世界中的KPI流更具有挑战性。ROCKA在两个数据集上都达到了很好的准确性。
对于DS1,ROCKA使用少量异常值精确地聚集所有KPI。 DS1包含来自不同计算机组的相同指标的KPI。通常,来自同一组的机器彼此具有直接或间接关联,因此,它们相应的KPI大致遵循相同的分布。 ROCKA配备了减少形状变化影响的技术,根据其基本形状成功地对KPI进行了聚类。相比之下,尽管YADING'在DS1上也获得了良好的精度,但由于其对形状变化的敏感性,它标记了更大比例的异常值。 DS2包含来自大量计算机的指标,其中KPI之间的关联比DS1弱得多。然而,ROCKA仍然获得了良好的准确性,并且由于其坚固性而仅标记了一小部分异常值。虽然YADING'在群集数据上实现了高F分,但是一半的KPI被标记为异常值。
-
此外,即使在处理高维KPI时,ROCKA也是有效的。对于大量KPI,为每个KPI分配集群只需一秒钟。分配步骤易于并行化,因为它仅取决于预先计算的聚类质心。与YADING’相比,ROCKA花费更多时间主要是因为SBD比L1距离更耗时。但是,简单的L1距离无法处理具有复杂形状变化的KPI。
(4)ROCKA技术的影响
提出三种技术来使我们的ROCKA技术更加稳健快速
-
基线提取
比较了具有和不具有基线提取的ROCKA的F-score和异常值的分数。ROCKA只能准确地聚集少量受噪声和异常影响较小的KPI,但将大部分视为异常值。 -
相似性度量
用其他流行的距离测度,L1规范,欧几里德距离或DTW代替SBD。使用这四种相似性测量的F分数和计算时间,可以看到具有SBD的ROCKA在很大程度上优于其他选项。DTW对相移和形状缩放不变。因此,它可以准确地捕获具有相移的KPI之间的相似性。但是,它也可以完美地对齐具有不同周期或季节性的两个KPI,以使它们彼此相似。因此,DTW的F值低于SBD。此外,DTW花费更长的时间来计算成对距离。
-
聚类方法
在本实验中,我们用K-medoids代替DBSCAN。拥有DBSCAN的ROCKA获得了更好的F分数,分配所消耗的时间仅略高。在K-medoids的每次迭代中,对于每个簇,与所有其他对象具有最小平均距离的对象被识别为中间体。但是,当KPI未完全对齐时,它无法保证一个medoid可以代表群集。 DBSCAN通过对象之间的相似性扩展聚类,这可以通过SBD,Lp范数或任何其他相似性度量获得,并灵活地检测任意形状和大小的聚类。因此,DBSCAN适用于我们的算法。
原文链接:Robust and Rapid Clustering of KPIs for Large-Scale Anomaly Detection