CN116010485A - 一种动态周期时序的无监督异常检测方法 - Google Patents

一种动态周期时序的无监督异常检测方法 Download PDF

Info

Publication number
CN116010485A
CN116010485A CN202310308621.5A CN202310308621A CN116010485A CN 116010485 A CN116010485 A CN 116010485A CN 202310308621 A CN202310308621 A CN 202310308621A CN 116010485 A CN116010485 A CN 116010485A
Authority
CN
China
Prior art keywords
periodic
time sequence
detection
period
time
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.)
Pending
Application number
CN202310308621.5A
Other languages
English (en)
Inventor
黄铮
秦宝帅
曾云
周倩如
张金银
王乐珩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Bizhi Technology Co ltd
Original Assignee
Hangzhou Bizhi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Bizhi Technology Co ltd filed Critical Hangzhou Bizhi Technology Co ltd
Priority to CN202310308621.5A priority Critical patent/CN116010485A/zh
Publication of CN116010485A publication Critical patent/CN116010485A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Testing And Monitoring For Control Systems (AREA)

Abstract

本发明公开了一种动态周期时序的无监督异常检测方法,包括以下步骤:S1:对输入时序进行预处理,包括去重、缺失填充和标准化;S2:使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段;S3:对若干个周期段采用STL时序分解算法,得到趋势分量、季节分量和残差分量;S4:对残差分量使用分位数阈值进行检测,得到周期性异常时序;S5:对非周期段使用孤立森林算法进行无监督幅值异常检测,得到非周期性异常时序;S6:合并周期性异常时序和非周期性异常时序,得到最终的异常检测结果。本方法能够实现对动态周期时序进行快速、精准的周期分段,能显著提升异常检测的准确度。

Description

