Cyclicité des données #2 : Un exemple

Grâce à cet article, vous comprendrez mieux notre approche unique de la maintenance prédictive.

Dans l’article précédent, nous avons vu comment reconnaître un problème contenant des données cycliques. Maintenant nous allons traiter un cas concret de problème contenant des données cycliques. Nous allons utiliser notre logiciel de génération de features conçu pour les problèmes cycliques, et observer quels gains un tel générateur de descripteurs apporte lorsqu’il est utilisé en combinaison avec des modèles de détection d’anomalies classiques.

Les données du problème sont extraites de données vibratoires dans un système rotatif, ici un roulement à billes (lien du dataset).

Prise en main des données

Figure 3 : Fichiers du jeu de données

Le jeu de données est constitué de nombreux fichiers, certains correspondent à des mesures saines, et d’autres à certains types de défauts possibles. Ici, nous allons regarder le problème en prenant simplement le fichier H-A-1.mat qui contiendra les données de référence pour l’état sain, et O-A-1.mat qui contient les données liées au défaut à détecter. Ici il n’y aura qu’un type de défaut, concernant la partie extérieure du roulement à billes.

Chaque fichier contient des données échantillonnées à 200 000 Hz, pendant 10 secondes de mesure. Deux capteurs sont disponibles : les données vibratoires issues d’un accéléromètre, et la vitesse de rotation des roulements.

Figure 4 : Premières valeurs des données d’accéléromètre lors du fonctionnement sain et anormal

Ici, le problème que nous choisissons est le suivant : à partir des données saines, construire un modèle permettant de reconnaître les données saines et les données anormales.

Modèles utilisés

Pour traiter ce problème, nous allons utiliser des modèles classiques, disponibles dans la librairie de machine learning sklearn. Nous utiliserons les 3 modèles suivants issus de la librairie : 

L’objectif n’est pas d’entrer dans le détail de ces méthodes, ou d’optimiser au maximum les modèles obtenus. Il est plutôt question de voir comment un outil adéquat de génération de features permet d’améliorer les performances des modèles pour l’apprentissage des données.
Cependant, il faut tout de même regarder quelles sont les entrées et sorties attendues pour ces modèles.

Ces 3 modèles, comme beaucoup de modèles en machine learning, ne fonctionnent pas nativement sur des séries temporelles. En effet, ce sont des modèles qui apprennent à associer 1 entrée de taille fixe, à 1 sortie. Par exemple, ils peuvent associer un segment de 10 secondes de mesures, à un label « sain » ou « anomalie ». Mais ils ne sont pas conçus pour suivre l’état d’un système continuellement au cours du temps, en générant une série temporelle qui serait l’évolution de l’état de santé de notre système.

Une particularité de ces modèles, est que ce sont des modèles servant à détecter des anomalies. C’est-à-dire qu’ils apprennent en utilisant uniquement des données saines. Ensuite lors de l’évaluation sur de nouvelles données, un label « sain » ou « anomalie » est renvoyé par les modèles construits. Le label « anomalie » est renvoyé si une déviation par rapport à l’état sain est détectée par le modèle.

Pour pouvoir appliquer ces modèles au problème, nous allons découper les données saines et anormales en petits segments. Ces segments seront les entrées du modèle, et en fonction d’où est extrait le segment, chacun aura son label « sain » ou « anomalie ». Les modèles seront entraînés en utilisant une fraction (ici 12.5%) des données saines, et seront validés sur le reste des données.

Segmentation régulière

Une première approche possible est d’effectuer un découpage en segments de taille régulière pour les données saines et les données issues du défaut. Ici, nous faisons le choix d’avoir des segments de 10000 points (donc 10 fois la taille de la Figure 4). À chaque segment, son label est associé : « sain » ou « anormal ».

Une fois cette découpe effectuée, nous pouvons appliquer les 3 modèles précédemment évoqués afin de catégoriser les données saines, des données anormales, en faisant l’apprentissage uniquement sur une partie des données saines.

