Plan de vol pour : Détection des anomalies dans les séries chronologiques par l’IA

Ce Propulseur a été créé et la documentation rédigée par Chillwall AI

Les Propulseurs de l’ATIR sont des jeux structurés de ressources en nuage, documentation incluse, illustrant une technologie émergente. Offerts gratuitement, ils ont été conçus par des entreprises canadiennes d’expérience qui ont élaboré des produits ou des services au moyen de la technologie en question et ont accepté de partager leur savoir.

Prêt à décoller?

Voici ce que vous trouverez dans ce Plan de vol.

Aperçu

De quoi s’agit-il?

Les applications de détection des anomalies sont des logiciels qui identifient les irrégularités ou les variations dans les données. Elles décèlent automatiquement les pics, les creux et les autres aberrations qui surviennent dans le temps et entraînent des conséquences directes (défectuosités, blessures, vols, pannes, pertes d’argent et le reste). Quand ces anomalies sont détectées rapidement, l’organisation peut prendre des mesures pour y remédier avant que leurs effets se répercutent sur les modèles en aval, sur les fonctionnalités des systèmes et sur la production de rapports.

Les systèmes de détection des anomalies recourent à des algorithmes d’apprentissage automatique évolués pour surveiller automatiquement la qualité des données sans se fier sur des règles manuelles. Ils déterminent le cheminement normal selon les données historiques et repèrent les anomalies qui pourraient échapper à la vigilance humaine.

Le Propulseur que voici applique une solution d’apprentissage profond articulée sur l’intelligence artificielle (IA) spécifiquement conçue pour exploiter les données chronologiques. Il utilise comme outils Pandas, Numpy, Scikit-Learn et TensorFlow. Cette solution clé en main, optimisée, se déploie sur un serveur : l’instance EC2 d’AWS.

Quelle utilité pour mon entreprise?

Les applications qui détectent les anomalies grâce à l’IA permettent d’identifier les aberrations fonctionnelles au niveau le plus bas.

Pareille application permettra à l’organisation :

  • d’adopter des mesures proactives;
  • de peaufiner leurs solutions systémiques en fonction des besoins qui lui sont propres;
  • d’économiser temps et argent en automatisant un système complexe de surveillance des données au niveau du code, de l’application ou du système.

En décelant les défaillances et les menaces et en saisissant la nature des données qu’engendrent les logiciels canadiens novateurs dans les domaines de la santé, des finances, du commerce de détail, de la fabrication, des technologies de l’information et de l’environnement, le développeur évitera les pannes catastrophiques ou mettra au point d’autres solutions pour les entreprises.

La solution proposée ici est une solution :

  • clé en main – entièrement automatisée, elle englobe tous les micro-services et les progiciels nécessaires à son lancement en une seule étape;
  • de source totalement ouverte –aucun frais de licence n’est associé à l’usage du Propulseur;
  • stable – la solution s’installe sur une instance EC2 d’AWS de la plateforme de l’ATIR;
  • polyvalente – elle se prête à diverses utilisations en entreprise;
  • rentable – son usage ne dépasse pas le budget alloué dans le cadre de l’ATIR.

Pourquoi cette solution et pas une autre?

Il est difficile de bâtir un logiciel de détection des anomalies sur mesure, car cela exige passablement de savoir-faire. Un tel logiciel coût cher et son développement est laborieux. Pour déceler les anomalies, on devra faire appel à des scientifiques des données, à des ingénieurs de réseaux et à des développeurs qui passeront six mois, voire davantage, à élaborer une solution. Par ailleurs, les solutions disponibles dans le commerce sont onéreuses et les flux de tâches, comme l’entraînement des algorithmes de détection au moyen de données, doivent s’effectuer manuellement, surtout quand les données ne sont ni balisées ni structurées.

Ce Propulseur offre de précieux avantages à une PME.

  • Il autorise le téléversement de jeux de données brutes sans supervision.
  • Un modèle IA forme les données par lui-même.
  • Le logiciel configure une plateforme virtuelle en nuage automatiquement.
  • Cette solution rapide et peu coûteuse ne vous fera pas dépasser le budget alloué par l’ATIR.

Pratiques exemplaires

Connaissance du domaine

Avant de plonger dans le monde de l’apprentissage profond au moyen de réseaux neuronaux artificiels (autoencodeurs), il convient de bien saisir le domaine qui soulève un problème et les difficultés particulières qu’on souhaite surmonter. Songez aux données sur lesquelles vous travaillerez et à la nature des anomalies qu’il faut déceler, ainsi qu’aux contraintes ou aux exigences qui leur sont spécifiques.

Lisez The Importance of Domain Knowledge (importance de bien connaître le domaine) dans la partie « Tutoriels ».

Données d’entrée

