2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

最近看了一篇有关“云系统的跨数据集时间序列异常检测”的文章,文章发表在系统领域*会议 USENIX ATC 2019 上。文章提出了基于迁移学习和主动学习的跨数据集异常检测框架,可以有效地在不同时间序列数据集之间进行迁移,只需要1%-5% 的标注样本量即可达到高精度检测。原文链接:
https://www.usenix.org/system/files/atc19-zhang-xu.pdf
https://www.usenix.org/sites/default/files/conference/protected-files/atc19_slides_lt_zhang_xu.pdf
https://www.usenix.org/conference/atc19/presentation/zhang-xu

Cross-dataset Time Series Anomaly Detection for Cloud Systems

Abstract

近年来,软件应用程序越来越多地作为在线服务部署在云计算平台上。重要的是要检测云系统中的异常情况,以保持高服务可用性。但是,考虑到云监视数据的速度,数量和多样性,很难获得足够的标记数据来建立准确的异常检测模型。在本文中,我们提出了跨数据集异常检测:通过在现有的标记数据集(源)上训练异常检测模型来检测新的未标记数据集(目标)中的异常。我们的方法称为ATAD(主动转移异常检测),它结合了迁移学习和主动学习技术。应用转移学习将知识从源数据集转移到目标数据集,并应用主动学习来确定未标记数据集中一小部分样本的信息标签。通过实验,我们证明了ATAD在跨数据集时间序列异常检测中是有效的。此外,我们只需要标记大约1%-5%的未标记数据,仍然可以显著提高性能。

1 Introduction

近年来,我们目睹了云服务系统的越来越多的采用。现在,许多软件应用程序已部署在云计算平台上,例如Microsoft Azure,Google Cloud Platform和Amazon Web Services(AWS)。由于云系统可以24/7全天候地被全球数百万用户使用,因此高服务可靠性和可用性至关重要。

但是,像其他软件系统一样,云系统可能会表现出一些异常行为。这些异常可能严重影响服务可用性和可靠性,甚至可能导致巨大的财务损失。异常可能是由多种因素(例如软件错误,磁盘故障,内存泄漏,网络中断等)引起的,并由多种云监控数据(例如KPI,性能计数器,使用情况统计信息,系统指标)反映出来的,日志等)。云监视数据通常是时间序列数据,由于云系统的规模和复杂性,它们具有很高的速度和巨大的数量。为了维持较高的服务可靠性和可用性,从大量云监控数据中准确及时地检测异常非常重要,同时也具有挑战性。

具体来说,由于云系统的特性,异常检测在实践中会遇到一些挑战。大型云系统由各种服务组成,每个服务都与一些监视数据相关联。对于某些类型的数据,异常的特征在许多服务中很常见。对于某些其他类型的数据,异常的特征可能因服务而异。例如,计算密集型服务正常使用90%的CPU,而其他服务则异常。因此,简单的基于阈值的异常检测器几乎不能很好地用于各种服务。

多年来,已经提出了许多基于机器学习的异常检测方法,包括有监督的[22,25]和无监督的方法[2,41,38]。但是,在真正的云环境中检测大量和多样化的时间序列数据中的异常并不是一件容易的事,在实际的云环境中,标记数据很少,但需要很高的检测性能。无监督学习方法可以处理大量数据,因为它们不需要标记的数据。然而,通过这些方法实现的性能相当低[13]。尽管有监督的学习方法比无监督的学习方法可以获得更高的准确性,但是由于云监控数据的数量和多样性,手动标记异常非常耗时且乏味。因此,基于监督学习的方法很难在实践中应用于异常检测。

面对以上挑战,为了构建准确,高效的异常检测模型,我们提出了ATAD,它可以为云系统提供跨数据集异常检测。跨数据集的主要思想是通过从现有的带标签的数据集(源数据集)中学习,对未标记的数据集(目标数据集)执行异常检测。例如,可以从诸如NAB [23]之类的公共数据集中学习检测器,然后将其应用于从现实世界系统收集的未标记数据集。

ATAD由两个主要部分组成:1)迁移学习,将从标记的时间序列数据中学到的常见异常行为转移到大量目标未标记的数据集中。通过迁移学习,可以利用数据集之间的共性,并减少目标数据集的标注工作量。 2)主动学习,通过仅标记目标数据集中的少量选定样本来提高检测性能。通过主动学习,只需少量标签工作即可解决具有特定特征的多样化数据。

特别是,在“迁移学习”组件中,我们将识别云监视数据的多个功能,并进行聚类以选择现有标记数据的适当子集作为子源域。然后应用CORAL算法[37]来缩小源域和目标域之间的特征差异。在主动学习组件中,我们利用UCD(不确定性-上下文多样性)方法推荐要标记的信息性数据点。标记的点用于重新训练从“迁移学习”组件中训练的分类器。通过这种方式,我们旨在最大程度地减少标记工作并尽可能提高检测器的性能。

