一种基于聚类的自适应时间序列异常检测方法及装置与流程

文档序号:15638854发布日期:2018-10-12 21:49阅读:289来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种基于聚类的自适应时间序列异常检测方法及装置。



背景技术:

时间序列无处不在,广泛应用于医学分析,天气预报,股票预测等领域。多年来,研究人员一直在研究时间序列异常检测和数据清理。异常检测对数据分析和状态检查至关重要。例如,入侵检测系统高度依赖于异常检测,因为系统状态被看作是状态参数的时间序列。霍金斯将异常值定义为一种观察结果,它显然或从统计上偏离了其他观察结果。显然,我们可以利用这个对于时间序列异常值的定义来设计检测方案。

目前,有如下几种流行的异常检测方法:

1、无监督学习方法,比如KNN。无监督方法一般过于简单,他们虽然万能,但是精准度往往不高,也经常会错误地识别异常。

2、金融,医疗等行业结合的算法,比如HTM。这些算法往往他们只能用于相应领域的数据,一旦偏离这个领域,算法的识别率会出现很大的限制。

3、基于数据统计规律的方法,比如IMR。这些方法首先要找到数据内的统计规律,对于一维时间序列,通常是找出速度变化率,或者是垂直方位上的变化限制;对于多维的时间序列,可以找到序列之间的统计规律,比如正态分布,然后通过统计规律设计聚类算法。这一类方法的缺点在于,需要预先知道数据的统计性质,可能还需要领域专家的帮助。

4、机器学习算法,比如SVM,HMM。机器学习算法是新兴的探究时间序列异常的方法,这个领域刚刚起步,有一定的发展,通过训练模型来检测待测数据的异常情况。

然而,一方面,上述时间序列处理过程中占用的空间大。另一方面,如果数据是周期时间序列,上述大部分方法都有其局限性,比如无法表示其统计规律,时间序列没有简单到用常见的无监督方法检测异常。其次,时间序列可能会随着时间的推进,出现一定的变化,比如由于温度的影响,石油的某些性质发生了微弱的变化,但是时间序列依然属于正常范围。在这些可能的情况下,之前的方法可能不太适用。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述一个或多个的缺陷,提供了一种基于聚类的自适应时间序列异常检测方法及装置。

为了解决上述技术问题,本发明提供了基于聚类的自适应时间序列异常检测方法,包括:

1)通过SAX方法对训练集中的时间序列进行降维和符号化,得到符号化的时间序列;

2)根据符号化的时间序列构建前缀树;

3)通过滑动窗口从测试集中提取测试子序列,并判断测试集中提取的测试子序列与前缀树中的一个路径匹配时,将该提取的测试子序列标记为正常。

可选地,所述步骤2)中根据符号化的时间序列构建前缀树,包括:

通过滑动窗口扫描所述符号化的时间序列,得到具有相同长度字符的子序列,并根据从训练数据中提取的所述子序列构建前缀树。

可选地,所述步骤3)中在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,将该提取的测试子序列标记为异常。

可选地,所述前缀树包括红色路径和黑色路径;所述步骤2)中根据符号化的时间序列构建前缀树中的红色路径;所述步骤3)中在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,进一步计算该提取的测试子序列与所述前缀树中从树根到叶节点的所有红色路径之间的最小距离,当小于预设阈值时,将该提取的测试子序列标记为正常,并将该提取的测试子序列插入前缀树中作为黑色路径,当不小于预设阈值时将该提取的测试子序列标记为异常;转步骤3)提取下一个测试子序列进行检测。

可选地,所述步骤3)中检测黑色路径的计数达到预设值时转换为红色路径。

本发明还提供了一种基于聚类的自适应时间序列异常检测装置,至少包括:离散处理单元、前缀树构建单元和异常检测单元;

所述离散处理单元,用于通过SAX方法对训练集中的时间序列进行降维和符号化,得到符号化的时间序列;

所述前缀树构建单元,用于根据符号化的时间序列构建前缀树;

所述异常检测单元,用于通过滑动窗口从测试集中提取测试子序列,并判断测试集中提取的测试子序列与前缀树中的一个路径匹配时,将该提取的测试子序列标记为正常。

可选地,所述前缀树构建单元通过滑动窗口扫描所述符号化的时间序列,得到具有相同长度字符的子序列,并根据从训练数据中提取的所述子序列构建前缀树。

可选地,所述异常检测单元在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,将该提取的测试子序列标记为异常。