Pour former efficacement un modèle d’autoencodage, il est capital d’utiliser des données de qualité. Il vaut donc la peine de consacrer un peu de temps et d’efforts à conditionner les données pour s’assurer qu’elles ne sont pas altérées et qu’on peut s’en servir pour bâtir le modèle. Pour connaître les exigences relatives au format des données qui serviront à détecter les anomalies et déterminer la qualité de ces dernières, parcourez la Solution type du Propulseur. Pour vous guider, nous utiliserons un jeu de données ECG comme échantillon. Pour en savoir plus sur la sécurité des données ou la protection des renseignements personnels, consultez le Propulseur de FormKiq.

Performance du modèle

On suivra en permanence la performance de l’autoencodeur durant son entraînement. Vérifiez les principales mesures comme les erreurs de reconstruction ou l’exactitude des anomalies décelées et corrigez les hyper paramètres en conséquence de manière à obtenir un meilleur rendement. Reprenez régulièrement l’entraînement ou améliorez le modèle en lui fournissant de nouvelles données afin qu’il s’adapte à mesure que celles-ci évoluent et en fonction des anomalies. Lisez Autoencoders – Machine Learning (autoencodeurs – apprentissage automatique) et les tutoriels TensorFlow à la partie « Tutoriels » pour comprendre comment un autoencodeur est structuré et comment affiner les hyper paramètres.

Trucs et hics

  • Truc. Commencez par bien maîtriser votre jeu de données et la façon dont la plateforme fonctionne normalement. Il faut absolument comprendre ses données pour choisir les bonnes particularités, établir le seuil de détection des anomalies et interpréter correctement les résultats obtenus.
  • Truc. Conditionnez soigneusement les données au préalable afin de les épurer, de les uniformiser et de faire en sorte qu’elles conviendront à l’entraînement du modèle d’autoencodage. Réglez de la bonne façon le problème des valeurs manquantes. Des techniques de prétraitement comme la normalisation et la mise à l’échelle accroîtront la convergence et la stabilité du modèle. Inspirez-vous du jeu de données ECG employé comme échantillon et de la Solution type pour déterminer les exigences applicables aux données d’entrée.
  • Truc. Ajustez les hyper-paramètres pour plus de précision. Le modèle de la Solution type identifie la plupart des anomalies. Cependant, il se peut que certains jeux de données se comportent différemment ou s’écartent de la norme, ce qui vous obligera à tester le modèle avec diverses fonctions d’hyper paramétrage (fonctions d’activation, taux d’apprentissage, nombre d’époques, nombre de nœuds et techniques de régularisation) pour trouver celui qui détectera le mieux les anomalies. Parmi les hyper paramètres associés à l’architecture du modèle, on retrouve les suivants.
    • Fonctions d’activation – elles calculent le résultat du nœud en fonction des entrées et des facteurs de pondération. Nous utilisons la tangente hyperbolique (tanh) pour la couche LSTM.
    • Taux d’apprentissage – facteur de pondération actualisé lors de l’entraînement; il varie souvent de 0,0 à 1,0 (du plus petit au plus grand).
    • Nombre d’époques – époques durant sur lesquelles le modèle sera formé; si la performance de ce dernier laisse à désirer ou s’il n’y a toujours pas convergence après la saisie des jeux de données servant à la formation et à la validation du modèle, il pourrait valoir la peine d’ajouter plus d’époques.
    • Nombre de nœuds – il indique le nombre de neurones ou d’unités dans la couche du réseau neuronal; vous pourriez vouloir l’accroître afin de saisir les schémas plus complexes dans le jeu de données.
    • Perte d’information – partie des unités à écarter pour transformer les données d’entrée linéairement et éviter le surapprentissage; on ajoute un coefficient de pénalité à la fonction de perte pour que la plage de soustraction de l’information se situe entre 0 et 1(du minimum au maximum).
    • Seuil – examinez le graphique MAE de la Solution type et fixez un seuil qui permettra de distinguer un comportement normal et un comportement anormal; dans la Solution type, le seuil par défaut équivaut à 0,3.

Lisez Autoencoders – Machine Learning et les tutoriels TensorFlow à la partie « Tutoriels » pour mieux saisir la structure des autoencodeurs et la façon d’affiner les hyper paramètres.

  • Prenez garde au surapprentissage

Ce problème survient quand le modèle mémorise les données servant à sa formation au lieu de discerner les schémas sous-jacents. Vérifiez la performance du modèle avec le jeu de validation et appliquez les techniques de régularisation comme la soustraction d’information ou l’interruption hâtive pour atténuer les risque de surapprentissage. Lisez Overfitting & Uniderfitting Dada (surapprentissage et sous-apprentissage) à la partie « Tutoriels » pour en savoir plus.

  • Prétraitement