一种动态周期时序的无监督异常检测方法
技术领域
本发明涉及机器学习中无监督时序异常检测领域,尤其是涉及一种动态周期时序的无监督异常检测方法。
背景技术
异常检测是数据安全领域的一个重要分支,其定义是从正常的时间序列中识别不正常的事件或行为的过程。企业使用异常检测技术可以对网络数据、用户敏感访问和操作进行实时监测,当发现异常时,及时采取措施最终保障信息安全、减少企业损失。
现有的无监督异常检测技术主要分为以下几类:
一、基于简单分布的方法:代表方法有3-sigma原则、1.5IQR原则,该类方法优势在于计算足够简单,缺陷在于需要输入尽可能满足正态分布的假设,否则异常的比例将会失控。
二、基于无监督学习的各类方法:基于距离,代表方法有KNN;基于密度,代表方法有LOF、COF等;基于聚类,代表方法有DBSCAN,基于树,代表方法有孤立森林;基于降维重建,代表方法有PCA、Auto-Encoder;基于累积分布,代表方法有ECOD。这些类别的方法在思想上各不相同,所以优势各不相同,有些具有很好的解释性,有些具有较好的检测准确度,但缺陷是都没有考虑到时间维度上的信息,无法检测出时序中的异常表现,如上下文异常、趋势异常、周期异常等。
三、基于时序自回归的方法:代表方法有移动平均、ARIMA、fbprophet、LSTM、Transformer等,通过时序自回归的方式进行自监督学习,因为正常时序更容易被模型所归纳,所以异常时序的预测偏差往往较大;基于深度网络的模型如LSTM、Transformer也可以抽取网络中的时序高阶特征,通过降维聚类的方法来分析异常时序。这类方法的优势在于考虑到时间维度的信息,但缺陷也很显著,检测效果取决于模型学习和归纳正常时序的好坏。面对真实系统中错综复杂的时序输入,难以保证模型能够完美的学习和归纳。根据实验,即使是Transformer及其衍生模型也很难做到对稀疏周期型时序的准确预测。
四、基于时序季节性分解的方法:代表方法有Holt-Winters、STL等,它们将时序提取出趋势分量、季节分量,再对残差分量进行异常检测。该方法的优势是针对时序的趋势性和季节性建模和异常检测,有着很好的指向性和准确度,而且趋势型异常和周期型异常是时序异常检测领域中特别关注的异常类型。该方法的劣势在于,必须知道时序的周期长度才能应用该类方法,其次,真实系统中的时序往往存在动态周期的情况:具体的,动态周期是指一个时序可能由天周期突然转换至周周期,而后又突然转换至非周期。显然,直接对时序使用季节性分解方法进行异常检测将带来灾难性的检测效果。一个容易想到的思路是:将时序按不同周期分段,然后再对这些周期段分别做检测。然而,如何精准的周期分段成为一个核心的难题,且目前鲜有研究对这个难题做出过解答。
发明内容
针对现有技术存在的问题,本发明的目的在于综合考量上述基于简单分布、无监督学习、时序自回归、时序季节性分解方法的优势和劣势,且发明了一种新的算法——随机周期探测森林,实现了一种动态周期时序的无监督异常检测方法,能够实现对动态周期时序进行快速、精准的周期分段,能显著提升异常检测的准确度。
为实现上述目的,本发明提供一种动态周期时序的无监督异常检测方法,所述方法包括以下步骤:
S1.对输入时序进行预处理,包括去重、缺失填充和标准化;
S2.使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段;
S3.对若干个周期段采用STL时序分解算法,得到趋势分量、季节分量和残差分量;
S4.对残差分量使用分位数阈值进行检测,得到周期性异常时序;
S5.对非周期段使用孤立森林算法进行无监督幅值异常检测,得到非周期性异常时序;
S6.合并周期性异常时序和非周期性异常时序,得到最终的异常检测结果。
进一步,步骤S1中,时序预处理的流程包括:
S101.去重:将时序按照时间索引排序,检测重复的时间索引并仅保留最新的一条数据;
S102.缺失填充:可采用均值填充、线性插值、移动平均、指数平滑或基于机器学习或深度学习对缺失值进行预测;
S103.标准化:使用Z-score标准化的方法,处理后的时序输入的均值为0,方差为1。
进一步,步骤S2中,随机周期探测森林算法的计算逻辑包括每棵周期探测树的生长、周期探测和剪枝的逻辑,以及最后N棵树投票决定每个时序点所在周期段的逻辑。
进一步,随机周期探测森林算法具体包括如下步骤:
S201.使用Hodrick-Prescott filter对时序进行去趋势处理,减少对周期探测的干扰;
S202.生成一棵新的周期探测树,将时序进行随机的、二叉式的切分,之后,左子节点和右子节点各自进行随机的、二叉式的切分,这样递归式的运行下去,完成树的生长;
S203.对S202生成的周期探测树做层次遍历,每遍历到一个节点,就对其使用自相关函数进行周期探测;
S204.重复执行S202和S203,每次执行都将生成一棵拥有不同随机状态的周期探测树;
S205.对S202到S204得到的由N棵树组成的随机周期探测森林,共同投票决定每个时序点所在的周期段或非周期段。
进一步,步骤202中,每个节点的属性是一个区间[a, b],表示了该节点被分配到的时序段的索引范围是从a到b的闭区间;记时序的长度为L,根节点的属性是[0,L-1],将根节点切分后得到左子节点和右子节点,随机切分比例设为k,则左子节点的属性是区间[0,k*L],右子节点的属性是区间[k*L+1,L];
为了防止切分比例过于失衡,增加切分比例范围(split_ratio_range)参数对随机切分比例的范围加以限制;
为了防止树生长成叶节点全为1个孤立的时序点,导致不满足周期探测的前置要求,增加最小节点切分样本数(min_samples_split)参数对树的生长进行剪枝。
进一步,将最小节点切分样本数(min_samples_split)参数设置为4倍的最大周期长度。
进一步,步骤S203中,自相关函数表达了一个时序和它时延后的副本时序的相似程度,自相关函数ACF的计算公式如下:
其中,表示时间延迟,表示时序,表示时延后的时序,分别表示时序的期望和标准差;
为了降低上式ACF的的时间复杂度,基于维纳—辛钦定理,使用快速傅立叶变换的实现可以将时间复杂度降低到;若时间复杂度是,它表示当输入大小增大时,计算执行时间会平方倍的增长;若时间复杂度是,计算执行时间则会按照倍的增长;的时间复杂度显著低于;增加最大探测样本数(max_samples_detect)参数,放弃对过长的时序进行周期探测,进一步限制了计算的规模。
为了降低对周期探测树做层次遍历的时间复杂度,增加置信层数(confidence_level)参数实现对树的遍历进行剪枝;优选的,confidence_level设置为3,可以在切分精度和算法复杂度上得到平衡。
进一步,步骤S204中,增加树的数量(n_estimators)参数来规定重复执行的轮数,将n_estimators设置为100。
进一步,步骤S4中,对残差分量使用分位数阈值进行检测得到周期性异常的流程包括:
S401.根据程序设置的异常比例获取分位数阈值;
S402.残差分量大于分位数阈值,被检测为周期性异常时序。
进一步,步骤S5中,对非周期段使用孤立森林算法进行无监督幅值异常检测的流程包括:
S501.将若干个非周期段拼接成一个非周期时序;
S502.使用孤立森林算法对非周期时序进行无监督幅值异常检测;具体为:
输入数据为,由多个样本组成;一片孤立森林由多棵子树组成,每棵子树随机从输入数据中采样个数据点;树的深度限制在
在推理阶段,孤立森林对于每个输入样本计算异常分数
其中,为样本在每棵子树的高度的均值,是所有样本在每棵子树的高度的均值;异常分数越接近于1,表示该样本异常的概率越大;
S503. 根据程序设置的异常比例,异常分数最高的一批时序被检测为非周期性异常时序。
本发明的有益效果在于:
1、发明随机周期探测森林算法,可以对动态周期时序进行快速、精准的周期分段,生成若干个已知周期长度的周期段和非周期段。
2、本方法对周期段和非周期段分别采用STL残差分量分位数阈值和孤立森林的异常检测方法进行检测,能显著提升准确度,减少告警误报。
3、本方法提供了丰富的时序分析信息,如周期变化、季节分量变化、趋势分量变化、残差分量变化,具有很好的解释性和业务价值。
附图说明
图1为根据本发明的动态周期时序的无监督异常检测方法的流程示意图;
图2为根据本发明的随机周期探测森林算法的计算逻辑示意图;
图3为根据本发明实施例的整体时序示意图;
图4为根据本发明实施例的标准化之后的时序示意图;
图5为根据本发明实施例的去趋势之后的时序示意图;
图6为根据本发明实施例的第一棵周期探测树的生长情况示意图;
图7为根据本发明实施例的第一棵周期探测树的层次遍历和周期探测情况示意图;
图8为根据本发明实施例的随机周期探测森林算法对该动态周期时序的精准的切分和周期探测结果示意图;
图9为根据本发明实施例的时序的周期探测结果示意图;
图10为根据本发明实施例的周期段的趋势变化情况示意图;
图11为根据本发明实施例的周期段的季节分量变化情况示意图;
图12为根据本发明实施例的周期段的取绝对值后的残差分量变化情况和周期性异常示意图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合附图1-图12对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1所示,根据本发明实施例的一种动态周期时序的无监督异常检测方法的流程,包括以下步骤:
S1.对输入时序进行预处理,包括去重、缺失填充和标准化;
S2.使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段;
S3.对若干个周期段采用STL时序分解算法,得到趋势分量、季节分量和残差分量;
S4.对残差分量使用分位数阈值进行检测,得到周期性异常时序;
S5.对非周期段使用孤立森林算法进行无监督幅值异常检测,得到非周期性异常时序;
S6.合并周期性异常时序和非周期性异常时序,得到最终的异常检测结果。
具体地,步骤S1中,时序预处理的流程包括:
S101.去重:真实系统的时序输入中的重复数据将会干扰异常检测任务。去重的方法是将时序按照时间索引排序,检测重复的时间索引并仅保留最新的一条数据;
S102.缺失填充:真实系统的时序输入常常会出现缺失值,缺失填充的方法有很多,可以是基于统计方式的有均值填充、线性插值、移动平均、指数平滑,也有基于机器学习或深度学习对缺失值进行预测,如树模型、循环神经网络等。本发明选用移动平均的方法实现快速的缺失填充。
S103.标准化:使用Z-score标准化的方法,处理后的时序输入的均值为0,方差为1,不仅同一了量纲,还可以加速运算。
步骤S2中,随机周期探测森林算法的概念是指:
随机周期探测森林算法是受到集成学习中bagging思想的启发。Bagging思想是指并行的训练多个子模型,最后投票决定结果。一片随机周期探测森林是由多棵拥有不同随机状态的周期探测树组成。每棵周期探测树都尝试将时序进行随机划分,并分别探测划分得到的周期段的周期长度。在最后,多棵周期探测树将它们的探测结果进行汇总,投票决定出每个时序点所在的周期段。
图2展示了步骤S2中随机周期探测森林算法的计算逻辑,包括了每棵周期探测树的生长、周期探测和剪枝的逻辑,以及最后N棵树投票决定每个时序点所在周期段的逻辑,具体包括如下步骤:
S201.使用Hodrick-Prescott filter(简称HP-filter)对时序进行去趋势处理,减少对周期探测的干扰;HP-filter的基本思想是将原始时间序列分解成长期趋势和短期波动两部分。其中,长期趋势表示一个平滑曲线,而短期波动则是一个波动值序列。长期趋势会严重干扰周期探测的准确性,所以必须被去除;
S202.生成一棵新的周期探测树,将时序进行随机的、二叉式的切分,之后,左子节点和右子节点各自进行随机的、二叉式的切分,这样递归式的运行下去,就完成了树的生长。每个节点的属性是一个区间[a, b],这表示了该节点被分配到的时序段的索引范围是从a到b的闭区间。记时序的长度为L,那么根节点的属性是[0,L-1],将根节点切分后得到左子节点和右子节点,假设随机切分比例是k,那么左子节点的属性是区间[0, k*L],右子节点的属性是区间[k*L+1,L]。之后,左子节点和右子节点各自进行随机的、二叉式的切分,这样递归式的运行下去,就完成了树的生长。
为了防止切分比例过于失衡,增加切分比例范围(split_ratio_range)参数对随机切分比例的范围加以限制,默认的,split_ratio_range设置为[0.25, 0.75]。
为了防止树生长成叶节点全为1个孤立的时序点,导致不满足周期探测的前置要求,增加最小节点切分样本数(min_samples_split)参数对树的生长进行剪枝。具体的,如果当前节点的区间长度小于min_samples_split,该节点将不再被切分。默认的,min_samples_split会设置成4倍的最大周期长度,以提供足够的区间长度进行后续的周期探测;
S203.对S202生成的周期探测树做层次遍历,每遍历到一个节点,就对其使用自相关函数进行周期探测。为了简化时间复杂度,增加最大探测样本数(max_samples_detect)参数,放弃对过长的时序进行周期探测。为了降低对周期探测树做层次遍历的时间复杂度,增加confidence_level参数实现对树的遍历进行剪枝;
自相关函数(ACF)表达了一个时序和它时延后的副本时序的相似程度。所以如果时延恰好等于周期长度时,ACF将达到极大值。ACF的计算公式如下:
其中,表示时间延迟,表示时序,表示时延后的时序,分别表示时序的期望和标准差。
为了降低上式ACF的的时间复杂度,基于维纳—辛钦定理,使用快速傅立叶变换的实现可以将时间复杂度降低到。其次,因为层次遍历的时间复杂度为,从整体来看,单次周期探测的时间复杂度仍然较高,再考虑到对一个过长的时序进行周期探测的准确度不佳,且无必要,所以增加max_samples_detect参数,放弃对过长的时序进行周期探测,进一步限制了计算的规模。默认的,max_samples_detect设置为2000。
为了降低对周期探测树做层次遍历的时间复杂度,增加置信层数(confidence_level)参数实现对树的遍历进行剪枝。具体的,假设设置confidence_level为2,它表示:当一个节点的置信层数大于等于2时,它将成为一个叶节点,其所有子节点将不再被遍历。置信层数是指,举个例子,如果一个节点的周期长度是p,它的父节点的周期长度也是p,父节点的父节点的周期长度也是p,那么可以称这个节点的置信层数为2。换言之,如果一段时序不管怎么切分,其子序列的周期都不变,那么可以断定这段时序的周期已经被精准的探测。通过设置confidence_level,可以大幅减小时间复杂度。当然,confidence_level也不建议设置的过低,否则可能无法做到足够精细的周期段切分。优选的,confidence_level设置为3,可以在切分精度和算法复杂度上得到平衡;
S204.重复执行S202和S203,每次执行都将生成一棵拥有不同随机状态的周期探测树;增加树的数量(n_estimators)参数来规定重复执行的轮数。一般的,n_estimators越大,动态时序切分的效果越准确和稳健,但计算资源消耗越多。默认的,n_estimators设置为100;
S205.对S202到S204得到的多棵树组成的随机周期探测森林,它们共同投票决定每个时序点所在的周期段或非周期段。
综上,周期探测的方法,包括:HP-filter、自相关函数;随机周期探测森林的算法参数包括:最小节点切分样本数min_samples_split(default=4Tmax),切分比例范围split_ratio_range(default=0.25,0.757),最大探测样本数max samples detect(default=2000),置信层数confidence_level(default=3),树的数量n_estimators(default=100)。
步骤S3中,STL时序分解算法的流程包括去趋势、周期子序列平滑、周期子序列的低通量过滤、去除平滑周期子序列趋势、去周期、趋势平滑一共六个子步骤,最终输出趋势分量、季节分量和残差分量。
步骤S4中,对残差分量使用分位数阈值进行检测得到周期性异常的流程包括:
S401.根据程序设置的异常比例获取分位数阈值。具体的,假设异常比例设置为10%,对应就是90%分位数作为阈值;
S402.残差分量大于分位数阈值,被检测为周期性异常。
步骤S5中,对非周期段使用孤立森林算法进行无监督幅值异常检测的流程包括:
S501.将若干个非周期段拼接成一个非周期时序;
S502.使用孤立森林算法对非周期时序进行无监督幅值异常检测。孤立森林是一种基于树和集成学习的异常检测算法,其核心思想是不断的使用随机超平面对一个数据空间进行切割,正常点需要经过更多的切割次数才能到达叶子节点,而异常点则会很快就被孤立。不断的使用随机超平面对一个数据空间进行切割,直到每个子空间仅包含一个数据点,换言之,就是数据点被“孤立”在各自的子空间。判断一个数据点是否是异常的依据是其被“孤立”时的切割次数:非异常点是聚集成簇的,需要多次切割才能将它们“孤立”;而异常点,即那些分布稀疏的点,只需要少数几次切割就可以将它们“孤立”。
输入数据为,由多个样本组成。一片孤立森林由多棵子树组成,每棵子树随机从输入数据中采样个数据点。因为算法更关心最先被“孤立”出来的异常点,且为了避免树将所有点都“孤立”而产生的高时间复杂度,树的深度限制在
训练孤立森林的重要参数有:
1.子树的个数,调节范围在[100, 1000],过低的值会导致算法效果不稳定,过高的值会导致计算资源的浪费。
2.异常的比例,调节范围在(0, 0.5),取决于输入的异常比例。
3.采样的大小,默认,输入规模大时可以增大该参数。
在推理阶段,孤立森林对于每个输入样本计算异常分数
其中,为样本在每棵子树的高度的均值,是所有样本在每棵子树的高度的均值。异常分数越接近于1,表示该样本异常的概率越大。
S503. 根据程序设置的异常比例,异常分数最高的一批时序被检测为非周期性异常时序。
S6:合并周期性异常和非周期性异常,得到最终的异常检测结果。
本实施例的一种动态周期时序的无监督异常检测方法,具有算法创新、准确率高、解释性强的技术优势。
下面以数据安全产品中敏感数据访问场景下的智能风险识别功能为例展示本发明的运行流程,本实施例运用所述异常检测方法对小时级敏感数据访问次数进行风险识别,其流程包括以下步骤:
S1:对输入时序进行预处理,包括去重、缺失填充和标准化;
输入时序是包含时间戳和敏感数据访问次数的结构化数据,为了更直观的观测动态周期时序的周期变化和论述随机周期探测森林算法的效果,下面将使用一个示例时序进行演示。
时间索引 敏感数据访问次数
2023-02-01 00:00:00 1.0
2023-02-01 01:00:00 0.0
2023-03-21 14:00:00 0.0
图3展示了整体时序的示例,可以观测到一系列不同时长、不同周期长度的周期段,以及两段非周期段。这些周期段的周期长度从左到右依次是8、3、5、6、5、7、4、9、3、4;非周期段的周期长度不存在,定义为-1。
执行S1的步骤具体包括:
S101.去重:将时序按照时间索引排序,检测重复的时间索引并仅保留最新的一条数据;例如,时间索引“2023-03-15 10:00:00”在输入时序出现了3次,那么将前2条冗余的数据进行删除,只保留最后一条。
S102.缺失填充:使用移动平均的方法实现对缺失值的填充。具体的,缺失值会被填充为前后时间窗的加权均值,越近的时序点会被赋予更高的权重;例如,有一时序[1,2,3,X,5,6,7],X表示缺失值,前后时间窗的长度为2,和缺失值距离为1的权重为0.7,距离为2的权重为0.3,那么X会被填充为4,具体计算过程如下:
S103.标准化:使用Z-score标准化的方法,处理后的时序的均值为0,方差为1。在本实施例中,图4展示了标准化之后的时序。
S2.使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段;
S201.使用Hodrick-Prescott filter(HP-filter)对时序进行去趋势处理。在本实施例中,图5展示了去趋势之后的时序。
S202.生成一棵新的周期探测树,将时序进行随机的、二叉式的切分。
在本实施例中,由于最大周期长度不超过10,所以优选将最小节点切分样本数(min_samples_split)设置成40。
图6简略的展示了第一棵周期探测树的生长情况。时序的总长度是1167,所以根节点的范围是[0,1166],在随机比例切分之后,左子节点分到的范围是[0,444],右子节点是[445,1166]。树像这样递归式的生长下去,直到子节点的范围长度小于min_samples_split。
S203.对S202生成的周期探测树做层次遍历,每遍历到一个节点,就对其进行周期探测。
在本实施例中,图7展示了第一棵周期探测树的层次遍历和周期探测情况。根节点的周期探测结果是24,遍历它的左右子节点分别是24和36。接下来,遍历第二层,从左至右4个节点的周期分别是24、6、35和36,此时注意最左侧子节点与父节点周期相同的次数为2,但还没有达到设定的置信层数(confidence_level)阈值,所以继续层次遍历。以这样的方式完成层次遍历后,得到最终的叶子节点的时序范围、周期长度、ACF值。可以看到节点的ACF较低,为0.382,这是因为这个范围恰好处于周期切换的边界。这也证明了只用一棵树,并不能准确的确定边界。
S204.重复执行S22和S23,每次执行都将生成一棵拥有不同随机状态的周期探测树。增加树的数量(n_estimators)参数来规定重复执行的轮数。一般的,n_estimators越大,动态时序切分的效果越准确和稳健,但计算资源消耗越多。优选的,n_estimators设置为100。
S205.对S202~S204得到的由多棵树组成的随机周期探测森林,它们共同投票决定每个时序点所在的周期段或非周期段。
在本实施例中,图8展示了随机周期探测森林算法对该动态周期时序的精准的切分和周期探测结果。真实周期长度从左到右依次是8、3、5、-1、6、5、7、-1、4、9、3、4,其中-1表示非周期段。至此,通过图3中的一个示例的动态周期时序,随机周期探测森林算法的效果已经得到验证。但由于该示例的时序不存在显著的异常,下面将会以一个新的、存在显著异常的动态周期时序进行论述。
在本实施中,图9至图12展示了使用本实施例方法对一个新的动态周期时序进行异常检测的结果,检测的算法参数分别为n_estimators=100,min_samples_split=100,confidence_level=3,周期性异常比例=1%,非周期性异常比例=1%。经过S1对输入时序进行预处理,包括去重、缺失填充和标准化和S2使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段,从图9可以看到,预处理后的时序的周期探测结果从左到右依次为8、-1、24、-1、24、12、-1、12。
S3.对若干个周期段采用STL时序分解算法,得到趋势分量、季节分量和残差分量;
在本实施例中,图10展示了周期段的趋势变化情况。图11展示了周期段的季节分量变化情况。图12展示了周期段的残差分量绝对值的变化情况。
S4.对残差分量使用分位数阈值进行检测,得到周期性异常;
S401.根据程序设置的异常比例获取分位数阈值;
在本实施例中,对S3得到的残差分量绝对值,取99%分位数作为分位数阈值。
S402.残差分量大于分位数阈值,被检测为周期性异常时序。
在本实施例中,如图12所示,超过该阈值的时序被检测为周期性异常时序,用圆形散点进行标注。
S5.对非周期段使用孤立森林算法进行无监督幅值异常检测,得到非周期性异常;
S501.将若干个非周期段拼接成一个非周期时序;
在本实施例中,将图9中的三个非周期时序段拼接成一个。
S502.使用孤立森林算法对非周期时序进行无监督幅值异常检测;
在本实施例中,孤立森林算法对所有非周期时序点都输出一个异常分数。
S503. 根据程序设置的异常比例,异常分数最高的一批时序被检测为非周期性异常时序。
在本实施例中,如图9所示,异常分数在top1%的时序被检测为非周期性异常时序,用方形散点进行标注。
S6.合并周期性异常和非周期性异常,得到最终的异常检测结果。
在本实施例中,如图9所示,1%周期性异常时序(出现在周期为非-1的时序段中)和1%非周期性异常时序(出现在周期为-1的时序段中)各自以圆形和方形散点进行标注。
本发明流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为表示包括一个或多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,可以实现在任何计算机刻度介质中,以供指令执行系统、装置或设备,所述计算机可读介质可以是任何包含存储、通信、传播或传输程序以供执行系统、装置或设备使用。包括只读存储器、磁盘或光盘等。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。

