Powrót do strony głównej

Wykrywanie anomalii szeregów czasowych ML

Artykuł analizuje trzy podejścia ML do wykrywania anomalii w logach przechowywania plików: Isolation Forest do izolowania punktów odstających, CatBoost do prognozowania i autoenkoder do rekonstrukcji. Podano kod, cechy, metryki. Nadaje się do integracji w SIEM.

ML przeciw anomaliom: trzy algorytmy dla logów
Advertisement 728x90

Wykrywanie anomalii w dziennikach magazynu plików: Isolation Forest, CatBoost i autoenkoder

Uczenie maszynowe skutecznie identyfikuje zagrożenia w dziennikach magazynu plików, gdzie codziennie rejestrowane są miliony operacji odczytu, zapisu i usuwania. Trzy algorytmy — Isolation Forest, CatBoost i autoenkoder — analizują wielowymiarowe szeregi czasowe aktywności użytkowników, odróżniając normalne zachowanie od podejrzanego bez potrzeby oznaczania danych.

Dane są agregowane w przedziałach czasowych: dla każdego slotu obliczana jest intensywność operacji według typów. Powstaje wektor cech, w którym odchylenia sygnalizują wewnętrzne kopiowanie lub masowe szyfrowanie.

Isolation Forest: izolacja anomalii losowością

Isolation Forest buduje zespół drzew z losowymi podziałami cech. Anomalie są izolowane szybciej, ponieważ ich cechy znacznie różnią się od większości. Algorytm jest nienadzorowany: nie wymaga oznaczania, skupia się na ścieżce od korzenia do liścia.

Google AdInline article slot
from sklearn.ensemble import IsolationForest

if_model = IsolationForest(n_estimators=100, contamination=0.05, bootstrap=False, random_state=42)

Dla szeregów czasowych dodawane są cechy opóźnione:

data['prev_10min'] = (data.rolling(window='10min', min_periods=1)['events'].sum()).astype(int)
data['prev_5min'] = (data.rolling(window='5min', min_periods=1)['events'].sum()).astype(int)
data['prev_3min'] = (data.rolling(window='3min', min_periods=1)['events'].sum()).astype(int)

Kluczowe hiperparametry:

  • n_estimators: równowaga między dokładnością a szybkością
  • contamination: oczekiwany udział anomalii (0.05)
  • max_samples: rozmiar podpróby (256 domyślnie)
  • bootstrap: False dla różnorodności

Ocena anomaly_score przez decision_function jest znormalizowana [-0.5, 0.5]. Wartości < -0.25 — pewne anomalie:

Google AdInline article slot
data['anomaly'] = np.where(if_model.decision_function(data[['events', 'prev_3min', 'prev_5min', 'prev_10min']]) > -0.25, 0, 1)

Analiza SHAP pokazuje dominację opóźnień na 10 minut. Zalety:

  • Złożoność O(n log n) dla czasu rzeczywistego
  • Działa na CPU bez przechowywania danych
  • Proste wdrożenie

CatBoost do prognozowania normalnej aktywności

CatBoostRegressor uczy się na danych historycznych, aby przewidywać oczekiwaną intensywność. Anomalie — gdzie |rzeczywista - przewidywana| przekracza próg.

from catboost import CatBoostRegressor

model = CatBoostRegressor()
expected_value = model.predict()
anomaly_score = abs(actual_value - expected_value)

Schemat podziału danych:

Google AdInline article slot
  • Treningowe (3 tygodnie): normalna aktywność
  • Walidacyjne (1 tydzień): dostrajanie
  • Testowe (2 dni): anomalie

Cechy rozszerzają kontekst:

  • Czasowe: dzień tygodnia, godzina
  • Opóźnione: zdarzenia z 1h, 30m, 10m, 5m, 3m
  • Ślizgające: średnia/odchylenie/kwantyl(0.8) z 3/7 dni

Statystyki ślizgowe obliczane są bez wycieku:

# Statystyki ślizgowe
data['week_mean'] = round(data.rolling(window=7, min_periods=1)['events'].mean(), 2)

Ślizgowe uczenie codziennie aktualizuje model na pełnym puli historycznej.

Autoenkoder: kompresja i odtworzenie

Neuronowy autoenkoder kompresuje normalne sekwencje w przestrzeń ukrytą, a anomalie są słabo odtwarzane (wysoki błąd rekonstrukcji).

Architektura: enkoder LSTM/GRU + dekoder. Uczenie na normalnych danych minimalizuje MSE. Próg błędu określa anomalie.

Zalety dla szeregów: przechwytuje długoterminowe zależności. Wady: wymaga GPU, wrażliwy na hiperparametry.

Porównanie podejść:

| Model | Szybkość | Interpretowalność | Zasoby | Adaptacja do trendów |

|--------|----------|--------------------|---------|---------------------|

| Isolation Forest | Wysoka | SHAP | CPU | Opóźnienia |

| CatBoost | Średnia | Ważność cech | CPU/GPU | Uczenie ślizgowe |

| Autoenkoder | Niska | Uwaga | GPU | Sekwencje |

Co jest ważne

  • Isolation Forest prowadzi w szybkości i oszczędności dla czasu rzeczywistego
  • CatBoost jest dokładny w prognozowaniu trendów z rozszerzonymi cechami
  • Autoenkoder przewyższa na złożonych sekwencjach, ale jest zasobożerny
  • Wszystkie modele są nienadzorowane: działają bez oznaczania
  • Kombinacja opóźnień i statystyk ślizgowych zwiększa dokładność o 15-20%

Integracja z SIEM: modele aktualizowane online, alerty przy anomaly_score > progu. Testowanie na anomaliach syntetycznych potwierdza F1-score > 0.85 dla wszystkich.

— Editorial Team

Advertisement 728x90

Czytaj dalej