可选地,所述前缀树包括红色路径和黑色路径;所述前缀树构建单元中根据符号化的时间序列构建前缀树中的红色路径;所述异常检测单元中在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,进一步计算该提取的测试子序列与所述前缀树中从树根到叶节点的所有红色路径之间的最小距离,当小于预设阈值时,将该提取的测试子序列标记为正常,并将该提取的测试子序列插入前缀树中作为黑色路径,当不小于预设阈值时将该提取的测试子序列标记为异常;所述异常检测单元随后继续提取下一个测试子序列进行检测。

可选地,所述异常检测单元检测黑色路径的计数达到预设值时转换为红色路径。

实施本发明实施例提供的基于聚类的自适应时间序列异常检测方法及装置,至少具有如下有益效果:

1、本发明通过降维来减少可能的时间和空间复杂度,将时间序列存储于少量、固定的数据结构中,能够极大地减少时间序列需要的存储空间,同时尽量保证时间序列波动和性质的完整性。

2、本发明在测试数据途中,模型可以自我修改并适应新的模式,因此本发明既能够准确识别时间序列异常,还能够随着时间序列的变化,适应时间序列的某些正常趋势变化。

附图说明

图1是本发明实施例一所提供基于聚类的自适应时间序列异常检测方法的流程图;

图2是根据从训练数据中提取的子序列构建前缀树的示意图;

图3是本发明实施例三所提供基于聚类的自适应时间序列异常检测方法中异常检测步骤的流程图;

图4是本发明实施例四所提供基于聚类的自适应时间序列异常检测装置的示意图。

图中:401:离散处理单元;402:前缀树构建单元;403:异常检测单元。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

如图1所示,本发明实施例提供的基于聚类的自适应时间序列异常检测方法,可以包括以下步骤:

步骤S101:通过SAX(symbolic aggregate approximation)方法对训练集中的时间序列进行降维和符号化,得到符号化的时间序列;SAX是一种时间序列距离测量的方法,具体参见J Lin等发表的“A Symbolic Representation of Time Series,with Implications for Streaming Algorithms”。该方法假设原始数据具有正态分布,高斯分布曲线依据被垂直于x坐标的直线平均分割为σ个等面积的部分(σ是预先设定的字符表大小,一般取3-10),分割点由若干中断点组成,就可以简单地确定在高斯曲线下产生若干等大小的区域。因此,每个区域范围内的时间序列的区间将被一个字符替换。由此可将时间序列的多个连续时间戳(例如50个时间戳)按照上述方法转化为一个字符,从而将高维的时间序列降为低维,同时实现了符号化。根据预先提供的表格,每两个字符的SAX距离可通过表格计算出来。

步骤S102:根据符号化的时间序列构建前缀树。具体地,本发明通过一个固定大小的滑动窗口扫描时间序列并将之切割成离散的符号,时间序列数据被转换成具有相同长度字符的子序列,再根据从训练数据中提取的这些训练子序列来构建前缀树,如图2所示。图2中从训练数据中提取的训练子序列包括:abcda、abcac、abcab、bacad和bacab,根据前缀树的构建规则,第一个为根节点,根节点不包含字符,除根节点外的每一个子节点都包含一个字符。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串,即一个子序列。从第一字符开始有连续重复的字符只占用一个节点,如图2中abcda、abcac中a均共用同一个a字符节点,b共用同一个b字符节点,c共用同一个c字符节点。

步骤S103:通过滑动窗口从测试集中提取测试子序列,并判断测试集中提取的测试子序列与前缀树中的一个路径匹配时,将该提取的测试子序列标记为正常。本发明中所述“匹配”是指测试集中提取的测试子序列与前缀树中的任一个路径表示的子序列完全相同,如测试子序列为abcac,则与图2中训练子序列abcac匹配。测试集的时间序列同样需要使用SAX方法进行降维和符号化,再通过滑动窗口转换成子序列(即所述测试子序列)后,再与前缀树中的路径进行匹配。该步骤S103中在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,将该提取的测试子序列标记为异常。前缀树是由训练数据构建时,它是正常的并且代表了时间序列的精确模式,因此如果从测试集中提取的序列即测试子序列与前缀树的一个路径相匹配,测试子序列被标记为正常,否则认为测试子序列是不正常的,因为它与原始模式的差别太大了。

本发明提出了一种新的方法来解决异常检测的问题,符号化和减少时间序列输入的维数,构造前缀树来构建模型和测试数据。本发明应用SAX方法,引入了离散数据的离散化,并计算离散数据的空间距离来进行异常值检测。由于时间序列的高维性质和大数据量,本发明通过降维来减少可能的时间和空间复杂度。本发明将时间序列存储于少量,固定的数据结构中,能够极大地减少时间序列需要的存储空间,同时尽量保证时间序列波动和性质的完整性。

