
Список инструментов и наборов данных для обнаружения аномалий в данных временных рядов.
Список инструментов и наборов данных для обнаружения аномалий в данных временных рядов.
Все списки расположены в алфавитном порядке. В списках поддерживаемые проекты имеют приоритет над неподдерживаемыми. Репозиторий считается «неподдерживаемым», если последний коммит был сделан более 1 года назад или авторы прямо упоминают об этом.
🎓 Если вы нашли эту подборку полезной и хотите сослаться на неё, пожалуйста, следуйте правилам цитирования.
| Название | Язык | Описание | Лицензия | Поддерживается |
|---|---|---|---|---|
| CueObserve от Cuebook | Python3 | Обнаружение аномалий в SQL-хранилищах данных и базах данных. | Apache-2.0 | ✔️ |
| EGADS от Yahoo | Java | EGADS — это библиотека, содержащая ряд методов обнаружения аномалий, применимых ко многим сценариям использования, в одном пакете с единственной зависимостью — Java. | GPL | ✔️ |
| flow-forecast от AIStream | Python | Библиотека глубокого обучения на PyTorch для прогнозирования временных рядов, классификации и обнаружения аномалий (изначально создавалась для прогнозирования наводнений). | GPL-3 | ✔️ |
| Hastic | Python + node.js | Инструмент обнаружения аномалий во временных рядах с UI на основе Grafana. | GPL | ✔️ |
| Luminaire от Zillow | Python | Luminaire — это Python-пакет, предоставляющий решения для обнаружения аномалий и прогнозирования временных рядов на основе машинного обучения. | Apache-2.0 | ✔️ |
| MIDAS | C++ | MIDAS (сокращение от Microcluster-Based Detector of Anomalies in Edge Streams) обнаруживает микрокластерные аномалии в потоке рёбер за постоянное время и с постоянным объёмом памяти. | Apache-2.0 | ✔️ |
| Orion | Python | Orion — это библиотека машинного обучения для неконтролируемого обнаружения аномалий во временных рядах, предоставляющая ряд «проверенных» ML-конвейеров (так называемых Orion pipelines), которые выявляют редкие паттерны и помечают их для экспертной проверки. | MIT |
В этом разделе представлено некоторое программное обеспечение для временных рядов, связанное с задачами обнаружения аномалий, такими как прогнозирование, общий анализ временных рядов и разметка.
NAB — это новый эталон для оценки алгоритмов обнаружения аномалий в потоковых приложениях реального времени. Он состоит из более чем 50 размеченных файлов с реальными и искусственными временными рядами, а также нового механизма оценки, разработанного для приложений реального времени.
Набор данных состоит из реальных и синтетических временных рядов с размеченными точками аномалий. Набор данных проверяет точность обнаружения различных типов аномалий, включая выбросы и точки изменения.
SKAB (Skoltech Anomaly Benchmark) предназначен для оценки алгоритмов обнаружения аномалий. Эталон в настоящее время включает более 30 наборов данных, а также Python-модули для оценки алгоритмов. Каждый набор данных представляет собой многомерный временной ряд, собранный с датчиков, установленных на испытательном стенде. Все экземпляры размечены для оценки результатов решения задач обнаружения выбросов и обнаружения точек изменения.
Набор данных состоит из данных временных рядов KPI (ключевых показателей эффективности) из множества реальных сценариев интернет-компаний с метками истины (ground truth). Нажмите ниже, чтобы увидеть более подробное описание.
Набор данных состоит из данных временных рядов KPI (ключевых показателей эффективности) из множества реальных сценариев интернет-компаний с метками истины (ground truth). KPI делятся на две большие категории: сервисные KPI и машинные KPI. Сервисные KPI — это метрики производительности, отражающие размер и качество веб-сервиса, такие как время отклика страницы, количество просмотров страниц и число ошибок соединения. Машинные KPI — это показатели производительности, отражающие состояние машины (сервера, маршрутизатора, коммутатора), такие как загрузка ЦП, использование памяти, дисковый ввод-вывод, пропускная способность сетевой карты и т.д.
Описания наборов данных:
Для обучения алгоритма обнаружения аномалий обучающие данные KPI, предоставленные нами, показаны в таблице 1 и включают четыре столбца: KPI ID, временная метка, значение KPI в этот момент времени и является ли момент времени аномальным (метка).
Таблица 1. Пример обучающих данных KPI
Если вы хотите сослаться на этот репозиторий, пожалуйста, используйте следующий DOI:
или используйте этот 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}}
| ✔️ |
| OutlierDetection.jl | Julia | Быстрое, масштабируемое и гибкое обнаружение выбросов на Julia. | MIT | ✔️ |
| PyOD | Python | PyOD — это комплексный и масштабируемый Python-инструментарий для обнаружения выбросов в многомерных данных. | BSD 2-Clause | ✔️ |
| ruptures | Python | Ruptures — это Python-библиотека для offline-обнаружения точек изменения. Пакет предоставляет методы для анализа и сегментации нестационарных сигналов. | BSD 2-Clause | ✔️ |
| EarthGecko Skyline | Python3 | Skyline — это система обнаружения аномалий в реальном времени, созданная для пассивного мониторинга сотен тысяч метрик. | MIT | ✔️ |
| Adaptive Alerting от Expedia.com | Java | Потоковое обнаружение аномалий с автоматическим выбором и подгонкой моделей. | Apache-2.0 | ❌ |
| ADTK от Arundo | Python | Anomaly Detection Toolkit (ADTK) — это Python-пакет для неконтролируемого / основанного на правилах обнаружения аномалий во временных рядах. | MPL 2.0 | ❌ |
| AnomalyDetection от Twitter | R | AnomalyDetection — это R-пакет с открытым исходным кодом для обнаружения аномалий, который является статистически устойчивым при наличии сезонности и основного тренда. | GPL | ❌ |
| Anomalyzer от Lytics | Go | Anomalyzer реализует набор статистических тестов, которые дают вероятность того, что заданный набор числовых данных, как правило временной ряд, содержит аномальное поведение. | Apache-2.0 | ❌ |
| banpei | Python | Обнаружение выбросов (теория Хотеллинга) и обнаружение точек изменения (преобразование сингулярного спектра) для временных рядов. | MIT | ❌ |
| banshee от Ele.me | Go | Система обнаружения аномалий для периодических метрик. | MIT | ❌ |
| CAD | Python | Контекстное обнаружение аномалий в реальном времени для потоковых данных (алгоритм-победитель конкурса NAB 2016 года). | AGPL | ❌ |
| Chaos Genius | Python | Аналитический движок на основе машинного обучения для обнаружения выбросов/аномалий и анализа первопричин. | MIT | ❌ |
| datastream.io от Mentat | Python | Фреймворк с открытым исходным кодом для обнаружения аномалий в реальном времени с использованием Python, Elasticsearch и Kibana. | Apache-2.0 | ❌ |
| DeepADoTS | Python | Реализация и оценка 7 методов на основе глубокого обучения для обнаружения аномалий в данных временных рядов. | MIT | ❌ |
| Donut | Python | Donut — это алгоритм неконтролируемого обнаружения аномалий для сезонных KPI, основанный на вариационных автокодировщиках. | - | ❌ |
| LoudML | Python | Loud ML — это движок логического вывода с открытым исходным кодом для временных рядов, построенный на основе TensorFlow. Он полезен для прогнозирования данных, обнаружения выбросов и автоматизации процессов с использованием знаний о будущем. | MIT | ❌ |
| luminol от Linkedin | Python | Luminol — это лёгкая Python-библиотека для анализа данных временных рядов. Две основные функции, которые она поддерживает, — это обнаружение аномалий и корреляция. Её можно использовать для изучения возможных причин аномалий. | Apache-2.0 | ❌ |
| Nupic от Numenta | C++ | Numenta Platform for Intelligent Computing — это реализация иерархической темпоральной памяти (HTM). | AGPL | ❌ |
| oddstream | R | oddstream (Outlier Detection in Data Streams) обеспечивает поддержку в реальном времени для раннего обнаружения аномальных рядов в большой коллекции потоковых данных временных рядов. | GPL-3 | ❌ |
| PyOdds | Python | PyODDS — это сквозная Python-система для обнаружения выбросов с поддержкой баз данных. PyODDS предоставляет алгоритмы обнаружения выбросов, поддерживающие как статические данные, так и временные ряды. | MIT | ❌ |
| PySAD | Python | PySAD — это фреймворк потокового обнаружения аномалий с различными онлайн-моделями и полным набором инструментов для экспериментов. | BSD 3-Clause | ❌ |
| rrcf | Python | Реализация алгоритма Robust Random Cut Forest для обнаружения аномалий в потоках. | MIT | ❌ |
| Surus от Netflix | Java | Robust Anomaly Detection (RAD) — реализация метода Robust PCA. | Apache-2.0 | ❌ |
| Telemanom от NASA | Python | Фреймворк для использования LSTM с целью обнаружения аномалий в многомерных данных временных рядов. Включает данные об аномалиях космических аппаратов и эксперименты миссий Mars Science Laboratory и SMAP. | специальная | ❌ |
| Название | Язык | Описание | Лицензия | Поддерживается |
|---|
| darts | Python | darts — это Python-библиотека для удобной работы с временными рядами и их прогнозирования. Она содержит множество моделей — от классических, таких как ARIMA, до нейронных сетей. | Apache-2.0 | ✔️ |
| ETNA | Python | etna — это Python-библиотека для прогнозирования и анализа временных рядов, которая всегда учитывает временную структуру данных. Включает множество прогностических моделей с единым интерфейсом, а также методы EDA и валидации. | Apache-2.0 | ✔️ |
| GluonTS от Amazon | Python | GluonTS — это Python-инструментарий для вероятностного моделирования временных рядов, построенный на основе MXNet. GluonTS предоставляет утилиты для загрузки наборов данных временных рядов и итерации по ним, современные модели, готовые к обучению, и строительные блоки для создания собственных моделей. | Apache-2.0 | ✔️ |
| pmdarima | Python | Портирование R-функции auto.arima с интерфейсом, дружественным к scikit-learn. | MIT | ✔️ |
| Prophet от Facebook | Python/R | Prophet — это процедура прогнозирования данных временных рядов. Она основана на аддитивной модели, в которой нелинейные тренды подгоняются с учётом годовой и недельной сезонности, а также праздников. | BSD | ✔️ |
| PyFlux | Python | Библиотека содержит хороший набор современных моделей временных рядов, а также гибкий набор опций логического вывода (частотных и байесовских), которые могут применяться к этим моделям. | BSD 3-Clause | ❌ |
| Название | Язык | Описание | Лицензия | Поддерживается |
|---|
| Kats от Facebook | Python | Kats стремится стать универсальным решением для анализа временных рядов, включая обнаружение аномалий, прогнозирование, извлечение/встраивание признаков, многомерный анализ и т.д. | MIT | ✔️ |
| MatrixProfile | Python | Библиотека на Python 3, делающая задачи интеллектуального анализа временных рядов с использованием алгоритмов matrix profile доступными каждому. | Apache-2.0 | ✔️ |
| Merlion от Salesforce | Python | Merlion: фреймворк машинного обучения для интеллектуальной работы с временными рядами, поддерживает множество моделей, включая ARIMA | BSD 3-Clause | ✔️ |
| SaxPy | Python | Общая реализация SAX, а также HOTSAX для обнаружения аномалий. | GPLv2.0 | ✔️ |
| sktime | Python | Единый фреймворк для машинного обучения на временных рядах. Он предоставляет специализированные алгоритмы для временных рядов и совместимые со scikit-learn инструменты для создания, настройки и валидации моделей временных рядов для множества задач обучения. | BSD 3-Clause | ✔️ |
| sktime-dl | Python | Пакет-расширение для глубокого обучения с использованием Tensorflow/Keras для sktime. | BSD 3-Clause | ✔️ |
| Squey | C++ | Программное обеспечение для визуализации, позволяющее проводить углублённое исследование временных рядов с отображением всех выбросов. | MIT | ✔️ |
| Tigramite | Python | Tigramite — это Python-пакет для каузального анализа временных рядов. Он позволяет эффективно восстанавливать причинно-следственные графы из многомерных наборов данных временных рядов и моделировать полученные каузальные зависимости для анализа причинной медиации и прогнозирования. | GPLv3.0 | ✔️ |
| tsflex | Python | tsflex — это инструментарий для временных рядов, предназначенный для извлечения и обработки признаков; он одновременно гибкий и эффективный. Пакет поддерживает извлечение признаков со скользящим окном на многомерных данных последовательностей с неравномерной дискретизацией. | MIT | ✔️ |
| tslearn | Python | tslearn — это Python-пакет, предоставляющий инструменты машинного обучения для анализа временных рядов. Пакет построен на основе библиотек scikit-learn, numpy и scipy. | BSD 2-Clause | ✔️ |
| seglearn | Python | Seglearn — это Python-пакет для машинного обучения на временных рядах или последовательностях. Он предоставляет интегрированный конвейер для сегментации, извлечения признаков, обработки признаков и финального оценивателя. | BSD 3-Clause | ❌ |
| Название | Язык | Описание | Лицензия | Поддерживается |
|---|
| Curve от Baidu | Python | Curve — это инструмент с открытым исходным кодом для разметки аномалий во временных рядах. | Apache-2.0 | ❌ |
| Taganomaly от Microsoft | R (dockerized web app) | Простой инструмент для разметки данных временных рядов. Работает с одномерными и многомерными данными, предоставляет эталонное прогнозирование аномалий с помощью пакета AnomalyDetection от Twitter. | MIT | ❌ |
| KPI ID | Timestamp | Value | Label |
|---|
| 0 | 1503831000 | 10.8 | 0 |
| 0 | 1503831060 | 12.3 | 1 |
| ... | ... | ... | ... |
Для оценки алгоритма обнаружения аномалий тестовые данные KPI, предоставленные нами, показаны в таблице 2 и включают два столбца: KPI ID, временная метка и значение, соответствующее KPI в этот момент времени.
Таблица 2. Пример тестовых данных KPI
| KPI ID | Timestamp | Value |
|---|---|---|
| 0 | 1503831000 | 10.8 |
| 0 | 1503831060 | 12.3 |
| ... | ... | ... |