Вопрос или проблема
У меня есть временные ряды данных, содержащие действия пользователей в определенные интервалы времени, например,
Дата UserId Директория операция Результат
01/01/2017 99:00 user1 dir1 created_file success
01/01/2017 99:00 user3 dir10 deleted_file permission_denied
уникальные userIds > 10K
10 различных операций
и 4 различных Результата
Мне нужно проводить обнаружение аномалий в поведении пользователей в режиме реального времени. Есть ли предложения по методу, который мне стоит использовать?
Аномалия должна сигнализировать, если некоторые операции пользователей являются выбросами.
Очень малая часть входных данных будет иметь метки. Но большинство данных будет без меток.
Проблема с вашим набором данных заключается в том, что он содержит несколько категориальных переменных (насколько я вижу). Другая проблема заключается в том, что пользователи могут выполнять последовательности разной длины и в разном порядке (что делает трудным обнаружение подозрительных шаблонов). Я бы создал гистограммы для каждой переменной и посмотрел, какие категории являются общими и какие не так уж и часто встречаются. Если вы изучите описательные статистики каждой переменной, вы должны сможете увидеть, какие переменные позволяют вам различать.
Хорошая метрика – это энтропия (дисперсия) $H = -\sum_{l=1}^{L}p_l\ln p_l$ (равна 0, если все манифестации категориальной переменной сосредоточены на одной метке; равна $\ln L$, если все манифестации равномерно распределены) и индекс Джини $\text{G}=1-\sum_{l=1}^{L}p^2_l$ (стремится к нулю, если одна метка является доминирующей, увеличивается для равномерно распределенных меток переменной и ограничивается $1-1/L$). Переменная $p_l$ — это относительная частота $l^{\text{th}}$ манифестации категориальной переменной, которую мы исследуем, и $L$ — это количество всех возможных манифестаций категориальной переменной.
Проблема с этой процедурой заключается в том, что мы не рассматриваем взаимодействия между вашими переменными. Но это первый подход, который вы могли бы попробовать. Если переменные не сильно коррелируют, это может быть достаточно.
Без размеченных данных будет очень сложно использовать методы машинного обучения для решения этой проблемы.
Ответ или решение
Определение аномалий в многомерных временных рядах является сложной задачей, особенно когда данные содержат множество категориальных переменных и значительное количество не маркированных данных. Для эффективного решения этой задачи в условиях реального времени, я предлагаю применить комбинацию подходов и алгоритмов, которые оптимально учитывают специфику ваших данных.
1. Предварительный Анализ
Перед тем как выбрать алгоритм, целесообразно провести первичный анализ данных:
- Анализ частот: Как упомянуто в описании, построение гистограмм для каждой переменной будет полезно для выявления категорий с низкой и высокой частотой. Это поможет лучше понять распределение данных.
- Выявление редких событий: Определите, какие результаты операций встречаются реже всего — это может стать индикатором аномалий.
- Оценка энтропии и индекса Джини: Эти метрики могут помочь в определении неоднородности распределения категорий, что связано с их несправедливым распределением.
2. Выбор Алгоритма
a. Модели Без Учителя
-
Clustering:
- K-Means или DBSCAN: Эти алгоритмы помогут сформировать кластеры на основе схожести действия пользователей. Изолированные точки или небольшие кластеры могут быть помечены как аномалии.
-
Autoencoders:
- Использование автоэнкодеров позволит создать модель нормального поведения. Если входная последовательность сильно отличается от восстановленной модели, это может сигнализировать о потенциальной аномалии.
-
ONE-CLASS SVM:
- Данный метод направлен на построение гиперплоскости, которая охватывает нормальные данные, а точки, находящиеся вне этой области, считаются аномальными.
b. Модели С Полуучителя
Поскольку у вас есть небольшой объем маркированных данных:
- Semi-Supervised Learning:
- Label Propagation может быть использован для распространения ограниченного объема маркированных данных на все датасеты, что упростит тренировку модели.
3. Учет Последовательностей
Поскольку действия пользователей могут иметь временную природу или зависеть от порядка, подходящие методы включают:
- Recurrent Neural Networks (RNN) или Long Short-Term Memory (LSTM) для анализа временных динамик и выявления нетипичных последовательностей действий.
4. Реализация и Мониторинг
- После выбора подходящей модели настройте систему для автоматического обновления и мониторинга аномалий.
- Регулярное обновление модели на основе новых помеченных данных улучшит качество предсказания.
Заключение
Выбор конкретного метода зависит от деталей вашего применения и инфраструктуры, доступной вам для реального времени обработки данных. Рекомендуется экспериментировать с различными подходами для достижения наилучших результатов. Разработка и тестирование в симулированной среде до перехода к реальной эксплуатации поможет выявить и скорректировать возможные проблемы.