实施例二

实施例二在实施例一提供的基于聚类的自适应时间序列异常检测方法的基础上进行了优化,其中构建的前缀树包括红色路径和黑色路径。具体到流程上:

在步骤S102中根据符号化的时间序列构建前缀树中的红色路径。

在步骤S103中通过滑动窗口从测试集中提取测试子序列,并判断测试集中提取的测试子序列与前缀树中的一个路径匹配时,将该提取的测试子序列标记为正常。在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,进一步计算该提取的测试子序列与所述前缀树中从树根到叶节点的所有红色路径之间的最小距离,当小于预设阈值时,将该提取的测试子序列标记为正常,并将该提取的测试子序列插入前缀树中作为黑色路径,当最小距离不小于预设阈值时将该提取的测试子序列标记为异常。当黑色路径的计数达到预设值时将转换为红色路径。该步骤S103结束后随后再提取下一个测试子序列进行检测,直至测试集中的所有测试子序列异常检测完毕。应该理解地是,本发明中“红色路径”和“黑色路径”只是用于区分两种路径的类型,本领域基础技术人员也可以采用其它不同名称来指代这两种路径。

该实施例二中前缀树中红色路径是由训练数据构建的,因此代表了时间序列的正常模式。但是某些模式可能未在训练数据中出现,但仍然属于正常模式,那如何避免该问题呢?霍金斯将异常定义为观察结果与其他观察结果的偏差过大的值。也就是说,类似于其他观察的观察结果可以被标记为正常模式。类似地,如果某些模式在时间序列数据中经常发生,那么它可能被认为是正常的。因此,本发明在数据测试期间,如果前缀树中的任何红色路径都不与测试模式完全匹配,并且计算的最小距离低于阈值,则可以将一条新的黑色路径插入到前缀树中。黑色路径是新模式本身,终端节点为测试数据集中出现该模式的计数。当计数到达一定比例时,黑色路径被认为是正常的,并转换为红色路径。

本发明需要用O(n)的时间复杂度来扫描时间序列数据。发现异常时,测试的序列将与前缀树中的每一条路径进行比较,因此比较过程的时间复杂度是O(k)(k:前缀树中的路径数)。最糟糕的情况是,在前缀树中没有任何子序列共享同一个字符,并且没有测试子序列匹配前缀树中的任何一条路径,在这种情况下,时间复杂度是O(n^2)。

实施例三

本发明在实施例二的基础上,提供了实施例三的基于聚类的自适应时间序列异常检测方法,其中提供了步骤S103的具体流程如下:

步骤S301:开始;

步骤S302:令i=1;

步骤S303:使用长度为L的时间窗提取测试集中的测试子序列Y[i,i+L-1];

步骤S304:测试子序列Y[i,i+L-1]与前缀树中的红色路径是否匹配,是则转步骤S305,否则转步骤S306;

步骤S305:将测试子序列Y[i,i+L-1]标记为正常,并转步骤S316;

步骤S306:测试子序列Y[i,i+L-1]与前缀树中的黑色路径是否匹配,是则转步骤S307,否则转步骤S308;

步骤S307:将测试子序列Y[i,i+L-1]标记为正常;

步骤S308:匹配的黑色路径的计数加1;

步骤S309:匹配的黑色路径的计数是否大于预设值?是则转步骤S310,否则转步骤S316;

步骤S310:将匹配的黑色路径转为红色路径;

步骤S311:计算测试子序列Y[i,i+L-1]与前缀树中从树根到叶节点的所有红色路径之间的最小距离;本发明中的距离是指根据SAX方法计算的两个符号化的子序列的SAX距离。该SAX距离是由两个子序列的每个位置的字符距离计算并累加求和而得。例如,对于子序列abcde和acdee而言,其中每个子序列长度为5,包括0号位至4号位的字符,则这两个子序列的SAX距离等于每个位置的SAX距离之和。即分别计算0号位a和a之间的SAX距离,1号位b和c的SAX距离,2号位c和d之间的SAX距离,3号位d和e之间的SAX距离,4号位e和e之间的SAX距离,再将这5个SAX距离求和即可。而每两个字符的SAX距离,可以通过预先提供的SAX表格查询计算获得,如表格1。

表格1

注释:σ是字符表大小,即分割的字符数量,β是相应取值;若字符表大小为σ=3,即a,b,c三个字符,对应编号为3、2和1。

SAX距离计算方法:

其中Cellr,c为字符r和c之间的SAX距离,|r-c|是指字符r和c的编号差的绝对值,max(r,c)是指字符r和c的编号最大值,min(r,c)是指字符r和c的编号最小值。

