CN112966017B - 一种时间序列中不定长的异常子序列检测方法 - Google Patents
一种时间序列中不定长的异常子序列检测方法 Download PDFInfo
- Publication number
- CN112966017B CN112966017B CN202110226782.0A CN202110226782A CN112966017B CN 112966017 B CN112966017 B CN 112966017B CN 202110226782 A CN202110226782 A CN 202110226782A CN 112966017 B CN112966017 B CN 112966017B
- Authority
- CN
- China
- Prior art keywords
- sub
- length
- len
- sequence
- abnormal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 105
- 238000001514 detection method Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 57
- 238000004364 calculation method Methods 0.000 claims abstract description 21
- 238000011156 evaluation Methods 0.000 claims abstract description 9
- 239000011159 matrix material Substances 0.000 claims description 32
- 230000010354 integration Effects 0.000 claims description 5
- 230000000717 retained effect Effects 0.000 claims description 2
- 238000005457 optimization Methods 0.000 abstract description 2
- 230000005856 abnormality Effects 0.000 description 13
- 230000033458 reproduction Effects 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 244000141353 Prunus domestica Species 0.000 description 1
- 150000001413 amino acids Chemical class 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 206010003119 arrhythmia Diseases 0.000 description 1
- 230000006793 arrhythmia Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 208000024891 symptom Diseases 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种时间序列中不定长的异常子序列检测方法,在异常子序列的定义采用K近邻距离的均值/中位数,在子序列距离计算基于STOMP算法进行了并行优化,在算法参数设置用输入子序列长度范围和步长,在算法输出直接输出各个长度下的异常子序列检测结果,从中发现不同的异常点,也能够基于上述检测结果和一定的评价指标输出异常程度分值以及判断得到的异常子序列结果。所述时间序列中不定长的异常子序列检测方法能够显著提升时间序列异常子序列检测的运行效率和检测准确率。
Description
技术领域
本发明涉及一种数据挖掘算法领域中的时间序列异常检测,尤其是涉及一种时间序列中不定长的异常子序列检测方法。
背景技术
目前异常检测作为一个广泛的技术领域,已经在大量的实际场景中得到了应用,并且对于不同的业务领域和数据类型,通常需要应用不同类型的专用技术方法。时间序列异常检测是针对按时间排布的数据中的离群值进行识别,它可以在非常多的应用领域中发挥作用,例如:在金融市场中,检测股票市场的突然变化、或特定时间窗口内的异常模式;***运行诊断方面,可以用于监控设备运行状况、检测异常入侵等;在生物领域,由于氨基酸的排列与时间序列数据特征类似,也可以应用时间序列方面的检测方法。由于不同领域产生的数据特征和提出的业务需求不同,时间序列异常检测领域也发展出了众多不同的方法:从数据维度上看,可以分为单序列和多维度数据异常检测方法;从异常定义上看,可以分为数据点异常和窗口异常检测;从算法实现角度,又可以分为有监督和无监督的异常检测算法。
目前研究和应用较多的时间序列异常检测算法大多是针对单个数据点异常进行检测,即输出时间序列中每个数据点的异常概率,进而通过设置阈值来判断数据点是否属于异常,这类方法主要针对时间序列中单独出现的异常(例如心电图数据中一次异常跳动)进行检测。然而在实际应用场景中,往往需要对持续一段时间的模式异常(例如心律失常症状下心电图的模式异常)进行识别,此时使用异常子序列检测算法是更优的选择。
给定一个长度为n时间序列数据,一段长度为L、起始位置为i的子序列可以表示为。目前普遍使用的异常子序列的定义为:时间序列T中拥有最大的最近邻距离的子序列,即对于子序列D以及任意的子序列C,以及相应的非重叠子序列集合MD和MC,若,则子序列D为时间序列T中的异常子序列。最基础的定义中使用欧氏距离衡量两条时间序列的距离,在实际应用中可以使用其他合理的距离度量;另外其对于异常子序列的定义也可以很轻易地拓展到输出多个异常子序列。
然而,异常子序列的检测还面临计算效率低、参数依赖、相似异常识别等方面的困难。首先是计算效率方面,根据上文所述的异常子序列定义,最直接的实现方式即是通过循环计算每两个子序列之间的距离,从中提取异常子序列,而这种算法的时间复杂度为(其中n为时间序列长度,m为子序列长度),并且往往时间序列数据的长度较大,因此基于蛮力的算法几乎是无法完成的。近年来有许多研究针对这一问题,通过将时间序列降维表示和预排序、或者通过设定距离阈值等方式,提出了各种改进效率的算法。其中前者多为启发式算法,实际计算效率与多个参数的设置、实际数据特征情况均有较强的关联,当参数设置不当或数据分布不满足预期时,算法的效率可能会降低到;后者通过设定阈值的方式对距离计算过程进行剪枝,同样对该阈值的设定有很强的依赖性,阈值设置不合理会导致算法失败(无法返回任何异常子序列)或效率降低到,并且该阈值很难通过事前经验进行估计。Yeh等人(2018)提出了一种突破性的算法STOMP,其核心在于通过快速傅里叶变换和移动点积的方法,极大的优化了子序列两两之间的距离计算效率,并且计算过程不依赖于其他参数的设定或数据的分布特征,使得在大规模数据集上计算距离成为可行且可预估的。
异常子序列检测的另一个问题是参数依赖,根据上文所述的异常子序列定义,算法只需要输入一个参数:目标子序列的长度。然而这一个参数的设置对检测的结果有决定性的影响,不同的目标子序列长度可能会导致完全不同的检测结果,而不仅仅是略微影响检测的准确性。已有研究中对这一问题的关注较少,普遍将其视为必要的调参过程,但是考虑到异常子序列检测的时间成本,寻找合适的目标子序列长度并不是一件易于实现的任务。因此,我们希望在发明中尽量消除对这一参数的依赖性,得到更稳定和有效的输出结果。
另外还有相似异常的问题,根据上文所述,异常子序列的定义为时间序列T中拥有最大的最近邻距离的子序列。在实际应用中,我们会发现数据中可能存在两段(及以上)形态相似的异常子序列,由于在定义中使用最近邻距离作为衡量指标,两段相似的异常子序列可能拥有非常小的最近邻距离,导致检测算法的失效。我们同样希望在发明中对距离指标进行优化,使其能够应对相似异常以及类似的数据问题。
发明内容
本发明提供了一种时间序列中不定长的异常子序列检测方法,解决现有技术中存在的问题,从以下几个方面进行了改进:
(1)在异常子序列的定义方面,将传统的最近邻距离拓展为K近邻距离的均值/中位数,以解决数据中可能存在相似异常的问题;
(2)在子序列距离计算方面,基于STOMP算法进行了并行优化,进一步提升了算法运行效率;
(3)在算法参数设置方面,用输入子序列长度范围和步长取代输入单一的目标子序列长度,算法在输入的长度范围内每间隔一定步长计算一次异常子序列的检测;
(4)在算法输出方面,可以直接输出各个长度下的异常子序列检测结果,从中发现不同的异常点,也可以基于上述检测结果和一定的评价指标(如子序列重现次数),输出异常程度分值以及判断得到的异常子序列结果。
其技术方案如下所述:
一种时间序列中不定长的异常子序列检测方法,包括以下步骤:
S1:输入时间序列数据T,最小子序列长度min_len,最大子序列长度max_len,步长step;可选输入近邻个数k,k近邻距离整合方法method,检测异常子序列个数n_discords,并行进程数n_workers;
S2:根据设定的最小子序列长度min_len、最大子序列长度max_len以及步长step,确定目标子序列长度sub_len集合,针对集合中的每一个目标子序列长度sub_len,执行以下循环:
a)根据并行进程数n_workers,将时间序列T划分为若干个时间序列子集Tworker;
b)在每一个进程中,应用STOMP算法,计算时间序列T中每一个子序列对于子集Tworker的局部近邻矩阵mpworker;
c)将各个进程的计算结果mpworker进行整合,对于时间序列T中的每一个子序列,保留k个最近邻的距离,并统计其中位数或均值,形成时间序列T在子序列长度sub_len上的k近邻距离矩阵mpsub_len;
S3:从各个目标子序列长度sub_len的k近邻距离矩阵mpsub_len中,计算得到k近邻距离最大的n_discords个异常子序列;
S4:对于时间序列T中的每一个数据点ti,计算其在各个长度的异常子序列中出现的次数,将出现次数超过一定阈值的点标记为最终检测的异常值。
进一步的,步骤S1中,k默认为1,k近邻距离整合方法method默认为中位数,检测异常子序列个数n_discords默认为3,并行进程数n_workers默认为4。
进一步的,步骤S1中,时间序列数据T应包括时间列和数值列,表示该序列在每一个时间点上对应的数值,且每个时间点之间最好是等间隔的;最小子序列长度min_len、最大子序列长度max_len和步长step用于确定子序列的长度范围,即在大于等于min_len,小于等于max_len的范围内,每隔step取一个值作为目标子序列长度,针对这里获得的目标子序列长度集合,依次执行S2a-S2c的循环计算。
进一步的,步骤S2中,首次进行异常检测使用k=1,即最近邻距离进行检测,若发现结果中存在未能识别的相似异常模式,则增大k的值,通过k近邻距离检测异常。
步骤S2中,将时间序列T划分为若干个时间序列子集Tworker时,在每一个并行进程中,输入时间序列数据T、数据子集Tworker、目标子序列长度sub_len和近邻个数k,初始化k近邻距离矩阵matrix_profileworker,其行数为n-sub_len+1,列数为k,初始值均为正无穷。
步骤S2中,对于数据子集Tworker中的每一个子序列Ti,sub_len,应用STOMP算法,通过快速傅里叶变换和移动点积的方式计算子序列Ti,sub_len与时间序列数据T中每一条子序列的距离,得到长度为n-sub_len+1的距离向量disti,sub_len。
步骤S2中,若k为1,即只计算最近邻距离时,每次将距离向量disti,sub_len与局部近邻矩阵mpworker对应位置的元素进行比较,保留每个位置上较小的距离值;若k>1,则需要保留k近邻距离,每次将距离向量disti,sub_len与局部近邻矩阵mpworker合并后,保留每个位置上最小的k个值。
步骤S2中,将各个数据子集Tworker上计算得到的局部近邻矩阵mpworker合并,保留每个位置上最小的k个值,并根据输入的汇总方式计算均值或中位数后,得到时间序列数据T在子序列长度sub_len上的k近邻距离矩阵mpsub_len合并。
进一步的,步骤S3中,对于每个目标子序列长度sub_len下计算得到的k近邻距离矩阵mpsub_len,将其按照降序排列后选取近邻距离最大的1个子序列作为异常子序列结果;若n_discords>1,则逐个向后检查,若子序列位置i与已有的异常子序列位置之间的差值小于sub_len,即若检查的子序列与已有异常子序列之间有重叠,则跳过当前子序列,继续向后检查,直至异常子序列个数达到n_discords个,得到目标子序列长度sub_len下的异常子序列集合discordssub_len。
进一步的,步骤S4中,得到各个目标子序列长度下的异常子序列集合后,通过建立评价指标判断得到最终的异常子序列结果。
所述时间序列中不定长的异常子序列检测方法能够显著提升时间序列异常子序列检测的运行效率和检测准确率。运行效率方面,通过将原始的时间序列数据划分若干子集,启动多个进程并行计算子集的k近邻距离矩阵,再合并计算得到原始时间序列数据的k近邻距离矩阵,该方法在STOMP算法的基础上进一步提升了计算的效率。在检测准确率方面,由于本发明的方法使用k近邻距离代替了最近邻距离,用于异常子序列的检测,并且使用子序列长度范围和步长参数代替了普遍使用的固定子序列长度,因此在实际应用中可以更准确地检测出数据中的多类异常模式。
附图说明
图1是所述时间序列中不定长的异常子序列检测方法的流程示意图;
图2是实施例中的针对纽约市出租车乘客数据进行异常子序列检测的结果示意图;
图3是所述时间序列中不定长的异常子序列检测方法的效果示意图。
具体实施方式
如图1所示,所述时间序列中不定长的异常子序列检测方法包括以下步骤:
S1:输入时间序列数据T,最小子序列长度min_len,最大子序列长度max_len,步长step;可选输入近邻个数k(默认为1),k近邻距离整合方法method(默认为中位数),检测异常子序列个数n_discords(默认为3),并行进程数n_workers(默认为4)。
S2:根据设定的最小子序列长度、最大子序列长度以及步长,确定目标子序列长度sub_len集合,针对集合中的每一个目标子序列长度sub_len,执行以下循环:
a)根据并行进程数n_workers,将时间序列T划分为若干个时间序列子集Tworker;(4.1)
b)在每一个进程中,应用STOMP算法,计算时间序列T中每一个子序列对于子集Tworker的局部近邻矩阵mpworker;(4.2,4.3,4,4)
c)将各个进程的计算结果mpworker进行整合,对于时间序列T中的每一个子序列,保留k个最近邻的距离,并统计其中位数(或均值),形成时间序列T在子序列长度sub_len上的k近邻距离矩阵mpsub_len;(4.5)
S3:从各个目标子序列长度sub_len的k近邻距离矩阵mpsub_len中,计算得到k近邻距离最大的n_discords个异常子序列。
S4:对于时间序列T中的每一个数据点ti,计算其在各个长度的异常子序列中出现的次数,将出现次数超过一定阈值的点标记为最终检测的异常值。
其中,步骤S1中,时间序列数据T应包括时间列和数值列,表示该序列在每一个时间点上对应的数值,且每个时间点之间最好是等间隔的;最小子序列长度min_len、最大子序列长度max_len和步长step用于确定子序列的长度范围,即在大于等于min_len,小于等于max_len的范围内,每隔step取一个值作为目标子序列长度,针对这里获得的目标子序列长度集合,依次执行S2a-S2c的循环计算。
下面以纽约出租车乘客数的时间序列数据集为例,详细说明本发明的具体实施方式。
1.获取数据。纽约出租车乘客数据集包括时间戳(timestamp)和乘客数(value)两列,时间跨度为2014年7月1日至2015年1月31日,每条数据间隔30分钟,共10320条数据。
2.参数确定。本发明算法中最主要的输入参数即为子序列的长度范围,即最小、最大子序列长度和步长。由于异常子序列检测算法中的子序列长度会严重影响检测结果,本发明中使用了子序列长度范围(最小、最大子序列长度和步长)代替单一的子序列长度,可以明显提升算法检测结果的稳定性,但仍需要用户输入大致合理的子序列长度范围。根据经验,最小和最大子序列长度的合适取值可以通过以下的规则进行大致的估计:若实际异常发生的时间跨度为L(如10个数据点),则当子序列长度大约在1.5L至3L范围内(即15-30个数据点)时,能够较好地检测到实际异常子序列。在实际应用中,可以首先根据数据特征或背景经验,对实际异常发生的时间跨度进行大致估计,再结合上述经验确定输入的子序列长度范围参数。
3.实施例对应。在本例中,根据对数据的观察发现最短的异常可能出现在1-2小时内(2-4个数据点),而最长的异常可能持续1-2天(48-96个数据点),因此这里选择最小子序列长度为8(4小时),最大子序列长度为240(5天),步长为8。步长的意义在于减少相邻子序列长度下的重复计算,如果不设置步长参数(即步长默认为1),则算法需要对最小到最大子序列长度内的每一个目标长度取值(本例中即为8,9,10,…,239,240,共233个目标长度)都进行循环计算,会占用大量的计算时间,并且在相邻的目标子序列长度下(例如长度分别为8和9)算法检测得到的结果非常接近,重复计算的意义不大,因此可以通过设置步长参数,在不影响最终检测结果的情况下大幅改善计算效率,在本例中设置步长为8,则仅需要针对8,16,24,…,232,240共30个目标子序列长度sub_len进行循环计算。
4.循环计算每个目标子序列长度下的k近邻距离矩阵。在实际应用中,需要输入近邻个数k以及对k近邻距离的汇总方式(均值/中位数),一般来说,首次进行异常检测可使用k=1,即最近邻距离进行检测,若发现结果中存在未能识别的相似异常模式,则可以考虑增大k的值,通过k近邻距离检测异常。在本例中,首先选用k=1尝试进行异常检测。确定近邻个数k的输入之后,从输入的最小子序列长度开始,计算该子序列长度下的k近邻距离矩阵,然后将该子序列长度加上一个步长,循环直至超过最大子序列长度。在每一次循环中,计算k近邻距离矩阵的方法如下:
4.1.将原始时间序列数据划分子集Tworker。划分子集的过程主要是为了支撑后续并行计算的任务,其具体划分方式和划分结果不会对最终的异常检测结果产生影响,而只是一定程度上影响算法运行的效率。在本例中,选择子集规模为200,共划分51个子集,分配4个进程并行计算。在其他情况下,可以根据实际数据规模和计算资源情况进行子集划分,本发明中对此不做限定。
4.2.在每一个并行进程中,输入时间序列数据T(数据量为n)、数据子集Tworker、目标子序列长度sub_len和近邻个数k,初始化局部近邻矩阵mpworker,其行数为n-sub_len+1,列数为k,初始值均为正无穷;
4.3.对于数据子集Tworker中的每一个子序列Ti,sub_len,应用STOMP算法,通过快速傅里叶变换和移动点积的方式计算子序列Ti,sub_len与时间序列数据T中每一条子序列的距离,得到长度为n-sub_len+1的距离向量disti,sub_len;
4.4.若k为1,即只计算最近邻距离时,每次将距离向量disti,sub_len与局部近邻矩阵mpworker对应位置的元素进行比较,保留每个位置上较小的距离值;若k>1,则需要保留k近邻距离,每次将距离向量disti,sub_len与局部近邻矩阵mpworker合并后,保留每个位置上最小的k个值;
4.5.将各个数据子集Tworker上计算得到的局部近邻矩阵mpworker合并,保留每个位置上最小的k个值,并根据输入的汇总方式计算均值或中位数后,得到时间序列数据T在子序列长度sub_len上的k近邻距离矩阵mpsub_len合并。
5.从各个目标子序列长度sub_len的k近邻距离矩阵mpsub_len中,检测得到相应的异常子序列。在实际应用中,需要输入检测的异常子序列个数n_discords,这一参数取决于对实际数据中异常出现次数的估计,本发明对此不作限制,在本例中选择默认值3。对于每个目标子序列长度sub_len下计算得到的k近邻距离矩阵mpsub_len,将其按照降序排列后选取近邻距离最大的1个子序列作为异常子序列结果;若n_discords>1,则逐个向后检查,若子序列位置i与已有的异常子序列位置之间的差值小于sub_len,即若检查的子序列与已有异常子序列之间有重叠,则跳过当前子序列,继续向后检查,直至异常子序列个数达到n_discords个,得到目标子序列长度sub_len下的异常子序列集合discordssub_len。
6.通过建立评价指标判断最终的异常子序列结果。上一步骤中计算得到了各个目标子序列长度下的异常子序列集合,在此基础上,用户可建立一定的评价指标,从而判断得到最终的异常子序列结果,这里使用的评价指标并不固定。在本例中,使用重现次数作为评价指标,即对于时间序列T中的每一个数据点ti,统计其在各个异常子序列集合discordssub_len中出现的次数,若该次数大于等于5,则将其认定为最终的异常结果进行输出。
7.结果评价。通过上述的实施步骤,针对纽约市出租车乘客数据进行异常子序列检测的结果如图2所示。其中上部分为原始数据和其中的异常点标注,下部分为算法在各个子序列长度下检测出的异常子序列集合。可以看出,在使用重现次数大于等于5的评价指标时,该算法非常准确地识别出了数据中出现的5处异常,分别对应启用冬令时、感恩节、圣诞节、元旦、以及一次暴雪天气,并且没有产生任何假阳性判例,异常检测准确性很高。
通过以上实施例,可见本发明能够显著提升时间序列异常子序列检测的运行效率和检测准确率。
运行效率方面,通过将原始的时间序列数据划分若干子集,启动多个进程并行计算子集的k近邻距离矩阵,再合并计算得到原始时间序列数据的k近邻距离矩阵,该方法在STOMP算法的基础上进一步提升了计算的效率。以长度为20000的KPI时间序列数据测试,选取子序列长度为720,近邻个数为1,使用原有的STOMP算法计算k近邻距离矩阵需要耗时约85秒,使用2个进程并行耗时约36秒,使用4个进程并行耗时约25秒,显著提升了算法运行效率。
在检测准确率方面,由于本发明的方法使用k近邻距离代替了最近邻距离,用于异常子序列的检测,并且使用子序列长度范围和步长参数代替了普遍使用的固定子序列长度,因此在实际应用中可以更准确地检测出数据中的多类异常模式。同样以长度为20000的KPI时间序列数据测试,选取最小子序列长度为180,最大子序列长度为1440,步长为30,对数据进行异常检测的结果如图3所示。其中图3上部分为原始数据以及实际异常点标注,下部分为各个子序列长度下检测出的异常子序列位置。以重现超过10次作为选择最终异常结果的标准,算法正确识别了数据中的4处主要异常,而只产生了1处假阳性的检测结果,显著提升了异常检测的准确性。
Claims (10)
1.一种时间序列中不定长的异常子序列检测方法,包括以下步骤:
S1:输入时间序列数据T,最小子序列长度min_len,最大子序列长度max_len,步长step;可选输入近邻个数k,k近邻距离整合方法method,检测异常子序列个数n_discords,并行进程数n_workers;
S2:根据设定的最小子序列长度min_len、最大子序列长度max_len以及步长step,确定目标子序列长度sub_len集合,针对集合中的每一个目标子序列长度sub_len,执行以下循环:
a)根据并行进程数n_workers,将时间序列T划分为若干个时间序列子集Tworker;
b)在每一个进程中,应用STOMP算法,计算时间序列T中每一个子序列对于子集Tworker的局部近邻矩阵mpworker;
c)将各个进程的计算结果mpworker进行整合,对于时间序列T中的每一个子序列,保留k个最近邻的距离,并统计其中位数或均值,形成时间序列T在子序列长度sub_len上的k近邻距离矩阵mpsub_len;
S3:从各个目标子序列长度sub_len的k近邻距离矩阵mpsub_len中,计算得到k近邻距离最大的n_discords个异常子序列;
S4:对于时间序列T中的每一个数据点ti,计算其在各个长度的异常子序列中出现的次数,将出现次数超过一定阈值的点标记为最终检测的异常值。
2.根据权利要求1所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S1中,k默认为1,k近邻距离整合方法method默认为中位数,检测异常子序列个数n_discords默认为3,并行进程数n_workers默认为4。
3.根据权利要求1所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S1中,时间序列数据T应包括时间列和数值列,表示该序列在每一个时间点上对应的数值,且每个时间点之间最好是等间隔的;最小子序列长度min_len、最大子序列长度max_len和步长step用于确定子序列的长度范围,即在大于等于min_len,小于等于max_len的范围内,每隔step取一个值作为目标子序列长度,针对这里获得的目标子序列长度集合,依次执行S2a-S2c的循环计算。
4.根据权利要求1所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S2中,首次进行异常检测使用k=1,即最近邻距离进行检测,若发现结果中存在未能识别的相似异常模式,则增大k的值,通过k近邻距离检测异常。
5.根据权利要求3所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S2中,将时间序列T划分为若干个时间序列子集Tworker时,在每一个并行进程中,输入时间序列数据T、数据子集Tworker、目标子序列长度sub_len和近邻个数k,初始化k近邻距离矩阵matrix_profileworker,其行数为n-sub_len+1,列数为k,初始值均为正无穷。
6.根据权利要求5所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S2中,对于数据子集Tworker中的每一个子序列Ti,sub_len,应用STOMP算法,通过快速傅里叶变换和移动点积的方式计算子序列Ti,sub_len与时间序列数据T中每一条子序列的距离,得到长度为n-sub_len+1的距离向量disti,sub_len。
7.根据权利要求6所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S2中,若k为1,即只计算最近邻距离时,每次将距离向量disti,sub_len与局部近邻矩阵mpworker对应位置的元素进行比较,保留每个位置上较小的距离值;若k>1,则需要保留k近邻距离,每次将距离向量disti,sub_len与局部近邻矩阵mpworker合并后,保留每个位置上最小的k个值。
8.根据权利要求7所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S2中,将各个数据子集Tworker上计算得到的局部近邻矩阵mpworker合并,保留每个位置上最小的k个值,并根据输入的汇总方式计算均值或中位数后,得到时间序列数据T在子序列长度sub_len上的k近邻距离矩阵mpsub_len合并。
9.根据权利要求8所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S3中,对于每个目标子序列长度sub_len下计算得到的k近邻距离矩阵mpsub_len,将其按照降序排列后选取近邻距离最大的1个子序列作为异常子序列结果;若n_discords>1,则逐个向后检查,若子序列位置i与已有的异常子序列位置之间的差值小于sub_len,即若检查的子序列与已有异常子序列之间有重叠,则跳过当前子序列,继续向后检查,直至异常子序列个数达到n_discords个,得到目标子序列长度sub_len下的异常子序列集合discordssub_len。
10.根据权利要求9所述的时间序列中不定长的异常子序列检测方法,其特征在于:步骤S4中,得到各个目标子序列长度下的异常子序列集合后,通过建立评价指标判断得到最终的异常子序列结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110226782.0A CN112966017B (zh) | 2021-03-01 | 2021-03-01 | 一种时间序列中不定长的异常子序列检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110226782.0A CN112966017B (zh) | 2021-03-01 | 2021-03-01 | 一种时间序列中不定长的异常子序列检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112966017A CN112966017A (zh) | 2021-06-15 |
CN112966017B true CN112966017B (zh) | 2023-11-14 |
Family
ID=76276232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110226782.0A Active CN112966017B (zh) | 2021-03-01 | 2021-03-01 | 一种时间序列中不定长的异常子序列检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112966017B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553232B (zh) * | 2021-07-12 | 2023-12-05 | 厦门大学 | 一种通过在线矩阵画像对运维数据进行无监督异常检测的技术 |
CN116383190B (zh) * | 2023-05-15 | 2023-08-25 | 青岛场外市场清算中心有限公司 | 一种海量金融交易大数据智能清洗方法及*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010078467A (ja) * | 2008-09-26 | 2010-04-08 | Internatl Business Mach Corp <Ibm> | 時系列データ解析システム、方法及びプログラム |
KR20130107889A (ko) * | 2012-03-23 | 2013-10-02 | 삼성전자주식회사 | 이상 서브시퀀스 검출 장치 및 방법 |
CN106127249A (zh) * | 2016-06-24 | 2016-11-16 | 深圳市颐通科技有限公司 | 一种单时间序列异常子序列检测方法 |
CN110378371A (zh) * | 2019-06-11 | 2019-10-25 | 广东工业大学 | 一种基于平均近邻距离异常因子的能耗异常检测方法 |
CN110569890A (zh) * | 2019-08-23 | 2019-12-13 | 河海大学 | 一种基于相似性度量的水文数据异常模式检测方法 |
WO2020019403A1 (zh) * | 2018-07-26 | 2020-01-30 | 平安科技(深圳)有限公司 | 用电量异常检测方法、装置、设备及可读存储介质 |
CN111835738A (zh) * | 2020-06-30 | 2020-10-27 | 山东大学 | 一种基于时间序列挖掘的网络异常流量自动检测方法 |
-
2021
- 2021-03-01 CN CN202110226782.0A patent/CN112966017B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010078467A (ja) * | 2008-09-26 | 2010-04-08 | Internatl Business Mach Corp <Ibm> | 時系列データ解析システム、方法及びプログラム |
KR20130107889A (ko) * | 2012-03-23 | 2013-10-02 | 삼성전자주식회사 | 이상 서브시퀀스 검출 장치 및 방법 |
CN106127249A (zh) * | 2016-06-24 | 2016-11-16 | 深圳市颐通科技有限公司 | 一种单时间序列异常子序列检测方法 |
WO2020019403A1 (zh) * | 2018-07-26 | 2020-01-30 | 平安科技(深圳)有限公司 | 用电量异常检测方法、装置、设备及可读存储介质 |
CN110378371A (zh) * | 2019-06-11 | 2019-10-25 | 广东工业大学 | 一种基于平均近邻距离异常因子的能耗异常检测方法 |
CN110569890A (zh) * | 2019-08-23 | 2019-12-13 | 河海大学 | 一种基于相似性度量的水文数据异常模式检测方法 |
CN111835738A (zh) * | 2020-06-30 | 2020-10-27 | 山东大学 | 一种基于时间序列挖掘的网络异常流量自动检测方法 |
Non-Patent Citations (2)
Title |
---|
基于异常因子的时间序列异常模式检测;刘雪梅;王亚茹;;计算机技术与发展(03);全文 * |
基于特征符号表示的网络异常流量检测算法;展鹏;陈琳;曹鲁慧;李学庆;;浙江大学学报(工学版)(07);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112966017A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112966017B (zh) | 一种时间序列中不定长的异常子序列检测方法 | |
US9245000B2 (en) | Methods for the cyclical pattern determination of time-series data using a clustering approach | |
CN107909344B (zh) | 基于关系矩阵的工作流日志重复任务识别方法 | |
Sun et al. | An improved k-nearest neighbours method for traffic time series imputation | |
CN106127249B (zh) | 一种心电数据中的异常子序列的在线检测方法 | |
US20100036643A1 (en) | Methods for the cyclical pattern determination of time-series data using a clustering approach | |
TWI715230B (zh) | 缺值補償方法、缺值補償系統及非暫態電腦可讀取媒體 | |
JP6848546B2 (ja) | 変化点検出装置および変化点検出方法 | |
JP7268756B2 (ja) | 劣化抑制プログラム、劣化抑制方法および情報処理装置 | |
CN113225209A (zh) | 一种基于时间序列相似检索的网络监控实时预警方法 | |
CN117155706B (zh) | 网络异常行为检测方法及其*** | |
US20230385699A1 (en) | Data boundary deriving system and method | |
CN111367777A (zh) | 告警处理的方法、装置、设备及计算机可读存储介质 | |
CN112541016A (zh) | 用电异常检测方法、装置、计算机设备和存储介质 | |
Jin et al. | Changepoint-based anomaly detection for prognostic diagnosis in a core router system | |
Kim et al. | Residual correction in real-time traffic forecasting | |
CN116113952A (zh) | 用于图像的属于分布内度量的分布之间的距离 | |
CN116757533A (zh) | 一种工业设备异常检测方法及相关装置 | |
CN115878987A (zh) | 一种基于贡献值和因果图的故障定位方法 | |
CN111612082B (zh) | 检测时间序列中异常子序列的方法及设备 | |
CN115700553A (zh) | 一种异常检测方法及相关装置 | |
CN113535527A (zh) | 一种面向实时流数据预测性分析的降载方法及*** | |
KR20220028727A (ko) | 열화에 따른 시계열 데이터를 이용한 실시간 이상 감지 방법 및 그를 위한 장치 | |
CN112651455A (zh) | 一种基于非负矩阵分解与动态时间规整算法的交通流缺失值填充方法 | |
CN113705618B (zh) | 基于子空间降维的高维数据多变点检测方法、***、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 717, Building D, Fudun Center, No. 58 East Third Ring South Road, Chaoyang District, Beijing, 100022 Applicant after: Beijing Qingmeng Shuhai Technology Co.,Ltd. Address before: 2517, block D, Futon center, No.58, South East Third Ring Road, Chaoyang District, Beijing 100022 Applicant before: Beijing Qingmeng Shuhai Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |