本发明涉及数据分析技术领域,特别涉及一种基于时间序列异常波动的关联分析方法及装置。
背景技术:
互联网服务已经成为现代人们生活中不可缺少的一部分,为了对互联网公司的各项服务进行管理,公司的运维人员通常会监控收集成千上万的关键性能指标,这些指标(例如服务请求数量、服务请求成功率等)的形式多为时间序列。在实际的运维管理工作中,由于各种原因(例如网络中断、恶意攻击等),公司的服务中断不可避免。当服务发生故障时,与故障根因相关的许多时间序列数据也会出现异常的波动,而且这些异常波动也会传递到其他有业务关联或者模块调用关系的时间序列,形成报警风暴。这些报警中的大多数都是冗余的,只有少数的报警需要运维人员去关注和解决。此外,发生异常波动的时间序列交织在一起,也使得故障排查工作费时费力非常困难。通过自动挖掘时间序列间的异常波动关系,可以帮助运维人员更加高效智能地进行故障排查。
学术界和工业界有很多时间序列的关联分析算法。皮尔森相关系数(pearsoncorrelationcoefficient)、斯皮尔曼相关系数(spearmancorrelationcoefficient)、格兰杰因果分析算法(grangercausality)等关注的是时间序列间的线性关系和预测相关性,无法准确描述和捕捉时间序列的异常波动特征。j-measure算法需要先对时间序列做异常检测,得到时间序列的二分类值,但是异常检测的准确度是非常有挑战的。structure-of-influencegraphs算法只关注时间序列的离群点部分,无法适应更多样的时间序列类型和异常类型。
这些关联分析算法关注的问题要么与异常波动关联分析的概念本质不相同,要么只关注时间序列的离群部分,无法适应更多样的时间序列和异常波动类型。因此,这些算法都不能很好的解决时间序列的异常波动关联问题。
技术实现要素:
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种基于时间序列异常波动的关联分析方法,该方法可以高效地进行异常波动的关联分析。
本发明的另一个目的在于提出一种基于时间序列异常波动的关联分析装置。
为达到上述目的,本发明一方面实施例提出了一种基于时间序列异常波动的关联分析方法,包括:
通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;
根据所述时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
为达到上述目的,本发明另一方面实施例提出了一种基于时间序列异常波动的关联分析装置,包括:
特征提取模块,用于通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;
关联分析模块,用于根据所述时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
本发明实施例的基于时间序列异常波动的关联分析方法及装置,通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;根据时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。由此,高效地进行异常波动的关联分析。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的基于时间序列异常波动的关联分析方法流程图;
图2为根据本发明一个实施例的基于时间序列异常波动的关联分析方法架构图;
图3为根据本发明一个实施例的一个时间序列,预测序列,波动特征序列的实例示意图;
图4为根据本发明一个实施例的6个时间序列和时间序列对应的异常波动特征曲线示意图;
图5为根据本发明一个实施例的报警压缩实例热度图表示,框内时间序列为一个报警簇;
图6为根据本发明一个实施例的推荐topn的可能原因实例示意图;
图7为根据本发明一个实施例的数据库服务上自动构建波动传播链的实例示意图;
图8为根据本发明一个实施例的基于时间序列异常波动的关联分析装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述根据本发明实施例提出的基于时间序列异常波动的关联分析方法及装置。
首先将参照附图描述根据本发明实施例提出的基于时间序列异常波动的关联分析方法。
图1为根据本发明一个实施例的基于时间序列异常波动的关联分析方法流程图。
如图1所示,该基于时间序列异常波动的关联分析方法包括以下步骤:
步骤s1,通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征。
步骤s2,根据时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
本发明提出了一种无监督的时间序列异常波动关联分析算法,该方法首先通过特征工程来挖掘提取时间序列的波动特征,然后基于提取的波动特征进行不同时间序列之间的相关性判断,并最终给出时间序列的异常波动关联关系结果。
如图2所示,为时间序列异常波动关联分析算法的整体架构,在本发明的一个实施例中,输入是两根时间序列曲线,输出结果是两个时间序列的异常波动关联关系,即:两个时间序列是否异常波动相关,如果相关,同时输出波动的先后顺序和异常波动的方向。算法架构整体分为两个核心部分:特征工程和相关性测量。
首先,进行问题定义,对于一个时间序列s=[s1,s2,…,sm],si是时间序列s在时刻i的数据,m是时间序列的长度。对于单一时间序列,在数据采集和预处理时要求数据时间间隔相同。对于两个时间序列,如果时间间隔不同,可以取两个序列时间间隔的最小公倍数作为公共的时间间隔。时间序列s的预测序列p=[p1,p2,…,pm],pi是si的预测值。因此,一个时间序列的预测误差序列f=[f1,f2,…,fm],fi=si-pi。对于一个时间序列,正常的部分是比较容易地被准确预测出来,但是异常波动部分通常都是由一些不可预见的突发因素导致的,很难被预测。预测误差则可以很好地用来表示时间序列的异常波动特征,因此,本发明使用时间序列的预测误差序列来表示该时间序列的异常波动特征。图3展示了一个时间序列,预测序列,波动特征序列的实例。此外,用于得到预测序列的预测算法及对应的参数即为特征提取器。
本发明的目的是挖掘两个时间序列的异常波动关联关系,这种异常波动关联关系可以帮助进行故障排查。具体的,这种关系包括三个具体问题:两个时间序列的异常波动是否相关;如果相关,异常波动的先后顺序如何(同时发生或者某根时间序列曲线的异常波动先发生);异常波动的方向是否一致(异常波动方向一致或者相反)。
进一步地,在本发明的一个实施例中,通过异常波动特征曲线判断多个时间序列之间的异常波动是否关联。
利用原始的时间序列曲线来判断异常波动关联关系比较困难,因此,本发明借助时间序列的异常波动特征曲线。如果两个时间序列的异常波动特征曲线相关(即异常波动同时发生或者发生时有一定的相位差),那么原始的两个时间序列的波动相关。图4展示了6根时间序列及其对应的波动特征曲线。从图4中可以看出,s1和s2、s3波动相关,但是与s4波动无关;s1的波动先于s2和s3发生,且波动方向相反;s2和s3的波动同时发生,且波动方向相同。
特征工程的目的是为时间序列找到合适的异常波动特征提取器,由于不同时间序列有不同的特征,单一的特征提取器无法适用于所有的时间序列。因此,如果提供足够多的经过筛选的优秀的时间序列预测算法,那么,对于任何一个时间序列,总有一个算法可以为该时间序列提取到合适的波动特征。
特征工程主要包括两个步骤,特征提取、特征放大。
1)特征提取:如表1,特征提取主要包含了我们预选取的预测模型及参数,总计一共有86个特征提取器,因此对于一个时间序列,我们可以得到86个波动特征。
表1本发明在特征工程中使用的预测算法及其特征提取器
2)特征放大:一个时间序列大部分时间范围内都是正常的,没有很大异常波动,只有随机的噪声。只有当线上服务受到影响时,才会产生异常波动。因此,异常波动的数量是远远小于正常数据的。为了削弱噪声的影响,本发明提出了一个改进版的激励函数:一个时间序列的波动程度越大,波动特征也就会被放大的越大,这样就使得我们的异常波动特征更具区别度,对最后的相关性测量也更有帮助。
其中,x是经过特征提取后得到的特征序列,a和b是改进版激励函数的超参。其中a是函数f的增长率,a的值越大,函数f增长速度越快,a一般取值为0.5。b是函数的截断值,如果|x|>b,函数f的值便不会增长。
提取到放大后的异常波动特征之后,下一步就是相关性计算。如果两个时间序列异常波动相关,至少有分别来自两个时间序列的异常波动特征也相关。相关性测量的目的是根据特征工程得到异常波动特征计算得到相关性结果。接下来,具体介绍特征工程和相关性测量。对两个时间序列的异常波动特征进行相关性判断时,需要考虑到时间序列的轻微形变以及相位差。因此,挑选互相关(cross-correlation)来测量两个异常波动特征的相关性结果,因为该算法可以很好的适应曲线的轻微形变和相位变化。
将两个时间序列(x和y)的所有异常波动特征(分别用{g},{h}表示,其中g和h分别是{g},{h}中其中一个异常波动特征序列)进行全部计算,选取绝对值最大的相关性结果作为最终结果。如果该结果大于某阈值(该阈值可以通过人工经验设定,取值范围为0-1),那么异常波动相关,否则异常波动无关。
gw表示g向右平移w(w>0)个单位(如果w<0,g向左平移-w个单位),l是异常波动特征序列g和h的长度。
异常波动先后顺序可以通过互相关的位移结果判断,如果位移w大于0,那么x先于y波动发生;如果位移w小于0,那么x晚于y波动发生;如果位移w等于0,那么x和y波动同时发生。
异常波动方向可以通过原始相关性结果cc(gw,h)的正负性判断。如果原始结果cc(gw,h)为正,那么异常波动方向一致,如果结果cc(gw,h)为负,异常波动方向相反。
本发明的分析方法在互联网公司实际生产环境中进行了测试,实验部分包括了两个数据集:数据集1:异常波动相关的两个时间序列的原始曲线数据形状不同;数据集2:异常波动相关的两个时间序列的原始数据曲线形状相似。为证明本发明效果,选取了四种关联分析工作作为对比算法,表2展示了本发明和对比算法在两个数据集上的结果。结果表明本发明在两个数据集上都比其他的对比算法效果要更好,且在三个异常波动关联问题上的f1-score分别大于0.84,0.92,和0.95。
表格2本发明和对比算法在两个数据集上的效果,n/a表示无结果
具体的,时间序列的异常波动关联关系结果可以在以下三个方面帮助进行故障排查:报警压缩、推荐topn的可能原因、构建异常波动传播链。接下来介绍本发明在故障排查工作中的应用实例。
报警压缩:对于大量的时间序列,本发明会计算所有时间序列的两两之间的异常波动相关程度,然后使用k-means进行聚类(k可以使用轮廓系数方法选择)。每一类内的时间序列可以当成一个报警簇,在报警的时候当成一个整体进行报警。图5展示了本发明利用24根时间序列的波动关联结果聚成3类报警簇的实例。本发明在699根时间序列上进行报警压缩,最终形成208个报警,在0.9748的压缩准确度前提下压缩效率为70.24%。
推荐topn的可能原因:如图6所示,对于任一时间序列x,本发明在海量时间序列数据集中可以找到该时间序列的topn相关的时间序列曲线。在进行故障排查时,运维人员可以优先检查这topn的曲线来对时间序列x进行快速异常分析。本发明在117根时间序列上做top5推荐,推荐准确度为0.8051。
构建异常波动传播链:本发明通过分析时间序列之间的波动传播关系来构建异常波动传播链,这个异常波动传播链可以反映不同时间序列之间的波动是如何关联在一起的。图7展示了本发明在数据库服务上自动构建波动传播链的实例,相比较人工的方式,本发明在不需要专家领域知识的情况下可以自动准确的构建异常波动传播链。图7(左)表示人工构建的异常波动传播链;图7(右)表示本发明自动构建的异常波动传播链。(箭头表示异常波动先后顺序;“ ”表示异常波动方向一致,“-”表示异常波动方向相反)。
根据本发明实施例提出的基于时间序列异常波动的关联分析方法,通过
其次参照附图描述根据本发明实施例提出的基于时间序列异常波动的关联分析装置。
图8为根据本发明一个实施例的基于时间序列异常波动的关联分析装置结构示意图。
如图8所示,该基于时间序列异常波动的关联分析装置包括:特征提取模块801和关联分析模块802。
特征提取模块801,用于通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征。
关联分析模块802,用于根据时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
进一步地,在本发明的一个实施例中,还包括:输出模块,用于若两个时间序列的异常波动相关,则同时输出波动的先后顺序和异常波动的方向。
进一步地,在本发明的一个实施例中,通过时间序列的预测误差序列来表示该时间序列的异常波动特征。
进一步地,在本发明的一个实施例中,通过异常波动特征曲线判断多个时间序列之间的异常波动是否关联。
需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。
根据本发明实施例提出的基于时间序列异常波动的关联分析装置,通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;根据时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。由此,高效地进行异常波动的关联分析。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
1.一种基于时间序列异常波动的关联分析方法,其特征在于,包括以下步骤:
通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;
根据所述时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
2.根据权利要求1所述的方法,其特征在于,还包括:若两个时间序列的异常波动相关,则同时输出波动的先后顺序和异常波动的方向。
3.根据权利要求1所述的方法,其特征在于,通过时间序列的预测误差序列来表示时间序列的异常波动特征。
4.根据权利要求1所述的方法,其特征在于,通过异常波动特征曲线判断多个时间序列之间的异常波动是否关联。
5.根据权利要求1所述的方法,其特征在于,还包括:对提取的特征进行特征放大。
6.根据权利要求1所述的方法,其特征在于,通过互相关来测量两个异常波动特征的相关性结果。
7.一种基于时间序列异常波动的关联分析装置,其特征在于,包括:
特征提取模块,用于通过特征工程对多个时间序列进行特征提取,得到每个时间序列对应的时间序列波动特征;
关联分析模块,用于根据所述时间序列波动特征进行相关性判断,得到每个时间序列之间的异常波动关联关系结果。
8.根据权利要求7所述的基于时间序列异常波动的关联分析装置,其特征在于,还包括:输出模块,用于若两个时间序列的异常波动相关,则同时输出波动的先后顺序和异常波动的方向。
9.根据权利要求7所述的基于时间序列异常波动的关联分析装置,其特征在于,通过时间序列的预测误差序列来表示该时间序列的异常波动特征。
10.根据权利要求7所述的基于时间序列异常波动的关联分析装置,其特征在于,通过异常波动特征曲线判断多个时间序列之间的异常波动是否关联。
技术总结