时序转化为图构建高效可解释的时序分析模型

本文简要介绍我们刚刚被WSDM2021会议录用并即将发表的论文"Time-Series Event Prediction with Evolutionary State Graph"(论文地址),在文中我们提出了一种将时序转化为图进行表示建模的方法。同时我们把所实现的方法落地为阿里云·SLS的智能巡检服务,可以应用于大规模的时间序列异常检测与分析,辅助运维,运营,研发等诸多场景。


整体导读

  • 文章通过真实场景下数据分析,发现了时间序列状态之间的动态关系对于时序事件预测很重要;
  • 文章提出了演化状态图来捕获时序状态之间的关系,并提出了EvoNet模型对演化状态图进行建模分析,在提高事件预测准确度的同时,也具备良好的可解释性;
  • 文章发表在数据挖掘领域顶级会议 WSDM 2021 上。

时间序列的状态

如何对时间序列进行有效的分析在学术界有广泛的研究,例如异常检测[2],语音识别[3]等。工业界也有非常多的应用场景,通常需要模型在进行判断的同时(例如判断异常),给出所做判断的合理解释,这对帮助人们进行更好的决策有很大的作用。

可解释的时间序列分析通常需要我们提取时间序列中代表性的特征。以前的工作很大一部分从经典的特征工程和表示学习入手,这些方法具有很好的可解释性,但主要依靠人的经验,在复杂的场景下很难做到通用化。近年来随着深度学习的发展,许多工作开始尝试一些复杂的模型方法来自动的挖掘特征。然而,尽管这些方法取得了良好的效果,但由于模型的复杂度高以及难以对结果很好的解释,许多方法不能很好地满足实际工业落地的需求。

近年来,可解释的时序建模多着眼于离散时序,在时间轴上将时序分段,然后从分段中抓出可以用于判断异常的表示,常见的方法有:

  • 字典方法[3],找时序分段的特征值sax_ts.jpg
  • 形状方法[4],找时序分段的特殊波形shapelet.jpg
  • 聚类方法[5],找时序分段的分类特征cluster_ts.jpg

这些方法可以有效的捕捉时序中的状态,即有表征意义的特征片段。然而,这些方式都是以静态的方式捕捉出特征,而忽略了时间序列是动态演变的。基于以上背景为出发,为了描述时间序列的动态信息,同时让模型学习更好的可解释性表示,该论文尝试捕捉时序状态随时间的动态变化信息,将相邻两时序段之间的状态变化用图(Graph)这种数据结构进行表示。整体时序的演变转化为动态图的变化,形成一种可推理可解释的方法用于时序建模与分析。

时序状态的识别

这里以时序聚类为例子,描述时序状态的识别以及在时序上的映射。这里时序状态定义为,我们可以量化他们之间的距离来表示时序片段映射到时序状态的权重,具体为:

,

其中个状态上。

时序演化状态图

当我们将时序段识别成带权重的状态集后,一种简单的方法是将时间序列视为最可能状态的新的序列,然后对新构建序列的马尔科夫性质进行建模分析[6]。 但是,一个时序段不只会属于一个状态,而应该将其识别为具有不同权重的多个状态。因此,这项工作提出了一种新颖的动态图结构来描述状态之间的关系,并探索状态的动态变化如何揭示时间序列的演化。

论文将演化状态图定义为一系列加权有向图。这里观察到的每个时序段的状态权重是独立的,那么转移权重可以由下式计算:

这是的联合权重。相比于构建新序列的方法,演化状态图通过对每个时序段中多个状态及其跨段的转移关系进行建模,沿时间轴保留了来自原始数据的更多信息。

observe_case.jpg

上图展示了一个预测网络流量异常的演化状态图的示例,实线表示写入流量,虚线表示读取流量,红色表示当天发生异常事件。(a) 可视化了四种识别出的状态,而 (b) 呈现在四个不同的时间间隔(在(a)中标记的I,II,III,IV)的演化状态图。 从图中所示的案例可以看出,当发生异常事件时,状态转换(#2→#16)和(#2→#8)在时间I上更加频繁。 同样,状态转换(#2→#8)和(#8→#23)在时间II处很明显。 这些转变表明,写入和读取流量的不平衡(状态8和状态16)或流量下降(状态23)将导致网络异常。 在时间III,在此期间未发生异常,可以看到状态主要停留在#2中。 然后在下一个时刻IV出现异常。 因此可以看到状态转换#2→#16的明显增加。

时序演化状态图网络

当时序转化为动态图·演化状态图之后,如何对这种动态图结构进行建模分析变为了主要的问题,受图神经网络(GNN)的启发[7],该文的研究者设计了两种机制来对演化状态图进行建模与分析,即局部信息聚合和时间图传播。

model.jpg

上图说明了所提出的演化状态图网络(EvoNet)的总体结构。对于给定的时间序列以及事件对于图中每个节点的信息进行编码,并定义表示向量 用于编码整个图的信息。

基于此,如图a,EvoNet通过消息传递网络(message passing)[8]来聚合局部的结构信息:

并使用循环神经网络[9] 进一步传播时间上的节点以及图的信息:

然后,EvoNet将学习到的特征表示应用于下游的时序任务。具体的推导逻辑大家可以从原文[1]中获取,这里不做过多阐述。

特别的,在进行时间上信息聚合的操作中,该研究者们提出在点到点建模的同时,还应关注点到图的影响,即时序的演化不仅仅与状态与状态之间的转变有关,状态与整个时序片段之间的关系也有影响。因此,如图b,作者们采用层次循环神经网络机制,捕捉节点级别信息与图级别信息随时间的影响,通过有时间注意力机制(temporal attention)量化不同时间位置上影响的权重:

实验结果

文章对来自Kaggle的两个公共数据集,和来自国家电网、中国电信、阿里云的三个真实世界数据集进行时间序列事件预测任务。实验结果如下表所示:

截屏2020-10-30 下午2.57.44.png

工业落地实践

该文提出的算法已落地为阿里云·SLS的时间序列智能巡检服务。该方法可以提供大规模秒级别的实时异常检测,并给出异常判断初步解释,辅助于运维,运营,风控等诸多场景。详情请见《阿里云SLS·机器学习服务》。下面展现该文所列举的一个例子:

ali_sls_case.jpg

如图所示,图a 展现了云服务主机(ECS)监控下的每秒CPU利用率。红色表示1分钟内有异常。这个例子中设定了10个状态以构建演化状态图,并可视化了每个时间位置的时间注意力分数。

1.时间注意机制的有效性:如图b所示,热力图可视化了不同时间位置的注意力得分。我们可以看到注意分数成功地突出了图a中异常的位置。

2.演化状态图的可解释性:如图c-e所示,我们可以看到,时间位置I的图中有一个主要的转移#2→#4→#0,而在时间位置II的图中则是#3→#5。请注意,II之后立即发生异常。当我们在时间轴上汇总所有演化状态图时(图d)可以发现,过渡#2→#4→#0是图中的主要路径,而#3→#5是次要路径。这些观察结果表明,间隔II中发生的转移#3→#5是异常的。

如图e所可视化的不同状态的平均曲线,可以看到,转移#2→#4→#0表示服务进程,即CPU利用率从0.25上升到0.75,并在保持一段时间后下降。相反,转移#3→#5表示CPU利用率上升到0.5,然后立即下降。这些观察结果表明,这种异常可能是由CPU的故障引起的。

原文链接
本文为阿里云原创内容,未经允许不得转载。

你可能感兴趣的:(javascript)