时间序列异常检测方法、系统、介质及设备与流程

文档序号:33623759发布日期:2023-03-25 14:07阅读:64来源:国知局
时间序列异常检测方法、系统、介质及设备与流程

1.本发明涉及时间序列的技术领域,具体地,涉及时间序列异常检测方法、系统、介质及设备,尤其涉及一种时间序列异常检测方法。


背景技术:

2.时序指标异常检测是aiops领域应用最为广泛的技术,包括业务指标异常检测、机器指标异常检测等。指标异常检测方法也是多种多样,基于指数平滑的无监督方法就是其中较为常用的一种异常检测方法。
3.现有技术中(申请号为cn202110722546.8的中国专利,公开了“一种基于核密度估计和指数平滑算法的异常用户检测方法”)同样使用指数平滑检测异常,但其并为对指数平滑对异常值敏感的特性做处理;此外,其同样使用了核密度估计,但其使用核密度函数用于构建时间序列数据,而非对异常检测结果进行修正。
4.针对上述中的相关技术,发明人认为存在无稳定长期规律时间序列的异常检测问题。因此需要提出一种新的技术方案以改善上述技术问题。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种时间序列异常检测方法、系统、介质及设备。
6.根据本发明提供的一种时间序列异常检测方法,所述方法包括如下步骤:
7.步骤s1:对时间序列数据进行预处理,填充缺失值,若不填充缺失值则认为缺失时刻为异常时刻;
8.步骤s2:对输入的时间序列数据进行双向指数平滑,计算平滑后的残差,得到一个平滑后的残差序列;
9.步骤s3:对步骤s2中得到的残差序列使用mad方法进行异常检测,得到一个临时异常时刻列表;
10.步骤s4:将时间序列中异常时刻对应的异常数据值设置为空
‑‑
nan,更新时间序列,记录异常时刻对应残差序列中的残差值;
11.步骤s5:判断是否满足中止条件,中止条件为达到最大迭代次数或者步骤s4中时间序列没有增加新的nan,如果满足中止条件,则进入步骤s6,否则回到步骤s2;
12.步骤s6:以上步骤主要基于时序的短期特征检测异常抖动,部分抖动不是异常,对频繁异常进行修正,获取非异常时刻列表;
13.步骤s7:时间序列中值为空的时刻,且不在非异常时刻列表中,为异常时刻,标记所有异常时刻,输出异常时刻列表。
14.优选地,所述步骤s2包括如下步骤:
15.步骤s2.1:对输入的时间序列向后偏移w个单位,w为需要输入的检测窗口大小,对偏移后的序列进行指数平滑,平滑窗口大小亦为w,得到平滑后的结果
‑‑
平滑序列1;
16.步骤s2.2:反转输入的时间序列,将反转后的序列向后偏移w个单位,然后进行指数平滑,平滑窗口大小同样为w,得到平滑后的结果
‑‑
平滑序列2;
17.步骤s2.3:计算输入序列与平滑序列1的差,得到残差序列1;
18.步骤s2.4:计算输入序列与平滑序列2的差,得到残差序列2;
19.步骤s2.5:每个时刻取残差序列1和残差序列2中的绝对值最小的那个值,若一方为空值则取对方数据,得到最终残差序列。
20.优选地,所述步骤s4中更新后的时间序列包含异常时刻但值为空。
21.优选地,所述步骤s6包括如下步骤:
22.步骤s6.1:取最后一轮迭代后步骤s2输出的残差序列,残差序列中的空值使用历史迭代过程中步骤s4中标记的异常时刻残差值填补,获取完整残差序列;
23.步骤s6.2:从残差序列的起始处滑动检测窗口,取当前检测窗口内的最大值作为中心点,取以中心点为中心的检测窗口内的所有值作为一个样本;移动检测窗口到该样本的结尾处继续以相同的方式构造新样本,最终生成残差样本集;
24.步骤s6.3:对样本集中的每个样本计算样本异常度,即对每个样本的序列值求平方和;
25.步骤s6.4:对所有样本异常度使用核密度估计,概率高于限制阈值的样本为非异常样本;
26.步骤s6.5:标记非异常样本中的所有时刻为非异常时刻,得到非异常时刻列表。
27.本发明还提供一种时间序列异常检测系统,所述系统包括如下模块:
28.模块m1:对时间序列数据进行预处理,填充缺失值,若不填充缺失值则认为缺失时刻为异常时刻;
29.模块m2:对输入的时间序列数据进行双向指数平滑,计算平滑后的残差,得到一个平滑后的残差序列;
30.模块m3:对模块m2中得到的残差序列使用mad系统进行异常检测,得到一个临时异常时刻列表;
31.模块m4:将时间序列中异常时刻对应的异常数据值设置为空
‑‑
nan,更新时间序列,记录异常时刻对应残差序列中的残差值;
32.模块m5:判断是否满足中止条件,中止条件为达到最大迭代次数或者模块m4中时间序列没有增加新的nan,如果满足中止条件,则进入模块m6,否则回到模块m2;
33.模块m6:以上模块主要基于时序的短期特征检测异常抖动,部分抖动不是异常,对频繁异常进行修正,获取非异常时刻列表;
34.模块m7:时间序列中值为空的时刻,且不在非异常时刻列表中,为异常时刻,标记所有异常时刻,输出异常时刻列表。
35.优选地,所述模块m2包括如下模块:
36.模块m2.1:对输入的时间序列向后偏移w个单位,w为需要输入的检测窗口大小,对偏移后的序列进行指数平滑,平滑窗口大小亦为w,得到平滑后的结果
‑‑
平滑序列1;
37.模块m2.2:反转输入的时间序列,将反转后的序列向后偏移w个单位,然后进行指数平滑,平滑窗口大小同样为w,得到平滑后的结果
‑‑
平滑序列2;
38.模块m2.3:计算输入序列与平滑序列1的差,得到残差序列1;
39.模块m2.4:计算输入序列与平滑序列2的差,得到残差序列2;
40.模块m2.5:每个时刻取残差序列1和残差序列2中的绝对值最小的那个值,若一方为空值则取对方数据,得到最终残差序列。
41.优选地,所述模块m4中更新后的时间序列包含异常时刻但值为空。
42.优选地,所述模块m6包括如下模块:
43.模块m6.1:取最后一轮迭代后模块m2输出的残差序列,残差序列中的空值使用历史迭代过程中模块m4中标记的异常时刻残差值填补,获取完整残差序列;
44.模块m6.2:从残差序列的起始处滑动检测窗口,取当前检测窗口内的最大值作为中心点,取以中心点为中心的检测窗口内的所有值作为一个样本;移动检测窗口到该样本的结尾处继续以相同的方式构造新样本,最终生成残差样本集;
45.模块m6.3:对样本集中的每个样本计算样本异常度,即对每个样本的序列值求平方和;
46.模块m6.4:对所有样本异常度使用核密度估计,概率高于限制阈值的样本为非异常样本;
47.模块m6.5:标记非异常样本中的所有时刻为非异常时刻,得到非异常时刻列表。
48.本发明还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中的时间序列异常检测方法的步骤。
49.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述中的时间序列异常检测方法的步骤。
50.与现有技术相比,本发明具有如下的有益效果:
51.1、本发明通过限制检测窗口大小,使用多重双向指数平滑检测异常的过程中仅关注时间序列短期内的波动,不受远期波动的影响,从而实现了无稳定长期规律时间序列的异常检测问题;
52.2、本发明通过采用双向指数平滑的方法,综合前向指数平滑结果和后向指数平滑结果计算残差,从而解决了指数平滑的滞后性问题且能够有效去除原始序列中的较稳定的趋势部分;
53.3、本发明通过采用多次迭代的方法,每次迭代时将当前检测到的较为显著的异常值标记为空,逐渐减小异常值对平滑的影响,从而解决了指数平滑对异常值敏感的问题;
54.4、本发明通过采用mad异常检测方法,从而解决了残差序列的异常检测问题;
55.5、本发明通过滑动检测窗口构造残差样本的方式,构造的每个残差样本为一段序列,每次跨越式向后滑动,从而修正正常短期抖动形态下的错误异常检测结果;
56.6、本发明通过采用核密度估计,残差值出现概率高于阈值的异常时刻为非异常时刻,从而避免了短期内检测到的异常长期看非异常的情况。
附图说明
57.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
58.图1为本发明步骤流程图;
59.图2为本发明双向平滑残差图;
60.图3为本发明频繁残差修正图。
具体实施方式
61.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
62.实施例1:
63.根据本发明提供的一种时间序列异常检测方法,所述方法包括如下步骤:
64.步骤s1:对时间序列数据进行预处理,填充缺失值,若不填充缺失值则认为缺失时刻为异常时刻;
65.步骤s2:对输入的时间序列数据进行双向指数平滑,计算平滑后的残差,得到一个平滑后的残差序列;
66.步骤s2.1:对输入的时间序列向后偏移w个单位,w为需要输入的检测窗口大小,对偏移后的序列进行指数平滑,平滑窗口大小亦为w,得到平滑后的结果
‑‑
平滑序列1;
67.步骤s2.2:反转输入的时间序列,将反转后的序列向后偏移w个单位,然后进行指数平滑,平滑窗口大小同样为w,得到平滑后的结果
‑‑
平滑序列2;
68.步骤s2.3:计算输入序列与平滑序列1的差,得到残差序列1;
69.步骤s2.4:计算输入序列与平滑序列2的差,得到残差序列2;
70.步骤s2.5:每个时刻取残差序列1和残差序列2中的绝对值最小的那个值,若一方为空值则取对方数据,得到最终残差序列。
71.步骤s3:对步骤s2中得到的残差序列使用mad方法进行异常检测,得到一个临时异常时刻列表;
72.步骤s4:将时间序列中异常时刻对应的异常数据值设置为空
‑‑
nan,更新时间序列,记录异常时刻对应残差序列中的残差值;更新后的时间序列包含异常时刻但值为空。
73.步骤s5:判断是否满足中止条件,中止条件为达到最大迭代次数或者步骤s4中时间序列没有增加新的nan,如果满足中止条件,则进入步骤s6,否则回到步骤s2;
74.步骤s6:以上步骤主要基于时序的短期特征检测异常抖动,部分抖动不是异常,对频繁异常进行修正,获取非异常时刻列表;
75.步骤s6.1:取最后一轮迭代后步骤s2输出的残差序列,残差序列中的空值使用历史迭代过程中步骤s4中标记的异常时刻残差值填补,获取完整残差序列;
76.步骤s6.2:从残差序列的起始处滑动检测窗口,取当前检测窗口内的最大值作为中心点,取以中心点为中心的检测窗口内的所有值作为一个样本;移动检测窗口到该样本的结尾处继续以相同的方式构造新样本,最终生成残差样本集;
77.步骤s6.3:对样本集中的每个样本计算样本异常度,即对每个样本的序列值求平方和;
78.步骤s6.4:对所有样本异常度使用核密度估计,概率高于限制阈值的样本为非异常样本;
79.步骤s6.5:标记非异常样本中的所有时刻为非异常时刻,得到非异常时刻列表。
80.步骤s7:时间序列中值为空的时刻,且不在非异常时刻列表中,为异常时刻,标记所有异常时刻,输出异常时刻列表。
81.本发明还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中的时间序列异常检测方法的步骤。
82.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述中的时间序列异常检测方法的步骤。
83.本发明还提供一种时间序列异常检测系统,所述时间序列异常检测系统可以通过执行所述时间序列异常检测方法的流程步骤予以实现,即本领域技术人员可以将所述时间序列异常检测方法理解为所述时间序列异常检测系统的优选实施方式。
84.实施例2:
85.本发明还提供一种时间序列异常检测系统,所述系统包括如下模块:
86.模块m1:对时间序列数据进行预处理,填充缺失值,若不填充缺失值则认为缺失时刻为异常时刻;
87.模块m2:对输入的时间序列数据进行双向指数平滑,计算平滑后的残差,得到一个平滑后的残差序列;
88.模块m2.1:对输入的时间序列向后偏移w个单位,w为需要输入的检测窗口大小,对偏移后的序列进行指数平滑,平滑窗口大小亦为w,得到平滑后的结果
‑‑
平滑序列1;
89.模块m2.2:反转输入的时间序列,将反转后的序列向后偏移w个单位,然后进行指数平滑,平滑窗口大小同样为w,得到平滑后的结果
‑‑
平滑序列2;
90.模块m2.3:计算输入序列与平滑序列1的差,得到残差序列1;
91.模块m2.4:计算输入序列与平滑序列2的差,得到残差序列2;
92.模块m2.5:每个时刻取残差序列1和残差序列2中的绝对值最小的那个值,若一方为空值则取对方数据,得到最终残差序列。
93.模块m3:对模块m2中得到的残差序列使用mad系统进行异常检测,得到一个临时异常时刻列表;
94.模块m4:将时间序列中异常时刻对应的异常数据值设置为空
‑‑
nan,更新时间序列,记录异常时刻对应残差序列中的残差值;更新后的时间序列包含异常时刻但值为空。
95.模块m5:判断是否满足中止条件,中止条件为达到最大迭代次数或者模块m4中时间序列没有增加新的nan,如果满足中止条件,则进入模块m6,否则回到模块m2;
96.模块m6:以上模块主要基于时序的短期特征检测异常抖动,部分抖动不是异常,对频繁异常进行修正,获取非异常时刻列表;
97.模块m6.1:取最后一轮迭代后模块m2输出的残差序列,残差序列中的空值使用历史迭代过程中模块m4中标记的异常时刻残差值填补,获取完整残差序列;
98.模块m6.2:从残差序列的起始处滑动检测窗口,取当前检测窗口内的最大值作为中心点,取以中心点为中心的检测窗口内的所有值作为一个样本;移动检测窗口到该样本的结尾处继续以相同的方式构造新样本,最终生成残差样本集;
99.模块m6.3:对样本集中的每个样本计算样本异常度,即对每个样本的序列值求平
方和;
100.模块m6.4:对所有样本异常度使用核密度估计,概率高于限制阈值的样本为非异常样本;
101.模块m6.5:标记非异常样本中的所有时刻为非异常时刻,得到非异常时刻列表。
102.模块m7:时间序列中值为空的时刻,且不在非异常时刻列表中,为异常时刻,标记所有异常时刻,输出异常时刻列表。
103.实施例3:
104.本发明提出了一种时间序列异常检测方法,通过多次迭代指数平滑的方法检测时间序列中的短期异常抖动。本方法主要关注时间序列的短期波动特征,能够适应无稳定长期规律的时间序列,对时间序列的类型有更好的适应性;包括如下步骤:
105.步骤1:对时间序列数据进行预处理,填充缺失值,若不填充缺失值则认为缺失时刻为异常时刻;
106.步骤2:对输入的时间序列数据进行双向指数平滑,计算平滑后的残差,得到一个平滑后的残差序列;
107.步骤3:步骤2中得到的残差序列,能够有效去除时间序列中的趋势项,除异常抖动部分有噪声外,整体为平稳序列,故可以对得到的残差序列使用mad方法进行异常检测,得到一个临时异常时刻列表;
108.步骤4:将时间序列中异常时刻对应的异常数据值设置为空
‑‑
nan,更新时间序列,记录异常时刻对应残差序列中的残差值,更新后的时间序列包含异常时刻但值为空;
109.步骤5:判断是否满足中止条件,中止条件为达到最大迭代次数或者步骤4中时间序列没有增加新的nan,如果满足中止条件,则进入步骤6,否则回到步骤2;
110.步骤6:以上步骤主要基于时序的短期特征快速检测异常抖动,部分抖动长期看并不是异常,故仍需要对频繁异常进行修正,获取非异常时刻列表;
111.步骤7:时间序列中值为空的时刻,且不在非异常时刻列表中,为异常时刻,标记所有异常时刻,输出异常时刻列表。
112.所述步骤2包括如下步骤:
113.步骤2.1:对输入的时间序列向后偏移w个单位,w为需要输入的检测窗口大小,对偏移后的序列进行指数平滑,平滑窗口大小亦为w,得到平滑后的结果
‑‑
平滑序列1;
114.步骤2.2:反转输入的时间序列,将反转后的序列向后偏移w个单位,然后进行指数平滑,平滑窗口大小同样为w,得到平滑后的结果
‑‑
平滑序列2;
115.步骤2.3:计算输入序列与平滑序列1的差,得到残差序列1;
116.步骤2.4:计算输入序列与平滑序列2的差,得到残差序列2;
117.步骤2.5:为降低平滑误差,每个时刻取残差序列1和残差序列2中的绝对值最小的那个值,若一方为空值则取对方数据,得到最终残差序列;
118.所述步骤6包括如下步骤:
119.步骤6.1:取最后一轮迭代后步骤2输出的残差序列,残差序列中的空值使用历史迭代过程中步骤4中标记的异常时刻残差值填补,获取完整残差序列;
120.步骤6.2:从残差序列的起始处滑动检测窗口,取当前检测窗口内的最大值作为中心点,取以中心点为中心的检测窗口内的所有值作为一个样本;移动检测窗口到该样本的
结尾处继续以相同的方式构造新样本,最终生成残差样本集;
121.步骤6.3:对样本集中的每个样本计算样本异常度,即对每个样本的序列值求平方和;
122.步骤6.4:对所有样本异常度使用核密度估计,概率高于限制阈值的样本为非异常样本;
123.步骤6.5:标记非异常样本中的所有时刻为非异常时刻,得到非异常时刻列表。
124.本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。
125.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
126.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1