我们已经对公共数据集进行了实验,以验证我们方法的有效性。实验结果表明,使用ATAD可以实现跨数据集异常检测,精度较高。我们在公共数据集和真实世界的云监控数据上测试有效性。在公共数据集上,当通过从源数据集(非Yahoo,例如AWS,Twitter和人工数据集)获知的检测器对目标数据集(即Yahoo)执行异常检测时,ATAD的准确性要高于现有方法。此外,标记大约1%-5%的未标记数据可以比相关方法获得更高的F1分数。我们还使用公共数据集训练了ATAD模型,并将训练后的模型应用于检测Microsoft的真实云监控数据中的异常。 ATAD获得了最好的F1-Score,远远高于其他方法。

本文的贡献如下:我们提出了一种新的异常检测方法ATAD,该方法可以对云系统进行跨数据集异常检测。据我们所知,我们是最早使用迁移学习和主动学习技术相结合来检测时间序列云数据异常的。我们已经使用公共和真实数据集对提出的方法进行了广泛的评估。

本文的组织结构如下:在第2节中,我们首先详细说明我们工作的背景和动机。在第3节中,将详细介绍ATAD。第4节报告了实验和相应的结果。接下来,我们在第5节中讨论对有效性的威胁。在第7节中总结本文之前,在第6节中介绍相关工作。

3 Proposed Approach

为了解决上述挑战,在本文中,我们提出了一种新颖的时间序列异常检测方法,称为ATAD(主动迁移异常检测),该方法将迁移学习和主动学习技术相结合,用于云监控数据中的异常检测。图1显示了ATAD的总体工作流程。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

有两组输入数据,一组是未标记的时间序列数据Tu,将在其上进行异常检测,另一组是从公共域或云系统的其他组件收集的标记的时间序列数据T1。在T1中,时间序列中的每个点已被手动标记为异常或正常。

我们的方法包括两个主要组件,即迁移学习组件和主动学习组件。在迁移学习中,为了合并时间序列数据的时间特性,从原始数据集T1提取了多个一般特征,并形成了特征数据集F1。然后将基于特征和基于实例的迁移学习方法应用于F1以学习基本检测模型。之后,未标记的时间序列Tu经历相同的特征提取过程,并形成特征数据集Fu。主动学习组件建议从Fu中获取少量信息量样本,以通过不确定性和上下文多样性(UCD)策略进行标记。然后,将标记的数据用于重新训练基本检测模型。经过T轮主动学习后,我们获得了最终的异常检测器。我们将在以下各节中介绍有关ATAD的更多详细信息。

3.1 Transfer Learning Component

许多机器学习方法都假定标记和未标记数据的分布是相同的。然而,相反,迁移学习允许在训练和测试中使用的域,任务和分布是不同的[30]。为了实现不同时间序列数据集之间的知识迁移,我们针对大型云监控数据采用了一种高效有效的迁移方法。对于云系统中的异常检测问题,直接执行迁移学习并非易事。设计迁移学习组件时,我们需要考虑以下因素。

云监视数据通常以时间序列的形式显示。时间序列不是独立的数据,而是具有时间依赖性的一组数据点。因此,时间序列的异常模式具有上下文相关性。如何将这种相关性纳入异常检测是一个挑战。在我们的工作中,我们在每个数据点提取与时间序列相关的特征。每个数据点都从原始的一维标量转换为高维特征向量,并且上下文信息由这些特征保留。在ATAD中,我们不仅考虑了简单的描述性特征(统计值),而且还考虑了顺序感知特征(预测错误特征和时间特征)。

对于一个时间序列,应该在什么粒度上执行迁移学习是一个问题。我们可以对整个时间序列,子序列或离散时间点进行迁移学习。如果迁移学习是在包含多个不同异常模式的粗粒度(例如整个时间序列或子序列)上执行的,则不利于区分它们。此外,粗粒度异常检测导致定位和检索异常原因的困难。在这项工作中,我们旨在以细粒度(即针对每个数据点)进行异常检测,因此我们在数据点级别执行迁移学习。

迁移学习要求源域和目标域具有潜在的相似性。但是,从大型云系统中的各个组件生成的时间序列可能会非常不同。我们应保证源域和目标域来自相似的服务或具有相似的特性。因此,在迁移学习过程中,我们需要过滤掉那些与目标域中的样本不相似的源域样本。

图2显示了迁移学习组件的工作流程。以下小节详细介绍了我们的算法。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

3.1.1 Feature Identifification

ATAD的特征工程过程将时间序列(T1)中的每个数据点转换为一组特征(F1),可以捕获该点周围的上下文和时间信息。这些特征可以分为三类:统计特征,预测误差特征和时间特征。

