时序数据异常检测

时序数据异常检测文章目录 AIOPS 网上相关资料一 时序数据概念及分析 1 1 数据前期处理的重要性 1 2 1 时序数据周期研究 重点方向 1 3 时序数据的随机过程 1 4 白噪声序列 1 5 平稳性序列 1 7 弱平稳 1 7 1 原始序列平稳处理方法 1 8 关于多时间间隔的处理办法研究 重点研究方向 1 8 1 研究背景 1 8 2 研究方法 1 8 3 研究进展 2019 年 6 月 20 日 1 9 时序数据特征提取方法 1 10 多

文章目录

AIOPS网上相关资料

一、时序数据概念及分析

1.1 数据前期处理的重要性

1.2.1时序数据周期研究(重点方向)

不规则波动(随机变动):是许多不可控的偶然因素共同作用的结果,致使时间序列产生一种波浪形或震荡式的变动。

1.3 时序数据的随机过程

1.4 白噪声序列

1.5 平稳性序列

平稳性可以说是时间序列分析的基础。
平稳的通俗理解就是时间序列的一些行为不随时间改变, 所谓平稳过程就是其统计特性不随时间的平移而变化的过程。
仅仅通过统计特性不变来判别异常是不靠谱的,即时间序列内含的规律和逻辑,要在被预测的未来时间段内能够延续下去。这样我们才能用历史信息去预测未来信息,类似机器学习中的训练集和测试集同分布。如果时间序列的变化是没有规律的、完全随机的,那么预测模型也就没有用。平稳性的数学表达:如果时间序列在某一常数附近波动且波动范围有限,即有常数均值和常数方差,并且延迟k期的序列变量的自协方差和自相关系数是相等的或者说延迟k期的序列变量之间的影响程度是一样的,则称该序列为平稳序列。简单说就是没有明显趋势且波动范围有限。
1.6 严平稳/强平稳
通俗来说,就是时间序列的联合分布随着时间变化严格保持不变。
数学表达:如果对所有的时刻 t, (yt1,yt2,…ytm)的联合分布与(y(t1+k),(yt2+k),…y(tm+k))的联合分布相同,我们称时间序列 {yt} 是严平稳的。也就是时间序列的联合分布在时间的平移变换下保持不变。




1.7 弱平稳

1.7.1 原始序列平稳处理方法

1.8 关于多时间间隔的处理办法研究(重点研究方向)

1.8.1 研究背景

多时间间隔,是时序数据在采集过程中有不同的采集频率,由于客户需要以及采集系统能够做到随时改变单一指标的采集间隔,以及不同之间存在不同的时间间隔,时序数据出现多标准化问题,无法用统一的办法来对其进行解决。

在处理多时间间隔问题上,目前尚无成熟的解决方案,但是在应用上无法绕开多时间间隔带来的问题,由于无论是有监督还是无监督,都是需要依靠历史数据来对当前时刻点作出判断,历史数据缓存在本地是一个必然的事情,但是由于秒级数据存在量太大的问题,极有可能在指标量非常大的时候会带来内存问题以及性能问题;

1.8.2 研究方法

  • 论文
  • 网络

1.8.3 研究进展

2019年6月20日
  1. 如果间隔过大,历史值非常少,就取所有值;
  2. 如果间隔过小,历史值非常多,就取前后180个值,
  3. 关键是多少算多,如果一天数据量大于180就算多,如果小于180就算少;
  4. 而且正确率稍高的stl分解办法在这行不通了,而且现在对时序分解办法存在理论不了解;
  5. 其实时序分解是一种非常好的时序处理方法,但是目前还不适用几个小时内的数据处理;

1.9 时序数据特征提取方法

tsfresht特征提取库文档

1.10 多指标检测

1.10.1 如何判断多指标之间,是谁影响谁?

1.11 时序数据预处理文档

  • 流入算法的数据需要满足什么条件?
  • 无null值
  • 数据格式符合要求
  • 历史数据数量符合要求
  • 数据无缺失值
  • 数据保持时序完整性
  • 数据无重复值
  • 指标聚类也算作预处理的一部分

二、运用无监督进行异常检测

2.0 无监督算法基本分类

参考资料

2.0.1 统计与概率模型

主要是对数据的分布做出假设,并找出假设下所定义的“异常”,因此往往会使用极值分析或者假设检验。比如对最简单的一维数据假设高斯分布,然后将距离均值特定范围以外的数据当做异常点。而推广到高维后,可以假设每个维度各自独立,并将各个维度上的异常度相加。如果考虑特征间的相关性,也可以用马氏距离(mahalanobis distance)来衡量数据的异常度[12]。不难看出,这类方法最大的好处就是速度一般比较快,但因为存在比较强的“假设”,效果不一定很好。

2.0.2 线性模型

