
Lista de herramientas y conjuntos de datos para la detección de anomalías en datos de series temporales.
Lista de herramientas y datasets para la detección de anomalías en datos de series temporales.
Todas las listas están en orden alfabético. En las listas, los proyectos mantenidos tienen prioridad frente a los no mantenidos. Se considera que un repositorio está "no mantenido" si el último commit tiene más de 1 año, o si los autores lo mencionan explícitamente.
🎓 Si esta colección te resulta útil y quieres citarla, sigue la política de citación.
| Nombre | Lenguaje | Descripción | Licencia | Mantenido |
|---|---|---|---|---|
| CueObserve de Cuebook | Python3 | Detección de anomalías en almacenes de datos y bases de datos SQL. | Apache-2.0 | ✔️ |
| EGADS de Yahoo | Java | GADS es una librería que contiene una serie de técnicas de detección de anomalías aplicables a muchos casos de uso en un solo paquete, con Java como única dependencia. | GPL | ✔️ |
| flow-forecast de AIStream | Python | Librería de deep learning basada en PyTorch para la predicción, clasificación y detección de anomalías en series temporales (originalmente para la predicción de inundaciones). | GPL-3 | ✔️ |
| Hastic | Python + node.js | Herramienta de detección de anomalías para datos de series temporales con interfaz basada en Grafana. | GPL | ✔️ |
| Luminaire de Zillow | Python | Luminaire es un paquete de Python que proporciona soluciones de detección de anomalías y predicción basadas en ML para datos de series temporales. | Apache-2.0 | ✔️ |
| MIDAS | C++ | MIDAS, abreviatura de Microcluster-Based Detector of Anomalies in Edge Streams, detecta anomalías de microclúster en un flujo de aristas en tiempo y memoria constantes. | Apache-2.0 | ✔️ |
| Orion | Python | Orion es una librería de machine learning creada para la detección no supervisada de anomalías en series temporales, que proporciona una serie de pipelines de ML “verificados” (también conocidos como pipelines Orion) que identifican patrones raros y los marcan para su revisión por expertos. |
Esta sección incluye algunos programas de series temporales para tareas relacionadas con la detección de anomalías, como la predicción, el análisis genérico de series temporales y el etiquetado.
NAB es un benchmark novedoso para evaluar algoritmos de detección de anomalías en aplicaciones de streaming en tiempo real. Está compuesto por más de 50 archivos de datos de series temporales etiquetados, reales y artificiales, además de un novedoso mecanismo de puntuación diseñado para aplicaciones en tiempo real.
El dataset consta de series temporales reales y sintéticas con puntos de anomalía etiquetados. El dataset evalúa la precisión de detección de varios tipos de anomalías, incluidos valores atípicos y puntos de cambio.
SKAB (Skoltech Anomaly Benchmark) está diseñado para evaluar algoritmos de detección de anomalías. El benchmark incluye actualmente más de 30 datasets, además de módulos de Python para la evaluación de algoritmos. Cada dataset representa una serie temporal multivariante recopilada de los sensores instalados en el banco de pruebas (testbed). Todas las instancias están etiquetadas para evaluar los resultados de la resolución de problemas de detección de valores atípicos y de puntos de cambio.
El dataset consta de datos de series temporales de KPIs (indicadores clave de rendimiento) de muchos escenarios reales de empresas de Internet con etiquetas de ground truth. Haz clic abajo para ver una descripción más detallada.
El dataset consta de datos de series temporales de KPI (indicador clave de rendimiento) de muchos escenarios reales de empresas de Internet con etiquetas de ground truth. Los KPI se dividen en dos grandes categorías: KPI de servicio y KPI de máquina. Los KPI de servicio son métricas de rendimiento que reflejan el tamaño y la calidad de un servicio web, como el tiempo de respuesta de la página, las visitas a la página y el número de errores de conexión. Los KPI de máquina son indicadores de rendimiento que reflejan la salud de la máquina (servidor, router, switch), como la utilización de CPU, la utilización de memoria, el IO de disco, el rendimiento de la tarjeta de red, etc.
Descripciones de los datasets:
Para entrenar el algoritmo de detección de anomalías, los datos de entrenamiento de KPI que proporcionamos se muestran en la tabla 1, con cuatro columnas: ID del KPI, timestamp, el valor del KPI en ese momento y si el momento es anómalo (etiqueta).
Tabla 1: caso de datos de entrenamiento de KPI
Si deseas citar este repositorio, utiliza el siguiente DOI:
o utiliza este 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}}
| MIT |
| ✔️ |
| OutlierDetection.jl | Julia | Detección de valores atípicos (outliers) rápida, escalable y flexible con Julia. | MIT | ✔️ |
| PyOD | Python | PyOD es un kit de herramientas de Python completo y escalable para detectar objetos atípicos en datos multivariantes. | BSD 2-Clause | ✔️ |
| ruptures | Python | Ruptures es una librería de Python para la detección offline de puntos de cambio. Este paquete proporciona métodos para el análisis y la segmentación de señales no estacionarias. | BSD 2-Clause | ✔️ |
| Skyline de EarthGecko | Python3 | Skyline es un sistema de detección de anomalías en tiempo real, diseñado para permitir la monitorización pasiva de cientos de miles de métricas. | MIT | ✔️ |
| Adaptive Alerting de Expedia.com | Java | Detección de anomalías en streaming con selección y ajuste automáticos de modelos. | Apache-2.0 | ❌ |
| ADTK de Arundo | Python | Anomaly Detection Toolkit (ADTK) es un paquete de Python para la detección de anomalías en series temporales no supervisada / basada en reglas. | MPL 2.0 | ❌ |
| AnomalyDetection de Twitter | R | AnomalyDetection es un paquete de R de código abierto para detectar anomalías que, desde un punto de vista estadístico, es robusto ante la presencia de estacionalidad y de una tendencia subyacente. | GPL | ❌ |
| Anomalyzer de Lytics | Go | Anomalyzer implementa un conjunto de pruebas estadísticas que arrojan la probabilidad de que un conjunto determinado de datos numéricos de entrada, típicamente una serie temporal, contenga comportamiento anómalo. | Apache-2.0 | ❌ |
| banpei | Python | Detección de valores atípicos (teoría de Hotelling) y detección de puntos de cambio (transformación del espectro singular) para series temporales. | MIT | ❌ |
| banshee de Ele.me | Go | Sistema de detección de anomalías para métricas periódicas. | MIT | ❌ |
| CAD | Python | Detección contextual de anomalías para AD en tiempo real sobre datos en streaming (algoritmo ganador de la competición NAB de 2016). | AGPL | ❌ |
| Chaos Genius | Python | Motor de analítica impulsado por ML para la detección de valores atípicos/anomalías y el análisis de causas raíz. | MIT | ❌ |
| datastream.io de Mentat | Python | Un framework de código abierto para la detección de anomalías en tiempo real utilizando Python, Elasticsearch y Kibana. | Apache-2.0 | ❌ |
| DeepADoTS | Python | Implementación y evaluación de 7 técnicas basadas en deep learning para la detección de anomalías en datos de series temporales. | MIT | ❌ |
| Donut | Python | Donut es un algoritmo no supervisado de detección de anomalías para KPIs estacionales, basado en Autoencoders Variacionales. | - | ❌ |
| LoudML | Python | Loud ML es un motor de inferencia de series temporales de código abierto construido sobre TensorFlow. Es útil para predecir datos, detectar valores atípicos y automatizar tus procesos utilizando conocimiento futuro. | MIT | ❌ |
| luminol de Linkedin | Python | Luminol es una librería ligera de Python para el análisis de datos de series temporales. Las dos funcionalidades principales que soporta son la detección de anomalías y la correlación. Puede utilizarse para investigar las posibles causas de una anomalía. | Apache-2.0 | ❌ |
| Nupic de Numenta | C++ | Numenta Platform for Intelligent Computing es una implementación de la Memoria Temporal Jerárquica (HTM). | AGPL | ❌ |
| oddstream | R | oddstream (Outlier Detection in Data Streams) ofrece soporte en tiempo real para la detección temprana de series anómalas dentro de una gran colección de datos de series temporales en streaming. | GPL-3 | ❌ |
| PyOdds | Python | PyODDS es un sistema Python de extremo a extremo para la detección de valores atípicos con soporte de bases de datos. PyODDS proporciona algoritmos de detección de valores atípicos que admiten tanto datos estáticos como de series temporales. | MIT | ❌ |
| PySAD | Python | PySAD es un framework de detección de anomalías en streaming con varios modelos en línea y un conjunto completo de herramientas para la experimentación. | BSD 3-Clause | ❌ |
| rrcf | Python | Implementación del algoritmo Robust Random Cut Forest para la detección de anomalías en flujos de datos. | MIT | ❌ |
| Surus de Netflix | Java | Robust Anomaly Detection (RAD): una implementación de la PCA Robusta. | Apache-2.0 | ❌ |
| Telemanom de la NASA | Python | Un framework para utilizar LSTMs y detectar anomalías en datos de series temporales multivariantes. Incluye datos de anomalías de naves espaciales y experimentos de las misiones Mars Science Laboratory y SMAP. | personalizada | ❌ |
| Nombre | Lenguaje | Descripción | Licencia | Mantenido |
|---|
| darts | Python | darts es una librería de Python para la manipulación y predicción sencilla de series temporales. Contiene una variedad de modelos, desde clásicos como ARIMA hasta redes neuronales. | Apache-2.0 | ✔️ |
| ETNA | Python | etna es una librería de Python para la predicción y el análisis de series temporales, teniendo siempre presente la estructura temporal de los datos. Incluye una variedad de modelos predictivos con interfaz unificada, junto con métodos de EDA y validación. | Apache-2.0 | ✔️ |
| GluonTS de Amazon | Python | GluonTS es un kit de herramientas de Python para el modelado probabilístico de series temporales, construido en torno a MXNet. GluonTS proporciona utilidades para cargar e iterar sobre datasets de series temporales, modelos de última generación listos para entrenar y componentes básicos para definir tus propios modelos. | Apache-2.0 | ✔️ |
| pmdarima | Python | Port del auto.arima de R con una interfaz compatible con scikit-learn. | MIT | ✔️ |
| Prophet de Facebook | Python/R | Prophet es un procedimiento para la predicción de datos de series temporales. Se basa en un modelo aditivo en el que las tendencias no lineales se ajustan con estacionalidad anual y semanal, además de los días festivos. | BSD | ✔️ |
| PyFlux | Python | La librería tiene una buena variedad de modelos modernos de series temporales, así como una amplia gama flexible de opciones de inferencia (frecuentista y bayesiana) que pueden aplicarse a estos modelos. | BSD 3-Clause | ❌ |
| Nombre | Lenguaje | Descripción | Licencia | Mantenido |
|---|
| Kats de Facebook | Python | Kats pretende ser la solución integral para el análisis de series temporales, incluidos la detección, la predicción, la extracción/incrustación de características y el análisis multivariante, etc. | MIT | ✔️ |
| MatrixProfile | Python | Una librería de Python 3 que hace accesibles para todos las tareas de minería de datos en series temporales, utilizando algoritmos de matrix profile. | Apache-2.0 | ✔️ |
| Merlion de Salesforce | Python | Merlion: un framework de machine learning para la inteligencia en series temporales, con soporte para múltiples modelos, incluido ARIMA | BSD 3-Clause | ✔️ |
| SaxPy | Python | Implementación general de SAX, así como HOTSAX para la detección de anomalías. | GPLv2.0 | ✔️ |
| sktime | Python | Un framework unificado para machine learning con series temporales. Proporciona algoritmos especializados de series temporales y herramientas compatibles con scikit-learn para construir, ajustar y validar modelos de series temporales para múltiples problemas de aprendizaje. | BSD 3-Clause | ✔️ |
| sktime-dl | Python | Un paquete de extensión para deep learning con Tensorflow/Keras para sktime. | BSD 3-Clause | ✔️ |
| Squey | C++ | Software de visualización que permite una exploración en profundidad de series temporales mientras muestra todos los valores atípicos. | MIT | ✔️ |
| Tigramite | Python | Tigramite es un paquete de Python para el análisis causal de series temporales. Permite reconstruir eficientemente grafos causales a partir de datasets de series temporales de alta dimensionalidad y modelar las dependencias causales obtenidas para análisis de mediación causal y predicción. | GPLv3.0 | ✔️ |
| tsflex | Python | tsflex es un kit de herramientas para series temporales centrado en la extracción y el procesamiento de características, a la vez flexible y eficiente. Este paquete admite la extracción de características con ventanas deslizantes (strided-window) sobre datos de secuencias multivariantes muestreados de forma irregular. | MIT | ✔️ |
| tslearn | Python | tslearn es un paquete de Python que proporciona herramientas de machine learning para el análisis de series temporales. Este paquete se basa en las librerías scikit-learn, numpy y scipy. | BSD 2-Clause | ✔️ |
| seglearn | Python | Seglearn es un paquete de Python para machine learning con series temporales o secuencias. Proporciona un pipeline integrado para la segmentación, la extracción de características, el procesamiento de características y el estimador final. | BSD 3-Clause | ❌ |
| Nombre | Lenguaje | Descripción | Licencia | Mantenido |
|---|
| Curve de Baidu | Python | Curve es una herramienta de código abierto para ayudar a etiquetar anomalías en datos de series temporales. | Apache-2.0 | ❌ |
| Taganomaly de Microsoft | R (aplicación web dockerizada) | Herramienta sencilla para etiquetar datos de series temporales. Funciona con datos univariantes y multivariantes, y proporciona una predicción de anomalías de referencia utilizando el paquete AnomalyDetection de Twitter. | MIT | ❌ |
| KPI ID | Timestamp | Value | Label |
|---|
| 0 | 1503831000 | 10.8 | 0 |
| 0 | 1503831060 | 12.3 | 1 |
| ... | ... | ... | ... |
Para evaluar el algoritmo de detección de anomalías, los datos de prueba de KPI que proporcionamos se muestran en la tabla 2, con dos columnas: ID del KPI, timestamp y el valor correspondiente al KPI en ese momento.
Tabla 2: caso de datos de prueba de KPI
| KPI ID | Timestamp | Value |
|---|---|---|
| 0 | 1503831000 | 10.8 |
| 0 | 1503831060 | 12.3 |
| ... | ... | ... |