MIDAS - Детектор аномалий для динамических графов в реальном времени

10 Jan, 2024

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

776
🔱 98
👥 29

Визуализация MIDAS

Когда данные — это поток: почему традиционные методы не работают

Представьте, что вы отвечаете за безопасность крупной 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 использует комбинацию методов:

  1. Count-Min Sketch — вероятностная структура данных для компактного хранения частот
  2. Экспоненциальное затухание — более старые данные постепенно теряют вес
  3. Статистические критерии для выявления аномальных отклонений

Вот как выглядит базовый пример использования:

#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 уже используется в нескольких областях:

  1. Кибербезопасность: Обнаружение DDoS-атак и сканирования портов в реальном времени
  2. Социальные сети: Выявление накрутки рейтингов и бот-сетей
  3. Финтех: Мониторинг подозрительных транзакционных схем
  4. 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 на:

Вывод: кому подойдет MIDAS?

Этот инструмент стоит попробовать, если:

  • Вы работаете с потоковыми графовыми данными
  • Нужно детектировать аномалии в реальном времени
  • Важна эффективность по памяти и времени
  • Имеете дело с кибербезопасностью, фрод-мониторингом или анализом соцсетей

MIDAS сочетает академическую строгость (публикации в AAAI и TKDD) с практической применимостью. Проект активно развивается и уже заслужил признание в сообществе — более 700 звезд на GitHub и упоминания в TechNews ACM, Microsoft и KDnuggets.

Для глубокого погружения рекомендую:

  1. Оригинальную статью на arXiv
  2. Видео-презентацию алгоритма
  3. Python-реализацию для быстрого прототипирования

Как часто у вас возникает потребность в анализе динамических графов? Пробовали ли подобные инструменты? Делитесь опытом в комментариях!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.