在计算这些特征的值之前,我们使用离散傅立叶变换(DFT)估计最主要频率的周期p。不同的时间段确定了在以下过程中使用的滑动窗口的不同大小。

统计特征:统计特征描述了时间序列中每个数据点的一些基本特征。我们认为统计特征能够描述从云系统中各种来源生成的不同时间序列的基本特征,并且有利于检测违反基本特征的异常。例如,在一个运行中的计算密集型服务中,如果某个时间窗口内的平均CPU使用率趋于降低,则可能表明该计算过程的一部分意外停止。

我们确定了用于描述时间序列数据的统计特征的特征(如表1所示)。这些描述性特征全部在从周期p得出的滚动窗口中计算。它们可以代表时间序列数据的短期特征,例如均值,方差,自相关,趋势,余数和平稳检验。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

均值、方差、交叉点的数量、一阶自相关、余数的自相关、趋势强度、根据STL分解趋势计算的线性强度、根据STL分解趋势计算的曲率强度、光谱熵、ARCH模型的Lagrange乘数(LM)测试的P值、GARCH模型的拉格朗日乘数(LM)测试的P值

预测误差特征:在先前的工作[22]之后,我们使用时间序列预测产生的一组误差度量作为特征。直觉是,如果当前点的值偏离预测结果,则更有可能出现异常。我们使用集合模型进行预测,并根据时间序列的季节性应用不同的模型。模型利用经典的预测技术,即SARIMA [27], Holt [19], HoltWinters[19]和STL[5]对季节性数据,SARIMA, Holt, Holt- winters,和多项式回归[15]对非季节性数据。度量RMSE(均方根误差)用于在固定时间赋予具有不同权重的不同预测方法。应该将更多的权重分配给更精确的预测模型。通过以下公式计算M个模型在时间t的集合模型的加权预测结果:
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

其中Yˆm,t是模型m在时间t的预测,RMSEm,t是模型m在时间t的预测误差,Yˆ t是时间t的集成预测。

在获得整体预测值Yˆ t之后,我们在3个滚动时间窗口上计算5个度量,以测量预测值与实际值之间的偏差。度量标准显示在表2中,其中Y^是预测值,Y表示实际值,N是时间窗口的大小。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

时间特征:一般来说,系统指标的急剧变化很可能是异常现象。例如,磁盘I / O流量速率的急剧下降可能是由磁盘阵列中的硬件故障引起的。为了了解时间序列数据随时间的变化,我们通过比较两个连续窗口中的数据来识别时间特征(如表3所示)。我们还计算了当前值与先前w值之间的差(例如xnw和xn之间的差)。在我们的实现中,我们分别设置w = p / 2,p,2p,wpr,wpr / 2以获得对应的不同值(Diff-w)。根据一些先验知识选择wpr。例如,如果按小时记录时间序列,则可以将wpr设置为24。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

总而言之,利用原始时间序列值,我们提取了总共37个用于捕获时间序列数据特征的特征。还值得一提的是,所有这些特征都经过规范化,以使其在不同的时间序列之间具有可比性。

3.1.2 The Transfer between Source Domain and Target Domain

为了在源域和目标域之间传递知识,有必要缩小两个域之间的差异。考虑到异常检测任务的有效性和效率要求,我们提出了一种结合基于实例的迁移学习和基于特征的迁移学习的迁移方法。

在迁移学习中,我们应保证源域和目标域来自相似的字段(例如相似的监视数据)或拥有相似的特征(例如趋势或周期)。但是,源域可能包含各种时间序列数据。因此,迁移学习的第一步是从源域收集与目标域中的数据相似的时间序列数据。在ATAD中,我们使用基于实例的方法来筛选出那些与目标域中的对应域不相似的源域样本。

基于实例的迁移学习的思想是选择与目标域中的样本相似的源域样本,以便可以减小两个域之间的差异。对于源域,在识别特征并将T1转换为F1之后,我们在F1上执行K-均值[29]算法以构建K个聚类。每个群集Fil i∈[1,K]是F1的子集,没有重叠,可以将其视为子源域。为了选择相似的样本,首先,将相同的特征提取过程应用于未标记的时间序列数据Tu,以形成特征数据集Fu。然后,我们计算每个未标记样本与每个簇的中心点之间的欧几里得距离。每个目标域样本将分配给最近的子源域Fil。我们将分配到同一簇的测试样本表示为Fiu i∈[1,K]。

在基于实例的迁移之后,我们需要从特征空间的角度进一步缩小目标域与相应子源域之间的差异,因为特征的分布可能仍保持不同。在ATAD中,我们在每个群集上进行相关关联验证(CORAL)[37],这是基于特征的迁移学习过程的思想。 CORAL是一种域自适应算法,可以以无监督的方式对齐二阶统计量,即源特征和目标特征的协方差。具体来说,CORAL旨在最小化目标域和源域的协方差矩阵之间的Frobenius范数,如等式2中所示。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