Afin de visualiser les résultats obtenus de manière synthétique, nous allons utiliser une courbe ROC (Receiver Operating Characteristic). C’est un outil classique, permettant de visualiser les différents compromis taux de faux positifs / taux de vrais positifs qu’il est possible d’obtenir à partir d’un modèle. Les faux positifs correspondent à des fausses alertes, et le taux de vrais positifs correspond au taux de détection des anomalies. Pour chaque modèle, il est possible de faire varier un seuil de détection des anomalies.

Pour lire les résultats obtenus pour un modèle, il suffit de se fixer un taux de faux positif acceptable (ex : 0.05 pour 5% de faux positifs), et regarder quel taux de détection est associé (par exemple ici, 42% pour Local Outlier Factor). Plus le taux de détection est élevé pour un certain taux fixé de fausses alarmes, plus le modèle est bon.

Une valeur permettant de comparer globalement les modèles est l’aire sous la courbe (AUC : Area Under Curve). Plus cette valeur est proche de 1, plus le modèle est bon.

Figure 5 : Courbes ROC pour une segmentation simple

Sans détailler les résultats, nous observons que le meilleur modèle est le One Class SVM, avec une aire sous la courbe de 0.92. Savoir si un tel résultat est bon ou non dépend entièrement du contexte d’utilisation du modèle et de la difficulté du problème. Nous ne cherchons pas à interpréter cette valeur, mais simplement à s’en servir pour comparer facilement les modèles générés.

Maintenant que nous avons établi nos résultats de référence, nous allons voir s’il est possible de les améliorer. Dans notre logiciel DiagFit, il existe un module de génération de features, adapté spécialement au cas cyclique. Cependant, cet outil peut être appliqué à toute série temporelle, ce qui est utile dans les cas où la cyclicité des données n’est pas évidente. Les résultats obtenus par cette méthode sont mis sur la figure ci-dessous.

Figure 6: Segments simples + Génération de features automatique (cycliques)

Après évaluation des modèles ainsi construits à partir de la segmentation simple et de la génération de features cycliques, nous pouvons voir que l’AUC des modèles ne s’améliore pas. Apprendre les modèles sur les données transformées n’a donc pas amélioré les performances.

En fait, les données de ce problème sont relativement éloignées d’un cas idéal de données cycliques. Notre outil de génération de features fait ressortir des différences fines dans l’évolution temporelle des données. Dans le cas de données vibratoires, cette approche peut fonctionner, mais par nature ces données contiennent beaucoup de bruit aléatoire, qui peuvent masquer des changements plus fins dans l’évolution temporelle des données.

De plus, la vitesse de rotation augmente dans le jeu de données étudié, donc chaque segment construit via une segmentation régulière dans le temps peut contenir un nombre de tours variable. Chaque segment correspond donc à un phénomène physique légèrement différent, ce qui nous éloigne encore plus d’un cas cyclique idéal. 

Heureusement, il est possible de régler ce dernier problème, en effectuant une segmentation plus intelligente des données.

Segmentation par cycle

Dans la partie précédente, les résultats ont été obtenus en découpant les données en segments réguliers dans le temps. Cette méthode simple a le désavantage de créer des segments où le nombre de rotations n’est pas constant.

Heureusement, le jeu de données fournit une deuxième information qui permet de construire des segments qui possèdent le même nombre de tours pour le roulement à bille étudié. En effet, le deuxième capteur est la vitesse de rotation du roulement, mesurée via un tachymètre.

Figure 7: Découpe en tours à partir de la deuxième donnée fournie

À partir de cette donnée, il est possible de faire une découpe où chaque segment contient exactement le même nombre de tours pour le roulement (ici on choisit 1024 tours). Les segments ne sont pas d’une taille significativement différente : avant rééchantillonnage, la longueur moyenne d’un cycle est de 10 092 points (contre 10 000 avec une segmentation simple). L’avantage est que chaque segment obtenu via cette découpe correspond désormais à des phénomènes physiques mieux comparables, ce qui permet de se rapprocher du cas idéal des données cycliques.