Évitez les jeux de données déséquilibrés où les anomalies sont rares comparativement aux instances normales. Les jeux de ce genre fausseront le modèle en l’amenant à se comporter normalement, ce qui l’empêchera de détecter les anomalies. Utilisez des techniques comme le sur-échantillonnage, le sous-échantillonnage ou la synthèse de données pour ne pas déséquilibrer les catégories et pour améliorer la robustesse du modèle. Lisez Imbalanced Data (déséquilibre des données) à la partie « Tutoriels » pour en savoir plus.

  • Itération du processus de détection

Le processus doit être constamment précisé et amélioré. Ne vous attendez pas à obtenir des résultats optimaux dès le premier essai avec des données complexes. Reprenez les hyper paramètres et les stratégies de structuration des fonctionnalités d’après les résultats des rétroactions et des évaluations afin d’accroître la précision et l’efficacité de la détection. Examinez le jeu de données ECG offert comme exemple pour voir comment structurer le jeu de données normal d’un modèle et effectuez des essais pour en apprendre davantage.

Ressources

La documentation proposée ci-dessous vous en apprendra davantage sur l’intelligence artificielle et l’apprentissage automatique.

Le code source de la Solution type vous en dira beaucoup. En ce qui concerne l’exemple proposé (anomalies des données ECG), examinez le contenu des fichiers /data, /src, /reports et /models.

Tutoriels

Le tableau qui suit vous servira de liste de départ. Les liens mènent aux tutoriels les plus utiles selon l’auteur.

Contenu Résumé
What is AI in 5 minutes Introduction à l’intelligence artificielle
AI vs ML vs DL Difference Explained Explication des différences entre l’IA, l’apprentissage machine et l’apprentissage profond
Deep Learning Specialization par Andrew Ng sur Coursera Aborde les principes fondamentaux de l’apprentissage profond, notamment les réseaux neuronaux, les réseaux à convolution (RNC), les réseaux récurrents (RNR) et les modèles séquentiels.
Tutoriels TensorFlow En anglais. Touche divers sujets comme les réseaux neuronaux de base, les RNC, les RNR, l’apprentissage par renforcement et les modèles de déploiement. Comprend des illustrations de code et des exercices pratiques (comment modifier les paramètres).
Cours sur les modèles séquentiels de Deeplearning.ai En anglais. Décrit les modèles séquentiels comme les RNR et les modèles à mémoire à long et court terme (LSTM).
Autoencoders -Machine Learning Introduction générale aux autoencodeurs. Couvre la théorie des modèles d’autoencodage, présente différentes architectures et propose des exemples pratiques d’application avec TensorFlow et Keras.
The Importance of Domain Knowledge Explique en quoi consiste la connaissance d’un domaine et son importance en apprentissage automatique
Imbalanced Data Tutoriels qui vous aideront à mieux comprendre ce que sont les données déséquilibrées et comment surmonter les problème
Overfitting & Underfitting Data Tutoriels pour vous aider à maîtriser les jeux de données
Dataset Instance Transfers Guide expliquant comment transférer des fichiers de l’ordinateur à une instance Amazon, étape par étape
Label Encoding Tutoriels expliquant comment coder l’étiquetage des données avec Python
Multi-Threading in Python Tutoriels expliquant le parallélisme des données par flux séparés dans Python
Multi-Processing in Python Tutoriels qui vous aideront à mieux comprendre le parallélisme des données par processus dans Python

Documentation

Le tableau ci-dessous propose de la documentation sur le Propulseur « Détection d’anomalies dans les données chronologiques par l’IA ».

Document Résumé
https://github.com/Chillwall/anomaly_detection.git Dépôt GitHub contenant le code et la documentation

Soutien

En tant que participant de l’ATIR, vous pouvez obtenir de l’aide sur ce Propulseur. Si vous vous posez des questions :

  • affichez-les dans le canal Slack #help de l’ATIR;
  • envoyez-les par courriel à [email protected];
  • posez-les dans le dépôt GitHub.

Compris? Maintenant, voyez comment nous avons déployé la solution dans le Nuage de l’ATIR…

Détection d’anomalies dans les données chronologiques par l’IA

La Solution type montre comment utiliser le Propulseur Détection des anomalies dans les données chronologiques par l’IA pour <repérer les menaces, les risques et les possibilités dans <de nombreux secteurs (services financiers, santé, technologies propres, etc.) où il est capital de déceler les fonctionnement anormaux. Contrairement aux solutions complexes sur mesure, la Solution type propose une solution clé en main, fondée sur l’intelligence artificielle, qui n’exige qu’une structuration minimale des ressources pour soutenir les principales fonctionnalités opérationnelles.

Lisez la page Solution type pour en savoir plus sur le fonctionnement de cette dernière.

La Solution type utilise les technologies Pandas, Numpy, Scikit-Learn et TensorFlow, décrites dans les parties subséquentes.