Модель детекції аномалій на даних без розмітки

Аномалії без розмітки: як виявити викиди серед 10 млн записів

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1439
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Аномалії без розмітки: як виявити викиди серед 10 млн записів

Зазначимо: коли supervised-моделі з accuracy 99.9% не знаходять жодної аномалії — проблема в дисбалансі класів. Ми будуємо unsupervised-пайплайни на Isolation Forest, Autoencoder та One-Class SVM, які виявляють викиди без ручної розмітки. Такі моделі в 10 разів швидше навчаються, ніж semi-supervised, і не вимагають pre-labeled даних. Однак вибір правильного методу критичний: непідходящий алгоритм може давати до 80% хибних спрацьовувань. Саме тому ми починаємо кожен проєкт з глибокого аналізу структури даних та бізнес-контексту.

Unsupervised підходи дають детекцію без витрат на розмітку: достатньо одного інженера на налаштування. У фінтехі ми використовували Isolation Forest для первинного скринінгу транзакцій — latency p99 < 10 мс, а Autoencoder для фінальної верифікації. У підсумку detection rate зріс на 40% порівняно з rule-based системою, а false positive rate впав у 2 рази. Аномалії становлять менше 0.1% даних, тому accuracy не показова — ми орієнтуємося на Precision/Recall/F1 та AUCPR.

Як вибрати метод детекції аномалій?

Доступні дані Рекомендований підхід Приклад часу навчання (100k записів)
Розмічені аномалії (< 1%) Imbalanced supervised (LightGBM з scale_pos_weight) 2-5 хвилин
Тільки нормальні дані One-Class SVM / Autoencoder / Deep SVDD 10-30 хвилин
Немає розмітки взагалі Unsupervised: Isolation Forest, LOF < 1 хвилини
Часові ряди з сезонністю STL + residual detection 5-10 хвилин
Послідовності подій LSTM Autoencoder 30-60 хвилин

Коли використовувати Autoencoder замість Isolation Forest?

Autoencoder краще підходить для складних, багатовимірних даних, де аномалії проявляються в нелінійних залежностях. Наприклад, у кібербезпеці при детекції атак на основі логів подій — Isolation Forest показує низьку точність, а Autoencoder навчається за 1-2 години і дає AUCPR > 0.9. Для простих табличних даних з чіткими викидами Isolation Forest працює швидше та інтерпретованіше. Ми часто комбінуємо їх: первинний скринінг Isolation Forestом (low latency), потім верифікація Autoencoderом.

Як ми будуємо production-ready pipeline

На практиці ми комбінуємо кілька методів для підвищення стійкості. Наприклад, у проєкті для фінтех-клієнта з 50 млн транзакцій на день: Isolation Forest використовувався для первинної фільтрації (latency p99 < 10 мс), Autoencoder — для глибокої перевірки підозрілих записів. Результат: detection rate зріс на 40% порівняно з правилами, false positive rate знизився в 2 рази.

Реалізація ключових методів

Приклади коду для Isolation Forest та Autoencoder:

import numpy as np from sklearn.ensemble import IsolationForest from sklearn.metrics import average_precision_score def train_isolation_forest(X, contamination=0.01): """Базовий Isolation Forest з автоматичним підбором порогу""" model = IsolationForest(contamination=contamination, random_state=42) model.fit(X) scores = model.score_samples(X) # чим нижче, тим аномальніше return model, scores # Autoencoder на PyTorch import torch.nn as nn class AnomalyAutoencoder(nn.Module): def __init__(self, input_dim, latent_dim=32): super().__init__() self.encoder = nn.Sequential( nn.Linear(input_dim, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU(), nn.Linear(64, latent_dim) ) self.decoder = nn.Sequential( nn.Linear(latent_dim, 64), nn.ReLU(), nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, input_dim) ) def anomaly_score(self, x, reduction='mean'): with torch.no_grad(): z = self.encoder(x) x_rec = self.decoder(z) re = torch.mean((x - x_rec)**2, dim=1) return re 

Для production ми пакуємо модель у ONNX Runtime та розгортаємо на Triton Inference Server — це дає мінімальну затримку та високу пропускну здатність.

Оцінка та continuous learning

Правильні метрики для незбалансованого класу:

def evaluate_aupr(y_true, y_scores): return average_precision_score(y_true, y_scores) 

Порівняння метрик для датасету з 0.1% аномалій:

Метрика Типове значення Чому важлива
Accuracy 99.9% Вводить в оману — модель не знаходить аномалій
AUCPR 0.85-0.95 Показує якість ранжування аномалій
Fβ-score 0.75-0.90 Враховує дисбаланс, налаштовується під бізнес-пріоритети

Ми використовуємо MLflow для відстеження експериментів: параметри (contamination, latent_dim), метрики (AUCPR, FPR), артефакти (моделі, PR-криві). Feedback loop донавчає модель кожні 1000 міток від інженерів.

Приклад налаштування MLflow-експерименту
mlflow experiments create --experiment-name anomaly-detection mlflow run . -P model=isolation_forest -P contamination=0.01 

Процес роботи над проєктом

  1. Аналітика — вивчення даних, виявлення сезонності та типів аномалій.
  2. Проєктування — вибір стеку та архітектури pipeline.
  3. Реалізація — навчання baseline та підбір гіперпараметрів.
  4. Тестування — валідація на історичних даних з A/B-тестом.
  5. Деплой — контейнеризація, моніторинг, CI/CD.

Що входить в роботу

  • Навчена модель з документацією по метриках та порогах.
  • REST API для інференсу (FastAPI або Triton).
  • MLflow дашборд з історією експериментів.
  • Feedback loop для донавчання за мітками операторів.
  • Навчання вашої команди (2-3 години воркшопу).
  • Технічна підтримка на 30 днів після деплою.

Терміни орієнтовно

Базова модель (Isolation Forest + оцінка) — від 2 до 3 тижнів. Повний pipeline з Autoencoder, feedback loop та production deployment — від 6 до 8 тижнів. Вартість розраховується індивідуально, виходячи з обсягу даних та необхідної точності. Окупність рішення настає протягом 2-3 місяців за рахунок скорочення часу на аналіз інцидентів.

Гарантуємо якість: всі моделі проходять валідацію на відкладеній вибірці. У нас більше 5 років досвіду в MLOps та 20+ реалізованих проєктів з детекції аномалій у фінтехі, телекомі та промисловості. Для оцінки вашого кейсу зв'яжіться з нами — оцінимо задачу за 2 дні та запропонуємо рішення під ключ. Отримайте консультацію з детекції аномалій на ваших даних.