在时间序列中寻找一个好的异常检测包

数据挖掘 Python 时间序列 异常检测 贝叶斯网络 异常
2021-10-11 23:27:28

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

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

4个回答

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

这个包是 Python 的,它的名字是pyod在 JMLR 上发布。

它有多种算法用于以下个别方法:

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

最后,如果您专门寻找时间序列本身,那么这个github 链接将会很有用。

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

数据流.io

天际线

半佩

异常检测

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

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

  2. 如果异常是未知的,我们在我们的组织中所做的就是聚类和分类的结合。

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

  1. 如果异常未知,在我的研究中,识别异常的最常见方法是建立一个正常模型,任何与正常模型的偏差(错误)都是异常的,所以在你的情况下,你预测下一个小时的时间序列,然后与实际值。如果错误超出预期,则表示发生了异常情况。

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

可能对你有用。

试试先知图书馆

Prophet是一种基于加法模型预测时间序列数据的程序,其中非线性趋势与年、周和日季节性以及假日效应相匹配。它最适用于具有强烈季节性影响和几个季节历史数据的时间序列。Prophet 对缺失数据和趋势变化具有鲁棒性,并且通常可以很好地处理异常值。

更多内容:使用 Prophet 库在时间序列中检测异常

我发现 Matrix 配置文件很有用,尤其是因为它们不需要太多的知识——甚至不需要时间框架的持续时间。据我了解,它们基本上依赖于自相关。该程序可用于输入一些数据并查找异常,我还没有使用它进行预测。

https://matrixprofile.docs.matrixprofile.org/