超实用的时序异常检测工具
用于时间序列数据异常检测的工具和数据集列表。
所有列表均按字母顺序排列。如果最新提交大于1 年,或者作者明确提及,则认为工具“未维护”。
一、异常检测工具
名称 | 编译语言 | 简介 | 许可证 | 维护状态 |
---|---|---|---|---|
Expedia.com’s Adaptive Alerting | Java | 通过自动模型选择和拟合进行流式异常检测。 | Apache-2.0 | ❌ |
Arundo’s ADTK | Python | Anomaly Detection Toolkit (ADTK) 是一个 Python 包,用于无监督/基于规则的时间序列异常检测。 | MPL 2.0 | ❌ |
Twitter’s AnomalyDetection | R | AnomalyDetection 是一个开源的 R 包,用于检测异常,从统计的角度来看,在存在季节性和潜在趋势的情况下是稳健的。 | GPL | ❌ |
Lytics’ Anomalyzer | Go | Anomalyzer实现了一套统计测试,这些测试产生了一组给定的数字输入(通常是一个时间序列)包含异常行为的概率。 | Apache-2.0 | ❌ |
banpei | Python | 时间序列的离群点检测(Hotelling理论)和变化点检测(奇异谱变换)。 | MIT | ❌ |
Ele.me’s banshee | Go | 周期性指标的异常检测系统。 | MIT | ❌ |
CAD | Python | 用于流数据的实时 AD 的上下文异常检测(2016 NAB 竞赛的获胜算法)。 | AGPL | ❌ |
Chaos Genius | Python | ML 支持的分析引擎,用于异常值/异常检测和根本原因分析。 | MIT | ✔️ |
Cuebook’s CueObserve | Python3 | SQL 数据仓库和数据库的异常检测。 | Apache-2.0 | ✔️ |
Mentat’s datastream.io | Python | 使用 Python、Elasticsearch 和 Kibana 进行实时异常检测的开源框架。 | Apache-2.0 | ❌ |
DeepADoTS | Python | 7 种基于深度学习的时间序列数据异常检测技术的实现和评估。 | MIT | ❌ |
Donut | Python | Donut 是一种基于变分自动编码器的季节性 KPI 无监督异常检测算法。 | - | ❌ |
Yahoo’s EGADS | Java | GADS 是一个库,其中包含许多异常检测技术,适用于单个包中的许多用例,唯一的依赖项是 Java。 | GPL | ✔️ |
Hastic | Python + node.js | 基于Grafana用户界面的时间序列数据异常检测工具。 | GPL | ✔️ |
LoudML | Python | Loud ML是一个建立在TensorFlow之上的开源时间序列推理引擎。它对于预测数据、检测异常值以及使用未来知识自动处理数据非常有用。 | MIT | ❌ |
Zillow’s Luminaire | Python | Luminaire 是一个 python 包,为时间序列数据提供 ML 驱动的异常检测和预测解决方案。 | Apache-2.0 | ✔️ |
Linkedin’s luminol | Python | Luminol 是一个用于时间序列数据分析的轻量级 Python 库。它支持的两个主要功能是异常检测和关联。它可用于调查异常的可能原因。 | Apache-2.0 | ❌ |
MIDAS | C++ | MIDAS 是基于 Microcluster-Based Detector of Anomalies in Edge Streams 的缩写,它能从边缘流中检测出恒定时间和内存的微集群异常。 | Apache-2.0 | ✔️ |
Numenta’s Nupic | C++ | Numenta 智能计算平台是分层时间记忆 (HTM) 的实现。 | AGPL | ❌ |
oddstream | R | oddstream(数据流中的异常值检测)为大量流式时间序列数据集合中的异常序列的早期检测提供实时支持。 | GPL-3 | ❌ |
OutlierDetection.jl | Julia | 使用 Julia 进行快速、可扩展且灵活的异常值检测。 | MIT | ✔️ |
PyOD | Python | PyOD 是一个全面且可扩展的 Python 工具包,用于检测多元数据中的异常对象。 | BSD 2-Clause | ✔️ |
PyOdds | Python | PyODDS 是一个端到端的 Python 系统,用于支持数据库的异常值检测。PyODDS 提供异常值检测算法,支持静态和时间序列数据。 | MIT | ❌ |
PySAD | Python | PySAD是一个流式异常检测框架,拥有各种在线模型和整套实验工具。 | BSD 3-Clause | ❌ |
rrcf | Python | 流上异常检测的Robust Random Cut Forest算法的实现。 | MIT | ❌ |
ruptures | Python | Ruptures 是一个用于离线变化点检测的 Python 库。该软件包提供了分析和分割非平稳信号的方法。 | BSD 2-Clause | ✔️ |
EarthGecko Skyline | Python3 | Skyline 是一个实时异常检测系统,旨在实现对数十万个指标的被动监控。 | MIT | ✔️ |
Netflix’s Surus | Java | Robust Anomaly Detection (RAD) - Robust PCA的一个实现。 | Apache-2.0 | ❌ |
NASA’s Telemanom | Python | 使用 LSTM 检测多元时间序列数据中的异常的框架。包括来自火星科学实验室和 SMAP 任务的航天器异常数据和实验。 | custom | ❌ |
二、相关工具
本节包括一些用于异常检测相关任务的时间序列软件,例如预测、通用时序分析和标记。
1、时序预测工具
名称 | 编译语言 | 简介 | 许可证 | 维护状态 |
---|---|---|---|---|
darts | Python | darts 是一个 python 库,目的是更方便的进行预测时间序列。它包含多种模型,从 ARIMA 等经典模型到神经网络。 | Apache-2.0 | ✔️ |
ETNA | Python | etna 是一个用于时间序列预测和分析的 Python 库,始终牢记时态数据结构。包括各种具有统一接口的预测模型以及 EDA 和验证方法。 | Apache-2.0 | ✔️ |
Amazon’s GluonTS | Python | GluonTS 是一个用于概率时间序列建模的 Python 工具包,围绕 MXNet 构建。GluonTS 提供了用于加载和迭代时间序列数据集的实用程序、可以训练的最先进模型以及定义您自己的模型的构建块。 | Apache-2.0 | ✔️ |
pmdarima | Python | 移植R的auto.arima与scikit-learn友好的界面。 | MIT | ✔️ |
Facebook’s Prophet | Python/R | Prophet 是一个用于预测时间序列数据的程序。它基于一个加法模型,其中非线性趋势与年度和每周季节性以及假期相匹配。 | BSD | ✔️ |
PyFlux | Python | 该库拥有大量现代时间序列模型,以及可应用于这些模型的一系列灵活的推理选项(频率论和贝叶斯)。 | BSD 3-Clause | ❌ |
2、时序分析工具
名称 | 编译语言 | 简介 | 许可证 | 维护状态 |
---|---|---|---|---|
Facebook’s Kats | Python | Kats旨在为时间序列分析提供一站式服务,包括检测、预测、特征提取/嵌入、多变量分析等。 | MIT | ✔️ |
MatrixProfile | Python | 一个 Python 库,利用矩阵轮廓算法进行时间序列数据挖掘任务,每个人都可以访问。 | Apache-2.0 | ✔️ |
Salesforce’s Merlion | Python | Merlion:时间序列智能的机器学习框架,支持多种模型,包括 ARIMA | BSD 3-Clause | ✔️ |
SaxPy | Python | SAX 的一般实现,以及用于异常检测的 HOTSAX。 | GPLv2.0 | ✔️ |
seglearn | Python | Seglearn 是一个用于机器学习时间序列或序列的 python 包。它为分割、特征提取、特征处理和最终估计器提供了一个集成的管道。 | BSD 3-Clause | ❌ |
sktime | Python | 具有时间序列的机器学习统一框架。它提供了专门的时间序列算法和 scikit-learn 兼容工具来构建、调整和验证时间序列模型以解决多个学习问题。 | BSD 3-Clause | ✔️ |
sktime-dl | Python | 用于sktime的 Tensorflow/Keras 深度学习扩展包。 | BSD 3-Clause | ✔️ |
Tigramite | Python | Tigramite 是一个因果时间序列分析 python 包。它允许从高维时间序列数据集中有效地重建因果图,并对获得的因果依赖关系进行建模,以进行因果中介和预测分析。 | GPLv3.0 | ✔️ |
tsflex | Python | tsflex 是一个用于特征提取和处理的时间序列工具包,既灵活又高效。这个包支持对多变量、不规则采样的序列数据进行跨步窗口特征提取。 | MIT | ✔️ |
tslearn | Python | tslearn 是一个 Python 包,它提供了用于分析时间序列的机器学习工具。这个包建立在 scikit-learn、numpy 和 scipy 库之上。 | BSD 2-Clause | ✔️ |
3、标签添加工具
名称 | 编译语言 | 简介 | 许可证 | 维护状态 |
---|---|---|---|---|
Baidu’s Curve | Python | Curve 是一个开源工具,可帮助标记时间序列数据的异常。 | Apache-2.0 | ❌ |
Microsoft’s Taganomaly | R (dockerized web app) | 用于标记时间序列数据的简单工具。适用于单变量和多变量数据,使用 Twitter 的 AnomalyDetection 包提供参考异常预测。 | MIT | ❌ |
三、基准数据集
- Numenta’s NAB
NAB 是一种新的基准,用于评估流式实时应用程序中的异常检测算法。它由 50 多个标记的真实世界和人工时间序列数据文件以及为实时应用程序设计的新颖评分机制组成。
- Yahoo’s Webscope S5
该数据集由带有标记异常点的真实和合成时间序列组成。该数据集测试了各种异常类型的检测精度,包括异常值和变化点。
- 2020 Skoltech’s SKAB
SKAB(Skoltech Anomaly Benchmark)专为评估异常检测算法而设计。该基准目前包括 30 多个数据集以及用于算法评估的 Python 模块。每个数据集代表从安装在测试台上的传感器收集的多元时间序列。所有实例都被标记用于评估解决异常值检测和变化点检测问题的结果。
- 2018 AIOps’s KPI-Anomaly-Detection
该数据集由多个真实场景的互联网公司的KPI(关键绩效指数)时间序列数据组成,并贴有地面真实标签。KPI分为两大类:服务KPI和机器KPI。服务KPI是反映Web服务规模和质量的性能指标,如页面响应时间、页面浏览量、连接错误次数等。机器KPI是反映机器(服务器、路由器、交换机)健康状况的性能指标,如CPU利用率、内存利用率、磁盘IO、网卡吞吐量等。数据集描述。
四、引文政策
原网站链接:https://github.com/rob-med/awesome-TS-anomaly-detection#citation-policy
如果您想引用此存储库,请使用这个 BibTex:
@article{medico2020,
title={rob-med/awesome-TS-anomaly-detection},
DOI={10.5281/zenodo.3972944},
abstractNote={A collection of tools and datasets for anomaly detection on time-series data.},
publisher={Zenodo}, author={Roberto Medico}, year={2020}, month={Aug}}