Retour à l'accueil

Détection d'anomalies en séries temporelles ML

L'article analyse trois approches ML pour la détection d'anomalies dans les logs de stockage de fichiers : Isolation Forest pour l'isolation des valeurs aberrantes, CatBoost pour la prévision et autoencoder pour la reconstruction. Inclut code, caractéristiques, métriques. Convient à l'intégration dans SIEM.

ML contre les anomalies : trois algorithmes pour les logs
Advertisement 728x90

Détection d'anomalies dans les journaux de stockage de fichiers : Isolation Forest, CatBoost et Autoencodeur

Le machine learning identifie efficacement les menaces dans les journaux de stockage de fichiers, où des millions d'opérations de lecture, d'écriture et de suppression sont enregistrées quotidiennement. Trois algorithmes—Isolation Forest, CatBoost et autoencodeur—analysent des séries temporelles multidimensionnelles de l'activité des utilisateurs, distinguant le comportement normal des schémas suspects sans données étiquetées.

Les données sont agrégées en intervalles de temps : pour chaque créneau, l'intensité des opérations par type est comptée. Cela produit un vecteur de caractéristiques où les écarts signalent une copie interne ou un chiffrement massif.

Isolation Forest : Isoler les anomalies avec du hasard

Isolation Forest construit un ensemble d'arbres avec des divisions aléatoires des caractéristiques. Les anomalies sont isolées plus rapidement car leurs caractéristiques diffèrent significativement de la majorité. L'algorithme est non supervisé : il ne nécessite aucun étiquetage et se concentre sur le chemin de la racine à la feuille.

Google AdInline article slot
from sklearn.ensemble import IsolationForest

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

Pour les séries temporelles, des caractéristiques de décalage sont ajoutées :

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)

Hyperparamètres clés :

  • n_estimators : équilibre entre précision et vitesse
  • contamination : proportion attendue d'anomalies (0,05)
  • max_samples : taille de sous-échantillon (256 par défaut)
  • bootstrap : False pour la diversité

Le anomaly_score via decision_function est normalisé [-0,5, 0,5]. Les valeurs < -0,25 sont des anomalies confiantes :

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

L'analyse SHAP montre la dominance des décalages de 10 minutes. Avantages :

  • Complexité O(n log n) pour le traitement en temps réel
  • Fonctionne sur CPU sans stocker les données
  • Déploiement facile

CatBoost pour prédire l'activité normale

CatBoostRegressor est entraîné sur des données historiques pour prédire l'intensité attendue. Les anomalies se produisent où |réel - prédit| dépasse un seuil.

from catboost import CatBoostRegressor

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

Schéma de division des données :

Google AdInline article slot
  • Entraînement (3 semaines) : activité normale
  • Validation (1 semaine) : réglage
  • Test (2 jours) : anomalies

Les caractéristiques élargissent le contexte :

  • Temporelles : jour de la semaine, heure
  • Décalage : événements sur 1h, 30m, 10m, 5m, 3m
  • Roulantes : moyenne/écart-type/quantile(0,8) sur 3/7 jours

Les statistiques roulantes sont calculées sans fuite :

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

L'apprentissage roulant met à jour le modèle quotidiennement sur l'ensemble historique complet.

Autoencodeur : Compression et reconstruction

Un autoencodeur neuronal compresse les séquences normales dans un espace latent, tandis que les anomalies sont mal reconstruites (erreur de reconstruction élevée).

Architecture : encodeur LSTM/GRU + décodeur. L'entraînement sur des données normales minimise l'erreur quadratique moyenne. Un seuil d'erreur détermine les anomalies.

Avantages pour les séries : capture les dépendances à long terme. Inconvénients : nécessite un GPU, sensible aux hyperparamètres.

Comparaison des approches :

| Modèle | Vitesse | Interprétabilité | Ressources | Adaptation aux tendances |

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

| Isolation Forest | Élevée | SHAP | CPU | Décalages |

| CatBoost | Moyenne | Importance des caractéristiques | CPU/GPU | Apprentissage roulant |

| Autoencodeur | Faible | Attention | GPU | Séquences |

Points clés à retenir

  • Isolation Forest est leader en vitesse et rentabilité pour une utilisation en temps réel
  • CatBoost est précis pour prédire les tendances avec des caractéristiques étendues
  • L'autoencodeur excelle sur les séquences complexes mais est gourmand en ressources
  • Tous les modèles sont non supervisés : ils fonctionnent sans étiquetage
  • Combiner décalages et statistiques roulantes améliore la précision de 15-20%

Intégration SIEM : les modèles se mettent à jour en ligne, les alertes se déclenchent sur anomaly_score > seuil. Les tests sur des anomalies synthétiques confirment un score F1 > 0,85 pour tous.

— Editorial Team

Advertisement 728x90

Lire ensuite