时间序列异常检测(异常事件决策树)-学知识-

时间序列异常检测(异常事件决策树)

牵着乌龟去散步 学知识 1 0

大家好,如果您还对时间序列异常检测不太了解,没有关系,今天就由本站为大家分享时间序列异常检测的知识,包括异常事件决策树的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

  1. 大数据科学家需要掌握的几种异常值检测 ***
  2. 时序异常检测算法
  3. 时期序列和时点序列的特点

一、大数据科学家需要掌握的几种异常值检测 ***

异常值检测与告警一直是工业界非常关注的问题,自动准确地检测出系统的异常值,不仅可以节约大量的人力物力,还能尽早发现系统的异常情况,挽回不必要的损失。个推也非常重视大数据中的异常值检测,例如在运维部门的流量管理业务中,个推很早便展开了对异常值检测的实践,也因此积累了较为丰富的经验。本文将从以下几个方面介绍异常值检测。

异常值,故名思议就是不同于正常值的值。在数学上,可以用离群点来表述,这样便可以将异常值检测问题转化为数学问题来求解。

异常值检测在很多场景都有广泛的应用,比如:

互联网上某些服务器的访问量,可能具有周期性或趋势性:一般情况下都是相对平稳的,但是当受到某些黑客攻击后,其访问量可能发生显著的变化,及早发现这些异常变化对企业而言有着很好的预防告警作用。

正常账户中,用户的转账行为一般属于低频事件,但在某些金融诈骗案中,一些嫌犯的账户就可能会出现高频的转账行为,异常检测系统如果能发现这些异常行为,及时采取相关措施,则会规避不少损失。

一个运行中的流水线,可能会装有不同的传感器用来监测运行中的机器,这些传感器数据就反应了机器运行的状态,这些实时的监测数据具有数据量大、维度广的特点,用人工盯着看的话成本会非常高,高效的自动异常检测算法将能很好地解决这一问题。

本文主要将异常值检测 *** 分为两大类:一类是基于统计的异常值检测,另一类是基于模型的异常值检测。

常见的基于统计的异常值检测 *** 有以下2种,一种是基于3σ法则,一种是基于箱体图。

3σ法则是指在样本服从正态分布时,一般可认为小于μ-3σ或者大于μ+3σ的样本值为异常样本,其中μ为样本均值,σ为样本标准差。在实际使用中,我们虽然不知道样本的真实分布,但只要真实分布与正太分布相差不是太大,该经验法则在大部分情况下便是适用的。

箱体图也是一种比较常见的异常值检测 *** ,一般取所有样本的25%分位点Q1和75%分位点Q3,两者之间的距离为箱体的长度IQR,可认为小于Q1-1.5IQR或者大于Q3+1.5IQR的样本值为异常样本。

基于统计的异常检测往往具有计算简单、有坚实的统计学基础等特点,但缺点也非常明显,例如需要大量的样本数据进行统计,难以对高维样本数据进行异常值检测等。

通常可将异常值检测看作是一个二分类问题,即将所有样本分为正常样本和异常样本,但这和常规的二分类问题又有所区别,常规的二分类一般要求正负样本是均衡的,如果正负样本不均匀的话,训练结果往往会不太好。但在异常值检测问题中,往往面临着正(正常值)负(异常值)样本不均匀的问题,异常值通常比正常值要少得多,因此需要对常规的二分类模型做一些改进。

基于模型的异常值检测一般可分为有监督模型异常值检测和无监督模型异常值检测,比较典型的有监督模型如oneclassSVM、基于神经 *** 的自编码器等。 oneclassSVM就是在经典的SVM基础上改进而来,它用一个超球面替代了超平面,超球面以内的值为正常值,超球面以外的值为异常值。

基于神经 *** 的自编码器结构如下图所示。

将正常样本用于模型训练,输入与输出之间的损失函数可采用常见的均方误差,因此检测过程中,当正常样本输入时,均方误差会较小,当异常样本输入时,均方误差会较大,设置合适的阈值便可将异常样本检测出来。但该 *** 也有缺点,就是对于训练样本比较相近的正常样本判别较好,但若正常样本与训练样本相差较大,则可能会导致模型误判。

