Work

Hackathon de l'Unistra

IA
Anomaly Detection
Project Management

En début de M2, j'ai participé à un Hackathon de l'Unistra. J'y ai dirigé une équipe de 5 personnes sur les 4 jours du challenge. Nous avons travaillé sur de l'anomaly detection dans des séries temporelles.

Illustration d'un Hackathon sur l'IA.

Un challenge intense

Quatre jours, quatre nuits et quatre signaux temporels ! Notre équipe réussira-t-elle à détecter les anomalies en compétition avec les autres groupes ?

En début de M2, j’ai participé à un Hackathon de l’Unistra. J’y ai dirigé une équipe sur les 4 jours du challenge. Nous avons travaillé sur de l’anomaly detection dans des séries temporelles.

L’objectif

Le défi consistait en ceci : nous disposions des signaux A, B, C, E et F. Nous savions que le signal A était sain et que parmi B, C, E et F, un autre signal était également indemne. Notre tâche était de trouver ce second signal sans défaut, puis d’identifier combien de types d’anomalies différentes se trouvaient dans les signaux défectueux.

Contexte

Avant ce Data Challenge, nous avions très peu de connaissances en IA. Nous avons donc consacré tout notre temps libre à nous former à l’aide de ressources en ligne. De plus, durant tout le challenge nous avons choisi de travailler avec les outils de MatLab.

Extraction des données

Initialement nous étions parti pour utiliser nos différents outils sur les signaux temporels. Cependant après plusieurs échecs, nous avons compris que ces signaux étant trop similaires il est difficile sinon impossible d’y détecter les anomalies.

Signaux temporels
Signaux bruts et FFT sur une fenêtre du signal temporel

Cependant en passant dans le domaine fréquentiel, rien qu’à l’oeil nu on voit que les signaux présentent des composantes fréquentielles bien différentes. Détecter des anomalies devient donc possible.

Supperposition des FFT
Zoom sur la superposition des FFT de tous les signaux
Choix de la fenêtre glissante

En passant dans le domaine temporel, il est possible de segmenter les signaux en plusieurs fenêtres. Cette approche permet de disposer d’une quantité suffisante de données pour l’entraînement du modèle. En effet, en divisant le signal en 5, 10, 50 ou 100 fenêtres, on peut considérablement augmenter le volume de données disponibles.

Cependant, cela pose un dilemme. Si le nombre de fenêtres est trop faible, le modèle risque de souffrir d’underfitting, ce qui entraînera un manque de précision. À l’inverse, si le nombre de fenêtres est trop élevé, chacune d’entre elles sera trop petite, ce qui entraînera une résolution spectrale trop élevée et rendra les défauts difficilement détectables.

De manière empirique, nous avons opté pour un découpage en 50 fenêtres avec un recouvrement spectral de 50 % (chaque fenêtre est décalée de la moitié de sa taille).

Illustration nombre fenêtre
Features calculées

Même si, pour certaines méthodes, nous avons utilisé directement les spectres de fréquence, nous avons également extrait plusieurs caractéristiques des spectres, telles que : la moyenne, la variance, les valeurs maximale et minimale, l’énergie, la skewness, la kurtosis et la moyenne des valeurs absolues.

Features calculées
Aperçu des features calculées sur toutes les fenêtres de tous les signaux.

Méthodes

LSTM Forecasting

Le LSTM (Long Short-Term Memory) forecasting est une technique de prédiction basée sur les réseaux de neurones récurrents (RNN), conçue pour traiter et prévoir des données séquentielles.

  1. Nous avons donc entraîné un réseau LSTM en utilisant une répartition 80/20, soit 80 % des données du signal A pour l’entraînement et 20 % pour le test.
  2. Nous avons ensuite cherché à prédire les spectres, que nous avons comparés aux spectres mesurés.
  3. En calculant l’erreur (Area under Curve, AuC) et en appliquant un seuil, il est possible de déterminer quels signaux sont défectueux.
Résultats du LSTM
Résultat du LSTM : signal prédit / signal mesuré

