Zpět na domů

Detekce anomálií časových řad ML

Článek analyzuje tři ML přístupy k detekci anomálií v logách souborového úložiště: Isolation Forest pro izolaci odlehlých hodnot, CatBoost pro predikci a autoenkodér pro rekonstrukci. Uvádí kód, příznaky, metriky. Vhodný pro integraci do SIEM.

ML proti anomáliím: tři algoritmy pro logy
Advertisement 728x90

Detekce anomálií v logech úložiště souborů: Isolation Forest, CatBoost a autoenkodér

Strojové učení efektivně odhaluje hrozby v logech úložiště souborů, kde se denně zaznamenávají miliony operací čtení, zápisu a mazání. Tři algoritmy — Isolation Forest, CatBoost a autoenkodér — analyzují vícerozměrné časové řady aktivity uživatelů a rozlišují normální chování od podezřelého bez nutnosti označování dat.

Data se agregují podle časových intervalů: pro každý slot se počítá intenzita operací podle typů. Výsledkem je vektor příznaků, kde odchylky signalizují insider kopírování nebo hromadné šifrování.

Isolation Forest: izolace anomálií náhodností

Isolation Forest vytváří soubor stromů s náhodnými rozděleními příznaků. Anomálie se izolují rychleji, protože jejich příznaky se výrazně liší od většiny. Algoritmus je unsupervised: nevyžaduje označení dat, zaměřuje se na cestu od kořene k listu.

Google AdInline article slot
from sklearn.ensemble import IsolationForest

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

Pro časové řady se přidávají zpožděné příznaky:

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)

Klíčové hyperparametry:

  • n_estimators: rovnováha mezi přesností a rychlostí
  • contamination: očekávaný podíl anomálií (0.05)
  • max_samples: velikost podvýběru (256 výchozí)
  • bootstrap: False pro rozmanitost

Hodnocení anomaly_score pomocí decision_function je normalizováno na [-0.5, 0.5]. Hodnoty < -0.25 jsou jisté anomálie:

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

SHAP analýza ukazuje dominanci zpoždění na 10 minut. Výhody:

  • Složitost O(n log n) pro reálný čas
  • Funguje na CPU bez ukládání dat
  • Jednoduché nasazení

CatBoost pro predikci normální aktivity

CatBoostRegressor se učí na historických datech pro předpověď očekávané intenzity. Anomálie jsou tam, kde |skutečná - předpovězená| překračuje práh.

from catboost import CatBoostRegressor

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

Schéma rozdělení dat:

Google AdInline article slot
  • Tréninková (3 týdny): normální aktivita
  • Validační (1 týden): ladění
  • Testovací (2 dny): anomálie

Příznaky rozšiřují kontext:

  • Časové: den v týdnu, hodina
  • Zpožděné: události za 1h, 30m, 10m, 5m, 3m
  • Klouzavé: mean/std/quantile(0.8) za 3/7 dní

Klouzavé statistiky se počítají bez úniku:

# Klouzavé statistiky
data['week_mean'] = round(data.rolling(window=7, min_periods=1)['events'].mean(), 2)

Klouzavé učení denně aktualizuje model na plném historickém souboru.

Autoenkodér: komprese a obnova

Neuronový autoenkodér komprimuje normální sekvence do latentního prostoru, zatímco anomálie se špatně obnovují (vysoká reconstruction error).

Architektura: LSTM/GRU enkodér + dekodér. Učení na normálních datech minimalizuje MSE. Práh chyby určuje anomálie.

Výhody pro řady: zachycuje dlouhodobé závislosti. Nevýhody: vyžaduje GPU, citlivý na hyperparametry.

Srovnání přístupů:

| Model | Rychlost | Interpretovatelnost | Zdroje | Adaptace na trendy |

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

| Isolation Forest | Vysoká | SHAP | CPU | Zpoždění |

| CatBoost | Střední | Feature importance | CPU/GPU | Klouzavé učení |

| Autoenkodér | Nízká | Attention | GPU | Sekvence |

Co je důležité

  • Isolation Forest vede v rychlosti a úspornosti pro reálný čas
  • CatBoost je přesný v predikci trendů s rozšířenými příznaky
  • Autoenkodér vyniká u složitých sekvencí, ale je náročný na zdroje
  • Všechny modely jsou unsupervised: fungují bez označení dat
  • Kombinace zpoždění a klouzavých statistik zvyšuje přesnost o 15-20%

Integrace do SIEM: modely se aktualizují online, upozornění při anomaly_score > prahu. Testování na syntetických anomáliích potvrzuje F1-score > 0.85 pro všechny.

— Editorial Team

Advertisement 728x90

Číst dál