假设数据在低维空间上有嵌入,那么无法、或者在低维空间投射后表现不好的数据可以认为是离群点。举个简单的例子,PCA可以用于做异常检测[10],一种方法就是找到k个特征向量(eigenvector),并计算每个样本再经过这k个特征向量投射后的重建误差(reconstruction error),而正常点的重建误差应该小于异常点。同理,也可以计算每个样本到这k个选特征向量所构成的超空间的加权欧氏距离(特征值越小权重越大)。在相似的思路下,我们也可以直接对协方差矩阵进行分析,并把样本的马氏距离(在考虑特征间关系时样本到分布中心的距离)作为样本的异常度,而这种方法也可以被理解为一种软性(Soft PCA) [6]。同时,另一种经典算法One-class SVM[3]也一般被归类为线性模型。

2.0.3 基于相似度衡量的模型

异常点因为和正常点的分布不同,因此相似度较低,由此衍生了一系列算法通过相似度来识别异常点。比如最简单的K近邻就可以做异常检测,一个样本和它第k个近邻的距离就可以被当做是异常值,显然异常点的k近邻距离更大。同理,基于密度分析如LOF [1]、LOCI和LoOP主要是通过局部的数据密度来检测异常。显然,异常点所在空间的数据点少,密度低。相似的是,Isolation Forest[2]通过划分超平面来计算“孤立”一个样本所需的超平面数量(可以想象成在想吃蛋糕上的樱桃所需的最少刀数)。在密度低的空间里(异常点所在空间中),孤例一个样本所需要的划分次数更少。另一种相似的算法ABOD[7]是计算每个样本与所有其他样本对所形成的夹角的方差,异常点因为远离正常点,因此方差变化小。换句话说,大部分异常检测算法都可以被认为是一种估计相似度,无论是通过密度、距离、夹角或是划分超平面。通过聚类也可以被理解为一种相似度度量,比较常见不再赘述。

2.0.4 集成异常检测与模型融合

在无监督学习时,提高模型的鲁棒性很重要,因此集成学习就大有用武之地。比如上面提到的Isolation Forest,就是基于构建多棵决策树实现的。最早的集成检测框架feature bagging[9]与分类问题中的随机森林(random forest)很像,先将训练数据随机划分(每次选取所有样本的d/2-d个特征,d代表特征数),得到多个子训练集,再在每个训练集上训练一个独立的模型(默认为LOF)并最终合并所有的模型结果(如通过平均)。值得注意的是,因为没有标签,异常检测往往是通过bagging和feature bagging比较多,而boosting比较少见。boosting情况下的异常检测,一般需要生成伪标签,可参靠[13, 14]。集成异常检测是一个新兴但很有趣的领域,综述文章可以参考[16, 17, 18]。

2.0.5 特定领域的异常检测

比如图像异常检测 [21],顺序及流数据异常检测(时间序列异常检测)[22],以及高维空间上的异常检测 [23],比如前文提到的Isolation Forest就很适合高维数据上的异常检测。

2.0.6 参考文献

2.1 3σ准则

2.1.1 基本原理

2.1.2 优缺点

2.1.2.1优点
  1. 计算速度非常快;
    #2.1.2.2 缺点
  2. 效果可提升空间小;
  3. 计算正确率一般,百分之30左右(已经测过的)
  4. 无法应用到多维指标
    2.2 箱型图法

2.2.1 基本原理

2.2.2 优缺点

#2.2.2.1 优点

  • 不需要数据服从任何分布
  • 不需要数据具有稳定间隔
  • 不需要数据时间上保持连续
  • 计算速度快
2.2.2.2 缺点
  • 在异常表现上可能存在问题,目前还未证实

依赖

1) d(p,o)d(p,o):两点p和o之间的距离;

2) k-distance:第k距离

3) k-distance neighborhood of p:第k距离邻域

4) reach-distance:可达距离

5) local reachability density:局部可达密度

6) local outlier factor:局部离群因子

优缺点

缺点
  1. 所需要的起始数据量较大;
  2. 检测效果不佳;
  3. 参数难以调整和固定;
优点
  1. 该算法可以应用到多维指标
  2. 该算法异常检测效果再单指标上表现一般,但是在多维指标上可能表现良好;

2.4 孤立森林

孤立森林核心算法

优缺点

缺点
  1. 所需要的起始数据量较大;
  2. 检测效果不佳;
  3. 参数难以调整和固定;
优点
  1. 可以应用到多维指标;
  2. 在多维指标上表现良好;

2.5 密度聚类DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸样本集,也可以适用于非凸样本集。下面我们就对DBSCAN算法的原理做一个总结。

基本原理

密度定义

在上一节我们定性描述了密度聚类的基本思想,本节我们就看看DBSCAN是如何描述密度聚类的。DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。

假设我的样本集是D=(x1,x2,…,xm),则DBSCAN具体的密度描述定义如下:

1) ϵ-邻域:对于xj∈D,其ϵ-邻域包含样本集D中与xj的距离不大于ϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 这个子样本集的个数记为|Nϵ(xj)|

2) 核心对象:对于任一样本xj∈D,如果其ϵ-邻域对应的Nϵ(xj)至少包含MinPts个样本,即如果|Nϵ(xj)|≥MinPts,则xj是核心对象。

3)密度直达:如果xi位于xj的ϵ-邻域中,且xj是核心对象,则称xi由xj密度直达。注意反之不一定成立,即此时不能说xj由xi密度直达, 除非且xi也是核心对象。

4)密度可达:对于xi和xj,如果存在样本样本序列p1,p2,…,pT,满足p1=xi,pT=xj, 且pt+1由pt密度直达,则称xj由xi密度可达。也就是说,密度可达满足传递性。此时序列中的传递样本p1,p2,…,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。

5)密度相连:对于xi和xj,如果存在核心对象样本xk,使xi和xj均由xk密度可达,则称xi和xj密度相连。注意密度相连关系是满足对称性的。

DBSCAN密度聚类思想

DBSCAN的聚类定义很简单:由密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。

这个DBSCAN的簇里面可以有一个或者多个核心对象。如果只有一个核心对象,则簇里其他的非核心对象样本都在这个核心对象的ϵ-邻域里;如果有多个核心对象,则簇里的任意一个核心对象的ϵ-邻域中一定有一个其他的核心对象,否则这两个核心对象无法密度可达。这些核心对象的ϵ-邻域里所有的样本的集合组成的一个DBSCAN聚类簇。

那么怎么才能找到这样的簇样本集合呢?DBSCAN使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。

基本上这就是DBSCAN算法的主要内容了,是不是很简单?但是我们还是有三个问题没有考虑。

第一个是一些异常样本点或者说少量游离于簇外的样本点,这些点不在任何一个核心对象在周围,在DBSCAN中,我们一般将这些样本点标记为噪音点。

第二个是距离的度量问题,即如何计算某样本和核心对象样本的距离。在DBSCAN中,一般采用最近邻思想,采用某一种距离度量来衡量样本距离,比如欧式距离。这和KNN分类算法的最近邻思想完全相同。对应少量的样本,寻找最近邻可以直接去计算所有样本的距离,如果样本量较大,则一般采用KD树或者球树来快速的搜索最近邻。如果大家对于最近邻的思想,距离度量,KD树和球树不熟悉,建议参考之前写的另一篇文章K近邻法(KNN)原理小结。

第三种问题比较特殊,某些样本可能到两个核心对象的距离都小于ϵ,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,那么如果界定这个样本的类别呢?一般来说,此时DBSCAN采用先来后到,先进行聚类的类别簇会标记这个样本为它的类别。也就是说DBSCAN的算法不是完全稳定的算法。

DBSCAN聚类算法

DBSCAN小结

DBSCAN实现

sklearn-刘建平博客实现

优缺点

优点
  1. 唯一值得称赞的优点就是对于非凸数据簇也是可以分离开的;
  2. 相对于k-means聚类肯定是表现非常好的;
缺点
  1. 所需要的起始数据量较大;
  2. 检测效果不佳;
  3. 参数难以调整和固定;

2.6 oneclass-svm

优缺点

缺点
  1. 要求只能使用正常数据点来拟合,然后才能检测是否有异常;
  2. 计算量较大
优点
  1. 可以在多维指标上进行应用;

2.7 时序分解pyculiarity

此方法确实是在时序分解基础之上,更近一步,用中位数代替趋势分量,这样会消除掉假异常点
S-H-ESD方法-非常详细的讲解[外链图片转存失败(img-Er13msZJ-76)(./81.png)]

grubbs’Test

ESD方法

在现实数据集中,异常值往往是多个而非单个。为了将Grubbs’ Test扩展到k个异常值检测,则需要在数据集中逐步删除与均值偏离最大的值(为最大值或最小值),同步更新对应的t分布临界值,检验原假设是否成立。基于此,Rosner提出了Grubbs’ Test的泛化版ESD(Extreme Studentized Deviate test)。算法流程如下:

  • 计算与均值偏离最远的残差,注意计算均值时的数据序列应是删除上一轮最大残差样本数据后;
    R j = max ⁡ i ∣ Y i − Y ′ ‾ ∣ s , 1 ≤ j ≤ k R_{j}=\frac{\max _{i}\left|Y_{i}-\overline{Y^{\prime}}\right|}{s}, \quad 1 \leq j \leq k Rj=smaxiYiY,1jk
  • 计算临界值(critical value);
    λ j = ( n − j ) ∗ t p , n − j − 1 ( n − j − 1 + t p , n − j − 1 2 ) ( n − j + 1 ) , 1 ≤ j ≤ k \lambda_{j}=\frac{(n-j) * t_{p, n-j-1}}{\sqrt{\left(n-j-1+t_{p, n-j-1}^{2}\right)(n-j+1)}}, \quad 1 \leq j \leq k λj=(nj1+tp,nj12)(nj+1)
    (nj)tp,nj1
    ,1
    jk

  • 检验原假设,比较检验统计量与临界值;若Ri>λj,则原假设H0不成立,该样本点为异常点;
  • 重复以上步骤k次至算法结束。

