寻找按时间顺序进行异常检测的良好包装


17

是否有可用于时间序列异常检测的全面的开源软件包(最好是python或R)?

scikit-learn中有一个一类SVM软件包,但不适用于时间序列数据。我正在寻找更复杂的程序包,例如,使用贝叶斯网络进行异常检测。


我们需要写一个,兄弟!:P
Arpit Sisodia

Answers:


19

我知道我来晚了,但是是的,这里有一个异常检测包以及离群值组合框架。

它仍然在github上处于开发的早期阶段,并将很快在JMLR中发布。

软件包是python语言,软件包名称是pyodhttps://github.com/yzhao062/Pyod)。

它具有多种算法,可用于以下各个方法:

  1. 离群值检测的线性模型(PCA,vMCD,vOne-Class和SVM
  2. 基于接近度的离群值检测模型(LOF,CBLOF,HBOS,KNN,AverageKNN和MedianKNN
  3. 异常检测的概率模型(ABOD和FastABOD
  4. 离群集成和组合框架(IsolationForest和FeatureBagging
  5. 神经网络和深度学习模型(具有完全连接的神经网络的自动编码器

最后,如果您正在寻找时间序列本身,那么这个 github链接将非常有用。

它具有以下用于时间序列离群值检测的列表包:

数据流

天际线

班培

异常检测


有什么方法可以处理基于上下文的异常?
Arpit Sisodia

您是在谈论异常检测还是异常检测?它们是有区别的。
Arpit Sisodia

6

有多种方法来处理时间序列异常-

1)如果已知异常,则建立分类模型。使用此模型可以为时间序列数据检测相同类型的异常。

2)如果异常情况未知,则我们在组织中所做的-是聚类和分类的组合-

首先使用LOF / K-means / Cook的距离来识别离群值。由于我们现在有2类-离群值和法线,将整个数据转换为分类问题。现在建立一个分类模型并获取规则(分类模型)以识别运行时的异常(时间序列数据)。

3)如果异常未知,在我的研究中,识别异常的最常见方法是建立一个正常模型,并且与正常模型的任何偏差(error)都是异常的,因此在这种情况下,您可以预测下一个小时的时间序列,然后进行比较与实际值。如果错误超出预期,则表示发生异常。

我无法在python或R中找到任何直接包来这样做,因为没人知道什么是真正的异常:P,在所有情况下,它都与异常值检测有关。

一些有用的链接-

https://machinelearningstories.blogspot.com/2018/12/easiest-way-of-detection-abnormality.html

https://machinelearningstories.blogspot.com/2018/07/anomaly-detection-anomaly-detection-by.html


2

试试先知图书馆

先知是一种基于附加模型预测时间序列数据的过程,其中非线性趋势与年,周和日的季节性变化以及假日效应相吻合。它最适合具有强烈季节性影响和多个季节历史数据的时间序列。先知对丢失数据和趋势变化具有鲁棒性,通常可以很好地处理异常值。

更多信息:Prophet库按时间序列进行异常检测

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.