On voit bien que la reconstruction se fait correctement et que pour le signal A, l’erreur est très faible. Et alors en calculant l’AuC de la RMSE, on obtient le classement suivant :

Résultats du LSTM
Classement des erreurs RMSE moyennes

Donc pour conclure, avec cette méthode, nous déterminons que le signal B est le signal sain parmis tous les signaux.

LSTM AutoEncoder

Le LSTM autoencoder (AE) est un modèle de réseau neuronal combinant des LSTM pour encoder et décoder des séquences temporelles. Il apprend à compresser les données d’entrée en une représentation réduite (encodage), puis à les reconstruire (décodage).

Schéma du LSTM-AE
Schéma de fonctionnement d'un LSTM AutoEncoder

Cette fois au lieu de fournir à l’AE directement les spectres de fréquences comme pour le LSTM-forecaster, nous avons fourni les features de ces fenêtres.

Voici les résultats que nous obtenons :

Schéma du LSTM-AE
Résultats obtenus via la méthode du LSTM-AE avec les features des fenêtres

Nous observons que l’AE parvient bien à reconstruire le signal A et décèle des fautes dans les autres signaux. Cependant, étant donné la complexité d’application de cette méthode, nous n’avons pas eu le temps de comparer les RMSE moyenne de tous les résultats ce qui fait que cette méthode ne nous a donné aucun résultat exploitable.

Clustering (K-means)

Le clustering par K-means est une méthode de regroupement non supervisée qui divise les données en K clusters distincts. Chaque point de données est affecté au cluster dont le centre (centroïde) est le plus proche, et les centres sont mis à jour itérativement jusqu’à stabilisation.

Schéma du K-means
Schéma explicatif du clustering

Cette méthode avait un double objectif. D’une part, classer l’ensemble des signaux en deux clusters afin de distinguer les signaux corrects des défectueux. D’autre part, en sélectionnant les bonnes caractéristiques (features) et en déterminant le nombre optimal de clusters, nous espérions identifier les signaux présentant les mêmes types d’erreurs.

Nous avons donc effectué le clustering en utilisant directement les points des FFT comme feature. On a donc plusieurs milliers de features par échantillon. Voici les résultats (sachant que chaque signal a été décomposé en environ 50 fenêtres et que les fenêtres sont classés respectivement A-B-C-E-F):

Résultats du K-means
Résultat du K-means

Ci-dessous est représenté le premier résultat que nous avons eu. Il nous dit que le signal C serait le bon signal. Cependant, étant donné le grand nombre de features il était possible que nous soyions en overfitting. Ce faisant, nous avons procédé à une PCA (Principal Component Analysis). Ainsi de 9000 feautres, on passe à 111.

Et cette fois, voici les résultats :

Résultats du K-means
Résultat du K-means avec PCA

Cette fois on obtient le signal B ce qui corrobore nos résultats précédents.

Nous avons également fait un clustering cette fois sur les feautres et nous avons fait 3 clusters. Nous espérions ainsi détecter les types d’erreur. Voici ce que nous obtenons :

Résultats du K-means sur les features avec 3 clusters
Résultats du K-means sur les features avec 3 clusters

Nous observons alors à nouveau que le signal B est le signal sain (similaire à A). Mais nous voyons également que C et F ont une anomalie qui est classée dans le même cluster.

Nous concluons que le dataset dispose de 2 types d’erreur et que le signal sain est le signal B

Bilan

Ce Hackathon a été une expérience intense et formatrice, où nous avons su tirer parti de diverses techniques d’intelligence artificielle, malgré nos connaissances initialement limitées. En combinant analyse fréquentielle, réseaux LSTM et clustering K-means, nous avons pu identifier avec succès le signal sain et classer les anomalies.

En conclusion, ce concours m’a permis d’acquérir des compétences dans l’utilisation de diverses techniques de détection d’anomalies sur des séries temporelles. Pour la suite de mes études, j’ai l’intention de continuer à me former et me spécialiser dans ce domaine, qui a fortement éveillé mon intérêt.