无监督模型的异常值检测是异常值检测中的主流 *** ,因为异常值的标注成本往往较高,另外异常值的产生往往无法预料,因此有些异常值可能在过去的样本中根本没有出现过,这将导致某些异常样本无法标注,这也是有监督模型的局限性所在。较为常见的无监督异常值检测模型有密度聚类(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一种典型的无监督聚类 *** ,对某些类型的异常值检测也能起到不错的效果。该算法原理网上资料较多,本文不作详细介绍。

IF算法最早由南京大学人工智能学院院长周志华的团队提出,是一种非常高效的异常值检测 *** ,该 *** 不需要对样本数据做任何先验的假设,只需基于这样一个事实——异常值只是少数,并且它们具有与正常值非常不同的属性值。与随机森林由大量决策树组成一样,IsolationForest也由大量的树组成。IsolationForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。

假设数据集有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这颗树的训练样本。

在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与更大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。

这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直至达到终止条件。终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(n)。不同于决策树,iTree在算法里面已经限制了树的高度。不限制虽然也可行,但出于效率考虑,算法一般要求高度达到log2(n)深度即可。

把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入公式,其中E(.)表示计算期望,c(n)表示当样本数量为n时,路径长度的平均值,从而便可计算出每条待测数据的异常分数s(Anomaly Score)。异常分数s具有如下性质:

1)如果分数s越接近1,则该样本是异常值的可能性越高;

2)如果分数s越接近0,则该样本是正常值的可能性越高;

RCF算法与IF算法思想上是比较类似的,前者可以看成是在IF算法上做了一些改进。针对IF算法中没有考虑到的时间序列因素,RCF算法考虑了该因素,并且在数据样本采样策略上作出了一些改进,使得异常值检测相对IF算法变得更加准确和高效,并能更好地应用于流式数据检测。

时间序列异常检测(异常事件决策树)-第1张图片-

上图展示了IF算法和RCF算法对于异常值检测的异同。我们可以看出原始数据中有两个突变异常数据值,对于后一个较大的突变异常值,IF算法和RCF算法都检测了出来,但对于前一个较小的突变异常值,IF算法没有检测出来,而RCF算法依然检测了出来,这意味着RCF有更好的异常值检测性能。

理论还需结合实践,下面我们将以某应用从2016.08.16至2019.09.21的日活变化情况为例,对异常值检测的实际应用场景予以介绍:

从上图中可以看出该应用的日活存在着一些显著的异常值(比如红色圆圈部分),这些异常值可能由于活动促销或者更新迭代出现bug导致日活出现了比较明显的波动。下面分别用基于统计的 *** 和基于模型的 *** 对该日活序列数据进行异常值检测。

从图中可以看出,对于较大的突变异常值,3σ法则和RCF算法都能较好地检测出来,但对于较小的突变异常值,RCF算法则要表现得更好。

上文为大家讲解了异常值检测的 *** 原理以及应用实践。综合来看,异常值检测算法多种多样,每一种都有自己的优缺点和适用范围,很难直接判断哪一种异常检测算法是更佳的,具体在实战中,我们需要根据自身业务的特点,比如对计算量的要求、对异常值的容忍度等,选择合适的异常值检测算法。

接下来,个推也会结合自身实践,在大数据异常检测方面不断深耕,继续优化算法模型在不同业务场景中的性能,持续为开发者们分享前沿的理念与最新的实践方案。

二、时序异常检测算法

1、 STL表示基于损失的季节性分解的过程。该技术能够将时间序列信号分解为三个部分:季节性变化(seasonal)、趋势变化(trend)和剩余部分(residue)。

2、顾名思义,这种 *** 适用于季节性的时间序列,这是比较常见的情况。

3、这里不太明显的地方是,我们为了得到更可靠的异常检测结果,使用了绝对中位偏差。该 *** 目前更好的实现是 Twitter的异常检测库,它使用了 Generalized Extreme Student Deviation(广义的 ESD算法)测试残差点是否是一个离群点。

4、该 *** 的优点在于其简单性和健壮性。它可以处理很多不同的情况,并且所有的异常情况仍然可以直观解释。

5、它主要擅长于附加的异常值检测。如果想要检测一些水平变化,则可以对移动平均信号进行分析。