Claims (10)

1.一种动态周期时序的无监督异常检测方法,其特征在于,所述方法包括以下步骤:
S1.对输入时序进行预处理,包括去重、缺失填充和标准化;
S2.使用随机周期探测森林算法将预处理后的时序切分为若干个已知周期长度的周期段和非周期段;
S3.对若干个周期段采用STL时序分解算法,得到趋势分量、季节分量和残差分量;
S4.对残差分量使用分位数阈值进行检测,得到周期性异常时序;
S5.对非周期段使用孤立森林算法进行无监督幅值异常检测,得到非周期性异常时序;
S6.合并周期性异常时序和非周期性异常时序,得到最终的异常检测结果。
2.根据权利要求1所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S1中,时序预处理的流程包括:
S101.去重:将时序按照时间索引排序,检测重复的时间索引并仅保留最新的一条数据;
S102.缺失填充:可采用均值填充、线性插值、移动平均、指数平滑或基于机器学习或深度学习对缺失值进行预测;
S103.标准化:使用Z-score标准化的方法,处理后的时序输入的均值为0,方差为1。
3.根据权利要求1所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S2中,随机周期探测森林算法的计算逻辑包括每棵周期探测树的生长、周期探测和剪枝的逻辑,以及最后N棵树投票决定每个时序点所在周期段的逻辑。
4.根据权利要求3所述的一种动态周期时序的无监督异常检测方法,其特征在于,随机周期探测森林算法具体包括如下步骤:
S201.使用Hodrick-Prescott filter对时序进行去趋势处理,减少对周期探测的干扰;
S202.生成一棵新的周期探测树,将时序进行随机的、二叉式的切分,之后,左子节点和右子节点各自进行随机的、二叉式的切分,这样递归式的运行下去,完成树的生长;
S203.对S202生成的周期探测树做层次遍历,每遍历到一个节点,就对其使用自相关函数进行周期探测;
S204.重复执行S202和S203,每次执行都将生成一棵拥有不同随机状态的周期探测树;
S205.对S202到S204得到的由N棵树组成的随机周期探测森林,共同投票决定每个时序点所在的周期段或非周期段。
5.根据权利要求4所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤202中,每个节点的属性是一个区间[a, b],表示了该节点被分配到的时序段的索引范围是从a到b的闭区间;记时序的长度为L,根节点的属性是[0,L-1],将根节点切分后得到左子节点和右子节点,随机切分比例设为k,则左子节点的属性是区间[0, k*L],右子节点的属性是区间[k*L+1,L];
为了防止切分比例过于失衡,增加切分比例范围参数对随机切分比例的范围加以限制;
为了防止树生长成叶节点全为1个孤立的时序点,导致不满足周期探测的前置要求,增加最小节点切分样本数参数对树的生长进行剪枝。
6.根据权利要求5所述的一种动态周期时序的无监督异常检测方法,其特征在于,将最小节点切分样本数参数设置为4倍的最大周期长度。
7.根据权利要求4所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S203中,自相关函数表达了一个时序和它时延后的副本时序的相似程度,自相关函数ACF的计算公式如下:
其中,表示时间延迟,表示时序,表示时延后的时序,分别表示时序的期望和标准差;
为了降低上式ACF的的时间复杂度,基于维纳—辛钦定理,使用快速傅立叶变换的实现可以将时间复杂度降低到;若时间复杂度是,它表示当输入大小增大时,计算执行时间会平方倍的增长;若时间复杂度是,计算执行时间则会按照倍的增长;的时间复杂度低于;增加最大探测样本数参数,放弃对过长的时序进行周期探测,进一步限制了计算的规模。
8.根据权利要求4所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S204中,增加树的数量参数来规定重复执行的轮数,将树的数量设置为100。
9.根据权利要求1所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S4中,对残差分量使用分位数阈值进行检测得到周期性异常的流程包括:
S401.根据程序设置的异常比例获取分位数阈值;
S402.残差分量大于分位数阈值,被检测为周期性异常。
10.根据权利要求1所述的一种动态周期时序的无监督异常检测方法,其特征在于,步骤S5中,对非周期段使用孤立森林算法进行无监督幅值异常检测的流程包括:
S501.将若干个非周期段拼接成一个非周期时序;
S502.使用孤立森林算法对非周期时序进行无监督幅值异常检测;具体为:
输入数据为,由多个样本组成;一片孤立森林由多棵子树组成,每棵子树随机从输入数据中采样个数据点;树的深度限制在
在推理阶段,孤立森林对于每个输入样本计算异常分数
其中,为样本在每棵子树的高度的均值,是所有样本在每棵子树的高度的均值;异常分数越接近于1,表示该样本异常的概率越大;
S503. 根据程序设置的异常比例,异常分数最高的一批时序被检测为非周期性异常时序。
CN202310308621.5A 2023-03-28 2023-03-28 一种动态周期时序的无监督异常检测方法 Pending CN116010485A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310308621.5A CN116010485A (zh) 2023-03-28 2023-03-28 一种动态周期时序的无监督异常检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310308621.5A CN116010485A (zh) 2023-03-28 2023-03-28 一种动态周期时序的无监督异常检测方法