时间序列分解算法

STL

时间序列异常检测

鉴于时间序列数据具有周期性(seasonal)、趋势性(trend),异常检测时不能作为孤立的样本点处理;故而Twitter的工程师提出了S- ESD (Seasonal ESD)与S-H-ESD (Seasonal Hybrid ESD)算法,将ESD扩展到时间序列数据。

S- ESD (Seasonal ESD)
S-H-ESD

实现开源代码

优缺点

优点
  1. 这种方法对时序数据起始量要求不高;
  2. 经过数据分解以及算法迭代,效果可以达到期望水平;
  3. 复杂度较高,但是计算成本不高
  4. 召回率、准确率都会良好表现
缺点
  1. 理论上只能在单指标上进行应用,无法在多维指标上进行应用;
    2.8 自编码无监督异常检测
    Autoencoder,中文称作自编码器,是一种无监督式学习模型。本质上它使用了一个神经网络来产生一个高维输入的低维表示。Autoencoder与主成分分析PCA类似,但是Autoencoder在使用非线性激活函数时克服了PCA线性的限制。

Autoencoder包含两个主要的部分,encoder(编码器)和 decoder(解码器)。Encoder的作用是用来发现给定数据的压缩表示,decoder是用来重建原始输入。在训练时,decoder 强迫 autoencoder 选择最有信息量的特征,最终保存在压缩表示中。最终压缩后的表示就在中间的coder层当中。

优缺点

缺点

训练数据中不能有异常数据

2.10 Histogram-based Outlier Score (HBOS)

基本原理

2.11 FastABOD: Fast Angle-Based Outlier Detection using approximation

基本原理

2.12 MCD: Minimum Covariance Determinant

基本原理

MinCovDet是基于最小协方差行列式(Minimum Covariance Determinant,简称MCD)的算法,是鲁棒协方差估计。

2.13 EmpiricalCovariance

基本原理

EmpiricalCovariance是基于最大似然协方差估计的算法

PyOD

introduce pyod

2.14 CLOF

Liu Y , Li Z , Zhou C , et al. “Generative Adversarial Active Learning for Unsupervised Outlier Detection”, arXiv:1809.10816, 2018.

参考资料

  1. makedown编辑教程
  2. 孤立森林论文1
  3. 孤立森林论文2
  4. STL
  5. STL论文
  6. LOF论文
  7. one-class svm论文
  8. arima论文该方法用于预测,而不是检测,上述几种方法都是用于检测
  9. DBSCAN论文

AI中台化发展

AI中台宜信

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211421.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:28
下一篇 2026年3月18日 下午10:28


相关推荐

  • UFT对table的操作

    UFT对table的操作通常Table(类似电子表格的行和列组成的二维网格)中的数据是动态从后台数据库中抽取并呈现给用户的。下面是HTML的webtable的句法,tr代表一行,td代表所属行中单独的一个小格。<tableborder=”1″><tr><th>Month</th><th>Savings</th></tr><tr><td>January</td

    2022年5月27日
    42
  • php-max_execution_time

    php-max_execution_time

    2021年10月24日
    55
  • ci框架子类继承父类时,报错Fatal error: Class ‘BaseController‘ not found in C:\xampp\htdocs「建议收藏」

    ci框架子类继承父类时,报错Fatal error: Class ‘BaseController‘ not found in C:\xampp\htdocs

    2022年2月18日
    50
  • http的幂等性[通俗易懂]

    一.什么是幂等性幂等(idempotent):在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实

    2022年4月17日
    65
  • VL53L0X+stm32激光测距

    VL53L0X+stm32激光测距文末有补充这段时间很忙,一直没时间看邮件,忽略了一些信息,没有及时给有需要的网友发工程代码。其实你们可以找在底下留言的网友,他们留了邮箱,加他们qq或者发邮件给他们,让他们发给你们,这样可以节省你们得时间。———2019.7.3最近学习stm32单片机,用VL53L0X这个传感器进行开发,花了不少时间和精力,写这个博客一个是为了记录自己的学习过程另外一个是感谢网上各位…

    2022年5月5日
    59
  • SpringBoot集成Mybatis保姆级教程(完整版)

    SpringBoot集成Mybatis保姆级教程(完整版)贴心又实用的干货教程,千万别错过

    2022年6月24日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号