6、该 *** 的缺点是在调整选项方面过于死板。你所能做的只有通过显著性水平来调整置信区间。

7、当信号特征发生了剧烈变化时,该 *** 就失效了。例如,跟踪原本对公众是关闭状态的,却突然对公众开放的网站用户数量。在这种情况下,就应该分别跟踪在启动开放之前和开放之后发生的异常。

8、分类回归树(CART)是目前最稳健、最有效的机器学习技术之一。它也可以应用于异常检测问题。

9、分类树学习的更流行实现是 xgboost库。

10、这种 *** 的优点是它不受信号结构的任何约束,而且可以引入许多的特征参数进行学习,以获得更为复杂的模型。

11、该 *** 的缺点是会出现越来越多的特征,这很快会影响到整体的计算性能。在这种情况下,你应该有意识地选择有效特征。

12、自回归移动平均模型(ARIMA)是一种设计上非常简单的 *** ,但其效果足够强大,可以预测信号并发现其中的异常。

13、该 *** 的思路是从过去的几个数据点来生成下一个数据点的预测,在过程中添加一些随机变量(通常是添加白噪声)。以此类推,预测得到的数据点可以用来生成新的预测。很明显:它会使得后续预测信号数据更平滑。

14、使用这种 *** 最困难的部分是选择差异数量、自动回归数量和预测误差系数。

15、该 *** 的另一个障碍是信号经过差分后应该是固定的。也就是说,这意味着信号不应该依赖于时间,这是一个比较显著的限制。

16、异常检测是利用离群点来建立一个经过调整的信号模型,然后利用 t-统计量来检验该模型是否比原模型能更好的拟合数据。

17、该 *** 更受欢迎的实现是 R语言中的 tsoutliers包。在这种情况下,你可以找到适合信号的 ARIMA模型,它可以检测出所有类型的异常。

18、指数平滑 *** 与 ARIMA *** 非常相似。基本的指数模型等价于 ARIMA(0, 1, 1)模型。

19、从异常检测的角度来看,最有趣的 *** 是 Holt-Winters季节性 *** 。该 *** 需要定义季节性周期,比如周、月、年等等。

20、如果需要跟踪多个季节周期,比如同时跟踪周和年周期,那么应该只选择一个。通常是选择最短的那个:所以这里我们就应该选择周季节。

21、这显然是该 *** 的一个缺点,它会大大影响整体的预测范围。

22、和使用 STL或 CARTs *** 一样,我们可以通过统计学 *** 对离群值进行统计来实现异常检测。

23、与 CART *** 一样,神经 *** 有两种应用方式:监督学习和无监督学习。

24、我们处理的数据是时间序列,所以最适合的神经 *** 类型是 LSTM。如果构建得当,这种循环神经 *** 将可以建模实现时间序列中最复杂的依赖关系,包括高级的季节性依赖关系。

25、如果存在多个时间序列相互耦合,该 *** 也非常有用。

三、时期序列和时点序列的特点

2、其中每个指标数值的大小和它所体现反映出的时期长短具备直接关系。

3、每个指标的数值多数是经过不断的登记汇总得到的。

1、平稳性是时间序列的重要特征。如果时间序列的统计特性不随时间变化,则称其为静止的。换句话说,它具有恒定的均值和方差,协方差与时间无关。

2、其中每个指标数值的大小和它所体现反映出的时期长短不具备直接关系。时间序列只是一系列排序的数据点。在时间序列中,时间通常是自变量,目标通常是对未来进行预测。

3、每个指标的数值多数是经过一次性的登记汇总得到的。

时间序列(时期序列和时点序列)的原理:

时间序列是将某种统计指标的数值,按时间先后顺序排序所形成的数列。

时间序列的预测就是通过分析时间序列,根据时间序列所反映出来的发展过程、方向和趋势,进行类推或延伸,预测下一段时间或以后若干年内可能达到的水平。

时间序列的异常检测就是通过历史的数据分析,查看当前的数据是否发生了明显偏离了正常的情况。

参考资料来源:百度百科-时间序列

好了,关于时间序列异常检测和异常事件决策树的问题到这里结束啦,希望可以解决您的问题哈!

标签: 异常 时间序列 决策 检测 事件

上一篇地震预警时间 地震预警实施日期

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!