Publications (1)

Publication Number Publication Date
CN116010485A true CN116010485A (zh) 2023-04-25

Family

ID=86025244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310308621.5A Pending CN116010485A (zh) 2023-03-28 2023-03-28 一种动态周期时序的无监督异常检测方法

Country Status (1)

Country Link
CN (1) CN116010485A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116304962A (zh) * 2023-05-25 2023-06-23 湖南东润智能仪表有限公司 一种用于水表计量数据的智能异常监测方法
CN117370898A (zh) * 2023-12-08 2024-01-09 钛合联(深圳)科技有限公司 一种电子数据安全管控系统
CN117788396A (zh) * 2023-12-18 2024-03-29 江苏省特种设备安全监督检验研究院 一种基于深度学习的dr图像缺陷智能识别算法
CN117951628A (zh) * 2024-03-22 2024-04-30 陕西德联新能源有限公司 一种供热系统异常数据监测方法及系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116304962A (zh) * 2023-05-25 2023-06-23 湖南东润智能仪表有限公司 一种用于水表计量数据的智能异常监测方法
CN116304962B (zh) * 2023-05-25 2023-08-04 湖南东润智能仪表有限公司 一种用于水表计量数据的智能异常监测方法
CN117370898A (zh) * 2023-12-08 2024-01-09 钛合联(深圳)科技有限公司 一种电子数据安全管控系统
CN117370898B (zh) * 2023-12-08 2024-03-12 钛合联(深圳)科技有限公司 一种电子数据安全管控系统
CN117788396A (zh) * 2023-12-18 2024-03-29 江苏省特种设备安全监督检验研究院 一种基于深度学习的dr图像缺陷智能识别算法
CN117951628A (zh) * 2024-03-22 2024-04-30 陕西德联新能源有限公司 一种供热系统异常数据监测方法及系统

