Détection d’anomalies dans un ETL

Détection d’anomalies en streaming lors du prétraitement des données au niveau de l’ETL (Extract Transform and Load)
Auteure : Anissa Moussaoui – Data Engineer


Dans la plupart des projets utilisant l’intelligence artificielle, deux logiciels peuvent être distingués. L’un pour le prétraitement des données appelé ETL, un autre pour la data science (détection d’anomalies, clustering, prédiction, etc).

 

Problème

L’un des problèmes du processus cité ci-dessus est le coût considérable en terme de temps de calcul, car l’entrée du logiciel de data science est la sortie de celui de prétraitement (Les coûts sont significatifs suite à l’écriture et lecture du résultat de l’ETL). L’idée pour résoudre ce problème est de fusionner les deux logiciels, en appliquant certaines fonctionnalités ML au niveau de l’ETL. 

Difficulté 

Chez DCBrain les chargements de données sont basés sur l’API de Flink. Etant donné que ce projet de la fondation Apache est conçu pour des traitements en temps réel, il est alors très difficile d’appliquer les algorithmes classiques de Machine Learning (ML) pour faire de la détection d’anomalies ainsi que du clustering en temps réel au niveau de l’ETL, car la plupart des algorithmes ML sont dédiés qu’au batch (algorithmes nécessitant d’avoir constamment accès à l’ensemble du jeu de données).

De plus, Flink est toujours en développement, très peu d’algorithmes sont disponibles dans la librairie Flink ML et ils sont uniquement disponibles en scala (l’ETL est codé en java).

Solutions

Pour remédier aux coûts significatifs du temps de calcul pour le prétraitement des données pour ensuite appliquer des modèles ML après écriture des résultats, il est possible d’utiliser certaines fonctionnalités ML applicables au stream. A condition que la détection d’anomalies et le clustering soient intégrables dans la phase de prétraitement de Flink.

Il a fallu implémenter nous même les algorithmes pour la détection d’anomalies en streaming et de clustering au niveau de l’ETL. Ces algorithmes utilisent une fenêtre glissante temporelle pour garder un historique des points.

 

  • Prétraitement :

MAD (Median Absolute Deviation)

 

Comme la plupart des méthodes de détection d’anomalies, cet algorithme donne un score à chaque point représentant son ”degré” d’anormalité. Ce score mesure l’écart à la médiane normalisé des points considérés.

Cet algorithme peut être utilisé dans la phase de prétraitement pour détecter les valeurs aberrantes en temps réel, car le fait d’utiliser la médiane le rend bien plus robuste à la présence de valeurs extrêmes.

Dans la figure ci-dessous, MAD a pu détecter la plupart des valeurs extrêmes comme outliers (points en rouge). Cela prouve que c’est un algorithme qui marche très bien en streaming pour détecter les valeurs aberrantes.

  • Data science :

DenStream, version stream de DBSCAN

 

DenStream est un algorithme de clustering utilisant une technique basée sur la densité, proche de DBSCAN, permettant aussi de détecter les outliers dans un stream et les points non outliers.

Cet algorithme prend en entrée quatre hyperparamètres :

𝝴 : rayon max de voisinage pour que deux points soient voisins.

𝞴 : vitesse à laquelle le poids des micro clusters est mis à jour (plus 𝞴 est grand, moins l’historique des points est important, 𝞴>0 )

𝞵 : entier déterminant le poids d’un micro cluster, 𝞵 𝝐 [0, +∞[ .

𝞫 : multiplicateur de 𝞵, pour différencier les micro clusters outliers des normaux, 𝞫 𝝐 [0,1].

La figure ci-dessus montre le résultat de DenStream qui a détecté toutes les valeurs éloignées comme outliers (micro-cluster = -1).

Etant donné que Flink partitionne le dataset d’entrée et que l’ordre temporel des points n’est pas nécessairement respecté dans le stream, le résultat de DenStream peut donner des micro clusters avec le même centre dans les différentes partitions, comme le montre la figure ci-dessous :

Pour agréger tous les micro clusters dans un rayon 𝝴, il faudra appliquer l’algorithme DBSCAN sur le centre des micro clusters non outliers.

 

La figure ci-dessous représente les différents clusters créés par DBSCAN. Cinq clusters peuvent être distingués. Les points en bleu correspondent aux outliers et le reste correspond aux clusters non outliers (normaux).

Conclusion

Après l’implémentation des algorithmes MAD, DenStream et DBSCAN à partir de zéro dans notre ETL pour qu’ils soient utilisables avec Flink, nous démontrons qu’il est possible de faire de la détection d’anomalies en streaming ainsi que du Clustering. Tout en garantissant la performance des traitements en terme de temps de calcul lors du prétraitement, sans avoir à maintenir un pipeline dédié.