MIDAS - Детектор аномалий для динамических графов в реальном времени
Репозиторий давно не обновлялся
Последнее обновление было 2 года назад.

Когда данные — это поток: почему традиционные методы не работают
Представьте, что вы отвечаете за безопасность крупной IT-инфраструктуры. Каждую секунду через ваши серверы проходят тысячи соединений — как среди них обнаружить атаку? Или вы аналитик в соцсети — как выявить накрутку рейтингов среди миллионов взаимодействий пользователей?
Традиционные методы анализа графов часто не справляются с такими задачами: они требуют полного обхода графа и не рассчитаны на потоковую обработку данных. Именно эту проблему решает MIDAS — алгоритм, способный обнаруживать аномалии в динамических графах с постоянным временем обработки и минимальным использованием памяти.
Что такое MIDAS?
MIDAS (Microcluster-Based Detector of Anomalies in Edge Streams) — это C++ библиотека для обнаружения аномалий в потоковых графовых данных. Проект был представлен на AAAI 2020 и продолжает развиваться, предлагая:
- Реальное время обработки — данные анализируются по мере поступления
- Обнаружение микрокластеров аномалий (например, скоординированные атаки)
- Гарантированно низкую вероятность ложных срабатываний
- Эффективность — до 929 раз быстрее аналогов
Ключевые возможности
1. Обнаружение аномалий в реальном времени
MIDAS обрабатывает каждое новое ребро графа за константное время O(1), что критически важно для систем мониторинга. В тестах на данных DARPA (4.5 млн записей о сетевых соединениях) алгоритм показал скорость обработки до 1.5 млн ребер в секунду.
2. Выявление скоординированных атак
Алгоритм специально заточен под обнаружение микрокластеров — групп подозрительно похожих событий, возникающих в короткий промежуток времени. Типичные примеры:
- DDoS-атаки (множество соединений с одного IP)
- Накрутка рейтингов (группы пользователей, массово оценивающих один объект)
- Финансовые махинации (цепочки подозрительных транзакций)
3. Гибкость и настраиваемость
Проект предлагает три варианта реализации ядра:
NormalCore— базовая версияRelationalCore— учитывает отношения между узламиFilteringCore— с дополнительной фильтрацией шума
Параметры чувствительности легко настраиваются под конкретную задачу.
Как это работает технически?
MIDAS использует комбинацию методов:
- Count-Min Sketch — вероятностная структура данных для компактного хранения частот
- Экспоненциальное затухание — более старые данные постепенно теряют вес
- Статистические критерии для выявления аномальных отклонений
Вот как выглядит базовый пример использования:
#include "MIDAS/src/NormalCore.hpp"
int main() {
MIDAS::NormalCore core(100, 5, 0.5); // Параметры: CMS размер, decay, порог
// Обработка ребра (источник, назначение, timestamp)
float score = core(123, 456, 1600000000);
if(score > THRESHOLD) {
// Обнаружена аномалия!
}
}
Практическое применение
MIDAS уже используется в нескольких областях:
- Кибербезопасность: Обнаружение DDoS-атак и сканирования портов в реальном времени
- Социальные сети: Выявление накрутки рейтингов и бот-сетей
- Финтех: Мониторинг подозрительных транзакционных схем
- IoT: Анализ потоков данных с датчиков
Проект включает готовые примеры для работы с популярными наборами данных:
- DARPA (сетевые атаки)
- Twitter World Cup 2014 (активность в соцсетях)
- Twitter Security (подозрительные активности)
Как начать использовать?
Установка проста и поддерживает все основные платформы:
git clone https://github.com/Stream-AD/MIDAS.git
cd MIDAS
mkdir build && cd build
cmake ..
make
Для тестирования можно запустить демо-пример, который обрабатывает данные DARPA:
./Demo
Результаты (аномалийные оценки) сохраняются в Score.txt — чем выше значение, тем аномальнее событие.
Альтернативные реализации
Если C++ — не ваш язык, сообщество уже портировало MIDAS на:
- Python (MIDAS.Python, pyMIDAS)
- Go (midas)
- Ruby (midas)
- Rust (midas_rs)
Вывод: кому подойдет MIDAS?
Этот инструмент стоит попробовать, если:
- Вы работаете с потоковыми графовыми данными
- Нужно детектировать аномалии в реальном времени
- Важна эффективность по памяти и времени
- Имеете дело с кибербезопасностью, фрод-мониторингом или анализом соцсетей
MIDAS сочетает академическую строгость (публикации в AAAI и TKDD) с практической применимостью. Проект активно развивается и уже заслужил признание в сообществе — более 700 звезд на GitHub и упоминания в TechNews ACM, Microsoft и KDnuggets.
Для глубокого погружения рекомендую:
- Оригинальную статью на arXiv
- Видео-презентацию алгоритма
- Python-реализацию для быстрого прототипирования
Как часто у вас возникает потребность в анализе динамических графов? Пробовали ли подобные инструменты? Делитесь опытом в комментариях!