Similar Documents

Publication Publication Date Title
CN116010485A (zh) 一种动态周期时序的无监督异常检测方法
CN107528722B (zh) 一种时间序列中异常点检测方法及装置
US20150120263A1 (en) Computer-Implemented Systems and Methods for Testing Large Scale Automatic Forecast Combinations
US10482204B2 (en) System for processing data and modelling for analysis of the energy consumption of a site
CN110717535B (zh) 一种基于数据分析处理系统的自动建模方法及系统
CN113572625B (zh) 故障预警方法、预警装置、设备及计算机介质
CN111506637B (zh) 一种基于kpi指标的多维异常检测方法、装置及存储介质
CN110909125B (zh) 推文级社会媒体谣言检测方法
EP1958034B1 (en) Use of sequential clustering for instance selection in machine condition monitoring
CN112905380A (zh) 一种基于自动化监控日志的系统异常检测方法
Tian et al. Research on flight phase division based on decision tree classifier
US20240142922A1 (en) Analysis method, analysis program and information processing device
CN117034197A (zh) 基于多维Isolate-Detect多变点检测的企业用电典型模式分析方法
CN111680572B (zh) 一种电网运行场景动态判定方法及系统
CN116032725A (zh) 故障根因定位模型的生成方法及装置
CN113033673B (zh) 电机工况异常检测模型的训练方法及系统
CN114444602A (zh) 一种自动化构建异常检测模型的方法及系统
CN115168154A (zh) 一种基于动态基线的异常日志检测方法、装置及设备
CN115145903A (zh) 一种基于生产过程的数据插补方法
CN115062791A (zh) 一种人工智能的解释方法、装置、设备及存储介质
CN114530163A (zh) 基于密度聚类的采用声音识别设备生命周期的方法及系统
CN114462625A (zh) 决策树的生成方法、装置、电子设备及程序产品
CN110458383B (zh) 需求处理服务化的实现方法、装置及计算机设备、存储介质
CN115080286A (zh) 一种网络设备日志异常的发现方法及装置
Andriichuk et al. Usage of expert decision-making support systems in information operations detection

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