其中A是线性变换矩阵,Cil是聚类i中标记数据的协方差矩阵,而C i u是聚类i中未标记数据的协方差矩阵。我们可以通过白化源数据并使用目标协方差方法即CORAL重新着色来获得A的最佳解决方案。更多细节可以参考[37]。最后,我们可以得到变换后的新的子源域特征数据F^li{\hat{F}}^i_l

在最后一步中,我们在每个子源域F^li{\hat{F}}^i_l上训练基本的监督模型,例如随机森林(RF)或支持向量机(SVM)。最后,我们可以获得K个独立的基本模型。
有关提出的迁移学习组件的一些注意事项:

•基本模型:我们在实现中使用随机森林作为监督的机器学习模型(即基本模型)。随机森林可以并行执行,因此具有很高的效率。

•计算框架:我们强调可以将此组件视为计算框架。实际上,距离测量,聚类方法和基本模型的选择是灵活的。

•分配复杂度分析:分配未标记样本时,我们需要计算未标记集中的每个样本与所有聚类(子源域)的中心点之间的距离。该时间复杂度为O(m·K),其中K为簇数,m为Fu的大小。 K通常远小于m,可以视为常数,因此O(m·K)≈O(m)。因此,我们的分配过程具有线性复杂性。

•并行处理:值得注意的是,子源域彼此完全独立,这意味着可以以并行方式执行每个子源域的后续过程。这可以帮助提高异常检测的效率。

3.2 Active Learning Component

由于云服务系统的高度复杂性,由不同组件生成的时间序列具有很大的多样性。因此,迁移学习技术不足以在云中的各种时间序列上获得令人满意的结果。在ATAD中,利用主动学习方法,只需少量标记工作即可解决具有特定特征的多样化数据。

主动学习的重点是最大程度地减少用户的标签工作量并提高预测模型的准确性。在这项工作中,我们采用一种主动学习方法,该方法考虑了采样过程中样本的不确定性和上下文多样性。我们简称为UCD。

3.2.1 Uncertainty

多数主动学习方法都将不确定性作为选择标记样本的原则[33],因为人们认为,如果模型对某些样本的分类结果不太确定,则标记此类样本将对基础模型更有帮助。在我们的方法中,我们使用基本模型(随机森林)来估计未标记数据正常或异常的可能性。然后,我们使用以下公式来计算未标记样品的不确定性:
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

其中Prob表示基本模型给出的概率。

我们根据公式3计算不确定性并按降序对其进行排序。不确定性越大,就越需要给它贴上标签。

3.2.2 Context Diversity

在推荐标记样品时,多样性也是需要考虑的一个重要因素。有时,两个样本非常相似或可能属于相同的异常模式。没有必要同时给它们贴上标签。

传统的分集方法通常基于聚类[7],聚类[7]不考虑时间序列场景中样本的上下文。在云系统中,系统指标的时间序列(例如CPU利用率或流量负载)是连续的,没有急剧的断点。因此,在时间序列上相邻的样本趋于相似。我们的主动学习算法充分利用了时间序列的这一特性。

具体来说,我们按不确定度对所有样本进行排序,然后依次进行扫描。如果我们扫描的新样本是在候选集中的另一个样本的上下文中,即这两个样本彼此相邻,则我们认为嵌入其中的信息也可能是相似的。因此,我们将忽略新样本,因为它可能包含多余的信息。如果新样本未出现在候选集中所有样本的上下文中,则将其添加到候选集中。在我们的工作中,样本xt的上下文由参数α控制,该参数表示时间序列中从xt-α到xt +α的范围。图3说明了时间序列中上下文多样性的概念。更多的细节可以在算法1中找到。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

对于每个源域,我们对其自身的测试数据FuiF^i_u进行主动学习。我们建议对d个不同且不确定的样本进行标记,并将标记后的样本加入到训练集中对基模型进行再训练。重复T轮这个过程后,我们得到了最终的检测模型。
2019 Cross-dataset Time Series Anomaly Detection for Cloud Systems云系统的跨数据集时间序列异常检测

3.3 Usage of ATAD

迁移学习和主动学习仅在训练过程中进行。一旦ATAD的训练完成,便会生成分类器,并将其进一步应用于实践中的异常检测任务。 ATAD的检测过程如下:首先,我们将要检测的时间序列数据输入到特征提取组件中,并像训练过程一样提取特征。之后,将特征输入到训练有素的分类器中以获取异常概率。最后,将其概率高于预定阈值的点预测为异常。可以将该预定阈值视为灵敏度参数,以适应各种用户和场景的不同要求。