比如,若σ=4,即包括4个字符a、b、c和d,其中对应编号d=1,c=2,b=3,a=4,则字符a和字符d的距离为:Cella,d=β3-β1=0.67-(-0.67)=1.34。

因此本发明计算测试子序列Y[i,i+L-1]与前缀树中所有红色路径的SAX距离,并选取其中的最小距离用作后续判断。步骤S312:判断最小距离是否小于预设阈值,是则转步骤S313,否则转步骤S315;

步骤S313:将测试子序列Y[i,i+L-1]标记为正常;

步骤S314:将测试子序列Y[i,i+L-1]插入前缀树中作为一条新的黑色路径;

步骤S315:将测试子序列Y[i,i+L-1]标记为异常,并转步骤S316;

步骤S316:令i=i+1;

步骤S317:判断i>m-L+1是否成立,是则转步骤S318,否则转步骤S303;其中m为测试集的时间序列长度。

步骤S318:输出标记的时间序列,更新的前缀树;

步骤S319:结束。

该算法的伪代码如下:

算法:数据自适应聚类(DAC)

输入:窗口大小:L,时间序列长度:m,前缀树:T输入

输出:标记的时间序列,更新的T输出

上述算法在前缀树中精确匹配一个红色路径的序列可以被标记为正常(第3-4行,情形1)。如果测试子序列与黑色路径匹配,则检查相应的黑色路径的计数是否高于预定义的值,这意味着它可以被转换成红色路径(第5-9行,情形2)。否则,情形3发生在序列生成新的黑色路径(第14-15行)或可能被标记为异常时(第17行)。在第12行,函数GetMinDis返回测试子序列Y[i,i+L-1]与前缀树中从树根到叶节点的所有红色路径之间的最小距离。

实施例四

如图4所示,本发明实施例提供的基于聚类的自适应时间序列异常检测装置,可以包括:离散处理单元401、前缀树构建单元402和异常检测单元403;

离散处理单元401,用于通过SAX方法对训练集中的时间序列进行降维和符号化,得到符号化的时间序列。该离散处理单元401执行的操作与前述步骤S101相同;

前缀树构建单元402,用于根据符号化的时间序列构建前缀树。该前缀树构建单元402执行的操作与前述步骤S102相同;

异常检测单元403,用于从测试集中提取测试子序列,并判断测试集中提取的测试子序列与前缀树中的一个路径匹配时,将该提取的测试子序列标记为正常。该异常检测单元403执行的操作与前述步骤S103相同。

优选地,前缀树构建单元402通过一个固定大小的窗口扫描时间序列并将之切割成离散的符号,使时间序列被转换成具有相同长度的字符的子序列,并根据从训练数据中提取的所述子序列构建前缀树。

优选地,异常检测单元403在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,将该提取的测试子序列标记为异常。

实施例五

实施例五在实施例四提供的基于聚类的自适应时间序列异常检测装置的基础上进行了优化,其中构建的前缀树包括红色路径和黑色路径。前缀树构建单元402中根据符号化的时间序列构建前缀树中的红色路径。异常检测单元403中在判断测试集中提取的测试子序列与前缀树中的任一路径均不匹配时,进一步计算该提取的测试子序列与所述前缀树中从树根到叶节点的所有红色路径之间的最小距离,当小于预设阈值时,将该提取的测试子序列标记为正常,并将该提取的测试子序列插入前缀树中作为黑色路径,当不小于预设阈值时将该提取的测试子序列标记为异常;异常检测单元403随后继续提取下一个测试子序列进行检测。异常检测单元403检测黑色路径的计数达到预设值时转换为红色路径。

本发明由于大量的时间序列存储在一棵树中,并且其中许多都具有相同的前缀序列,所以本发明的方法可以极大地减少空间消耗,并记录原始数据的形状。同时,本发明方法利用了聚类的优势,并考虑了在训练数据中没有出现的潜在时间序列模式。尽管最坏的情况很少发生在现实的时间序列数据集里,但本发明希望将其应用到有一定规律或者周期性的数据集,或者至少不是不规则的模式。

通过实验测试,本发明的方法可以检测到不规则的波动,但现有技术中大多数统计方法,包括联合估计方法都不能实现该检测。本方法尤其对于周期时间序列的异常模式、突起、连续错误,或者特征缺失很敏感。此外,通过本方法在白噪声的累加序列的测试,表明本方法能够逐渐适应测试数据集的时间序列,在累加的无异常数据的测试过程中逐渐减少异常的错误检测。

另外需要说明的是,本发明实施例提供的基于聚类的自适应时间序列异常检测装置,可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1