Tout d’abord, nous pouvons observer que si nous appliquons directement les 3 mêmes méthodes que dans la section précédente sur ces segments synchronisés, le gain apporté par cette segmentation n’est pas évident :

Figure 8 : Courbes ROC pour une segmentation régulière en nombre de tours

En effet, nous n’observons pas de changement significatif au niveau de l’AUC des modèles. Cependant, en utilisant notre outil de génération automatique de features dans le cas cyclique, nous observons cette fois-ci un gain majeur dans la performance des modèles, contrairement à ce qui avait été obtenu avec une segmentation simple : 

Figure 9 : Courbes ROC des modèles via une approche cyclique

Grâce à cette segmentation régulière en nombre de tours, et non en durée des segments, nous obtenons des résultats bien plus intéressants. L’aire sous la courbe de tous les modèles est grandement améliorée. En prenant par exemple en taux de fausse alarme de 5%, nous passons d’un taux de détection de 42% à 99% pour un modèle de type Local Outlier Factor. Les résultats pour les autres modèles sont similaires, avec une forte augmentation de la qualité des modèles. Aborder le problème en utilisant des outils spécifiques aux données cycliques a donc permis de générer de bien meilleurs résultats qu’une approche basique.

Note : Bien sûr, si l’objectif était d’évaluer précisément les performances, cette évaluation devrait se faire sur l’ensemble du dataset, avec différents fichiers de mesures saines, et différents types de défauts. Il est possible que l’on verrait alors une légère baisse dans la performance des modèles, le problème devenant plus complexe à cause des différents contextes et types de défauts.

Le mot de la fin

Vous avez enfin une idée plus concrète de ce que notre logiciel de prédiction de pannes en mode aveugle, DiagFit, peut accomplir dans le domaine de la maintenance prédictive.

Nous avons vu un exemple de problème où une découpe intelligente des données permet de mieux faire fonctionner notre logiciel de génération de features pour les problèmes cycliques. Dans cet exemple, en découpant par rapport au nombre de rotation et non au temps, la performance du meilleur modèle passe d’une AUC de 0.87 à une AUC de 0.995. 

L’amélioration des performances des modèles montre que traiter les problèmes via des algorithmes spécifiquement conçus pour le cas cyclique permet d’obtenir de très bonnes performances dans certains cas.

Dans la pratique, les cycles sont régulièrement présents dans les données. Il n’y a pas toujours besoin de les retrouver comme cela a été fait dans l’exemple accompagnant cet article. Mais pour les cas où les cycles ne sont pas présents, DiagFit intègrera, dans une prochaine version, notre nouvel algorithme de détection automatique des cycles. Ainsi, qu’elle soit explicite ou implicite, la cyclicité des données sera utilisée pour améliorer la détection d’anomalies.

D’autres techniques de génération de features, et d’autres modèles de prédiction de pannes existent hors des trois modèles utilisés ici. Dans un prochain article, nous comparerons les résultats obtenus via différentes méthodes, sur plusieurs jeux de données.

Définition

Features : Une feature ici, si on traduit littéralement c’est un descripteur. Au plus simple c’est une valeur (ou un ensemble de valeurs) qui décrit quelque chose, qui exprime de l’information sous une forme intéressante à propos des données. Si on prends les notes d’une classe au contrôle de maths, la moyenne de la classe est une feature, la variance est une autre feature. L’intérêt de générer des features, c’est de ré-exprimer les informations des données brutes (notes de la classe) sous une forme intéressante et plus adaptée aux modèles de machine learning (moyenne de la classe). Dans Diagfit, nous le faisons, mais ici au lieu d’avoir des notes de classes nous prenons des séries temporelles cycliques.

Lire la partie 1 : Cyclicité des données, comprendre ce que c’est

En savoir plus sur DiagFit, notre logiciel de prédiction de pannes en mode aveugle : https://www.amiraltechnologies.com/actualite/2020/09/diagfit-1-5/

Article de Vincent Heurtin, ingénieur calcul scientifique chez Amiral Technologies

Latest posts