Détection des anomalies dans les données chronologique par l’IA

Voici ce que vous trouverez dans cet solution type :

Introduction

La Solution type du Propulseur « Détection des anomalies dans les données chronologiques par l’IA » montre comment Chillwall AI a recouru à des modèles d’apprentissage profond et à des autoencodeurs pour résoudre le problème que soulève la détection des anomalies.

Le Propulseur illustre comment les technologies de pointe simplifient une solution complexe et onéreuse applicable aux mégadonnées souvent négligée mais qui reste cruciale au bon fonctionnement d’une entreprise.

La solution proposée s’inspire de celles élaborées par Chillwall AI qui exploitent la puissance de l’intelligence artificielle (IA) pour formuler des prévisions quotidiennes dans une situation précise.

Énoncé du problème

Le monde des mégadonnées évolue constamment. Pour conserver sa stabilité, une entreprise doit donc absolument détecter les opérations anormales.

Importance de la détection des anomalies

Votre solution utilise-t-elle des mégadonnées? Toutes les industries, ou presque, s’appuient sur des données. Or, si on ne les identifie pas, les données anormales pourront entraîner de sérieuses perturbations, rendre des produits moins sûrs, ouvrir la porte à des cyberattaques, engendrer des pertes d’argent et empêcher l’optimisation des processus.

Faire fonctionner normalement une entreprise : un défi

Dans la masse des données opérationnelles qui permettent à l’entreprise de fonctionner normalement se dissimulent des aberrations : variations inattendues, modifications subtiles ou évènements inhabituels. Or, chacune pourrait bouleverser le déroulement normal des opérations.

Une solution complexe –souvent négligée par les PME

Les organisations recourent à des solutions perfectionnées comme des logiciels pour détecter les problèmes de sécurité. Pourtant, la détection la plus efficace s’effectue au départ, soit au niveau du code ou du système. Malheureusement, les PME canadiennes n’ont ni le savoir-faire, ni le temps de bâtir les algorithmes complexes qui détecteront les anomalies (encore moins si elles ne se spécialisent pas dans l’apprentissage automatique ou la science des données). C’est pourquoi elles percent plus lentement sur le marché et la conception d’un prototype de leur solution novatrice exige plus de temps. Pour déceler les anomalies dans un but précis, elles devront recourir à des scientifiques des données, à des ingénieurs de réseaux et à des développeurs qui mettront jusqu’à six mois pour élaborer la solution désirée.

L’apprentissage profond – une solution évoluée au bout des doigts

La Solution type utilise les réseaux neuronaux artificiels (autoencodeurs) pour repérer les schémas anormaux dans les données chronologiques sur les activités. Un autoencodeur comprime les données d’entrée pour les maîtriser sans supervision, puis les reconstruit avec un minimum d’erreurs. Dans une telle situation, la difficulté consiste à entraîner l’autoencodeur avec un jeu de données normales représentatif pour qu’il en comprenne la structure sous-jacente. Une fois formé, on laisse l’autoencodeur reconstruire de nouvelles instances dans lesquelles les anomalies correspondent aux variations par rapport à la normale survenant durant la reconstruction. La Solution type utilise un jeu de données ECG pour montrer comment les données sont structurées et comment fonctionne le modèle.

Le Propulseur s’avèrera d’une grande utilité pour les PME.

  • Solution clé en main ne nécessitant que peu de connaissances techniques
  • Plateforme virtuelle en nuage déjà configurée
  • Téléversement de jeux de données brutes sans supervision
  • Modèle IA organisant automatiquement les données

Solution rapide et peu coûteuse respectant les limites du budget alloué par l’ATIR

La détection d’anomalies dans les données chronologiques par l’IA sur le Nuage de l’ATIR – Solution type

Diagramme de la Solution type

Le diagramme ci-dessous illustre la structure de la Solution type.

 ComposantExplication
 ÉpurationDétection et rectification ou suppression des valeurs personnelles, corrompues ou inexactes dans le jeu de données
 Conversion des données et structuration des fonctionnalitésTransformation des valeurs du jeu de données en fonction d’une échelle commune
 Construction du modèleConstruction et formation du modèle d’apprentissage profond avec les données pour détecter les anomalies.
 Résultats de la formationVérification de l’exactitude de anomalies détectées
 Choix du modèleSélection du modèle fonctionnant le mieux
 Inférence du modèleEssai du modèle retenu
 Signalement des anomaliesDétection et signalement des anomalies

Cette partie vous apprend à configurer et à déployer l’application utilisant les réseaux neuronaux artificiels (RNA).

Déploiement et configuration

Si vous détenez un compte de l’ATIR, vous pouvez déployer la Solution type en parcourant le répertoire de Propulseurs jusqu’à celui intitulé « Détection des anomalies dans les données chronologiques par l’IA »et en suivant les instructions sur la façon d’en déployer une nouvelle instance. La solution configurera automatiquement votre plateforme virtuelle.

1. Cliquez Deploy (Déployer), puis connectez-vous à votre compte ATIR pour ouvrir l’URL du Propulseur. Ensuite, cliquez Next (suivant) sur la page Create Stack (créer une pile).

2.  Sur la page Specify stack details (précisions sur la pile), procédez comme suit :

3. Sur la page d’options Configure stack (configurer la pile), cliquez Next (suivant).

4. Sur la page Review and create (vérifier et créer), sélectionnez Submit (soumettre).5. Une pile sera créée et déployée comme on peut le voir sur l’illustration ci-dessous. Vous pouvez cliquer le bouton de rafraîchissement pour suivre la progression de la pile.

Configuration et lancement de l’application

1. Après avoir créé la pile, cliquez l’onglet Outputs (résultats) pour voir l’adresse IP de l’instance sous Value (valeur). Servez-vous de cette adresse pour accéder à l’instance GPU avec la commande SSH.

2. Une fois que vous aurez accédé à l’instance GPU, attendez que le message DAIR BoosterPack Installing Complete (installation du Propulseur de l’ATIR terminée) s’affiche sur la console. Ensuite, enfoncez la touche Entrée pour passer à l’étape suivante.

Un échantillon de code et un jeu de données conférant une grande précision au modèle seront chargés à l’avance. Vous pourrez modifier les paramètres du modèle afin de vous familiariser avec lui. Lisez la partie Démonstration de la technologie et la partie Architecture des données plus bas pour en savoir plus sur le paramétrage et comment téléverser votre propre jeu de données.

3. Exécutez les trois commandes ci-dessous pour activer la plateforme virtuelle!

. /home/ubuntu/miniconda/etc/profile.d/conda.sh
conda init
conda activate anomaly_detection

Démonstration de la technologie

Cette partie vous guide dans la démonstration du Propulseur. L’apprentissage profond avec des réseaux neuronaux artificiels (autoencodeurs) est intéressant en ce sens qu’il permet de déceler les anomalies opérationnelles au niveau le plus bas.

Le cas servant d’exemple vous montrera comment modéliser les activités.

Jeu de données ECG (électrocardiogrammes)

Comprendre le jeu de données

Le jeu de données original consiste en 20 heures d’électrocardiogrammes téléchargées de Physionet. Il s’agit du dossier « chf07 » de la base de données sur les insuffisances cardiaques congestives (chfdb) du BIDMC. Nous utiliserons 5 000 électrocardiogrammes. Les colonnes 0 à 139 présentent les données chronologiques de l’ECG d’un patient. Chaque valeur a été étiquetée « rythme anormal » ou « rythme normal ».

La Solution type illustre les capacités transformatrices d’un modèle d’apprentissage profond à autoencodage. Grâce à des mécanismes complexes de codage et de décodage, le système apprend les complexités associées aux valeurs chronologiques de l’ECG, ce qui lui permet de discerner les irrégularités du rythme et de la fréquence cardiaques. Voir le jeu de données ECG comme référence.

1. Former le modèle. Pour entraîner le modèle, vous aurez besoin des deux commandes que voici.

cd anomaly_detection/src/
python3 train_model.py

2. Établir un seuil. Après avoir entraîné le modèle à autoencodage avec le jeu de données ECG, on calcule la perte résultant de la reconstruction de chaque valeur et trace un histogramme qui sera sauvegardé dans /reports/ training_MAE_loss.jpg.

Bien que certaines valeurs anormales semblent échapper à l’autoencodeur, on les différencie clairement des valeurs normales. On établira donc un seuil auquel ces deux types de valeurs seront distinguées. Cela fait, on pourra contrôler la part de faux positifs, tout en captant le maximum de points de données anormaux. Pour le jeu de données ECG, la valeur par défaut a été fixée à 0,3. Vous devrez établir un autre seuil si vous utilisez votre propre jeu de données et modifier ce seuil en conséquence dans les scripts.

3. Vérifier la précision du modèle. Après avoir fixé un seuil, on teste la précision du modèle avec le jeu de données d’essai. Le rapport obtenu indiquera l’exactitude, la précision et le taux de rappel du modèle, comme on peut le voir ci-dessous.

Rapport sur la précision du modèle

 Évaluation de la précision du modèle Description
  Exactitude Mesure dans laquelle le modèle de classification AA est exact dans l’ensemble
  Précision Rapport entre le nombre de vrais positifs et le nombre total de valeurs positives, soit dans le cas actuel, nombre de patients chez qui on a correctement identifié une cardiopathie comparativement au nombre total de patients qui en sont vraiment atteints
 Taux de rappel Mesure dans laquelle le modèle a identifié les vrais positifs; indique combien de patients souffrant effectivement d’une cardiopathie ont été identifiés comme tels

4. Procéder à l’inférence du modèle. Une fois que le modèle a été bâti et a été retenu,
on exécutera la commande ci-dessous pour en vérifier l’inférence :

python3 predict_model.py

Résultat

Le résultat sera sauvegardé dans /result/predicting.csv

1. Une fois la démonstration achevée, allez à Services > Management & Governance > CloudFormation

2. Cochez la case qui correspond à votre pile, cliquez Delete (supprimer). La pile, l’instance EC2 et le groupe de sécurité seront automatiquement supprimés de votre compte.

Autres possibilités de déploiement

La Solution type du Propulseur utilise une instance GPU g4dn.2xlarge peu coûteuse qui satisfera les besoins de la majorité des cas d’utilisation.

Autres technologies

Principales raisons expliquant le choix des réseaux neuronaux artificiels (autoencodeurs)

Une des principales décisions techniques à l’origine de la solution proposée concerne le choix de l’autoencodage, une technologie qui se prête bien à la détection des anomalies.

Autres solutions

Repérer les anomalies n’est pas compliqué si le jeu de données n’est pas volumineux ou si on se fie fortement aux possibilités d’interprétation du modèle. Dans une telle situation, d’autres solutions peuvent être envisagées.

Architecture des données

Formatage des données de la Solution type

Téléversement de données –Jeu de données préinstallé servant d’exemple

Le jeu de données ECG de la Solution type, sauvegardé dans le référentiel Github, est téléchargé automatiquement après la création de la pile/instance, ce qui permet à l’utilisateur qui en est à sa première expérience de se familiariser avec le modèle et de le tester.

Téléversement de données – Nouveau jeu de données

L’utilisateur peut téléverser son propre jeu de données dans l’instance avec la commande SCP. Pour savoir comment procéder étape par étape, on lira le document Transferring Files between your laptop and Amazon instance (transfert de fichiers de l’ordinateur portable à l’instance Amazon). Gardez le nom de fichier existant quand vous remplacez l’ancien jeu de données.

Format des données d’entrée

Jeu de données servant d’exemple

Le jeu de données ECG est organisé en format CSV. Il comprend 140 colonnes correspondant aux électrocardiogrammes (ECG) et une colonne d’étiquettes codées 0 ou 1 indiquant que l’ECG est normal ou pas. En voici un exemple pour vous guider lors du formatage d’un nouveau jeu de données.

Nouveau jeu de données

Voici comment formater votre propre jeu de données.

Vérification de la qualité des données d’entrée

La qualité des prévisions dépend de la qualité du jeu de données qui forme le modèle. La qualité du jeu de données est l’un des facteurs les plus importants pour l’apprentissage automatique. Essayez d’éviter ce qui suit quand vous choisirez un jeu de données.

Format des données de sortie

Les données de sortie sont exprimées sous forme de fichiers CSV avec en-tête et index. La première colonne correspond à l’index et la deuxième prédit le résultat, codé 0 ou 1, ce qui indique que l’ECG est anormal (0) ou normal (1).

La détection des anomalies par autoencodage est une solution conçue pour servir de cadre général et accélérer l’élaboration d’une solution. Sur le plan de la sécurité, il conviendrait de prendre en compte ce qui suit et d’envisager des mesures d’atténuation.

PréoccupationMesure d’atténuation
Les données transmises aux instances EC2 ou venant de celles-ci pourraient être interceptées, ce qui dévoilerait des informations sensibles.Transmettre les données avec le protocole SSH pour plus de sûreté
Un accès non autorisé aux instances EC2 pourrait entraîner la fuite de données ou permettre à quelqu’un d’altérer le système.Contrôler l’accès aux instances EC2 avec le service de gestion des identités et des accès (GIA) d’AWS afin que les utilisateurs et les services autorisés soient les seuls à accéder au modèle. Utiliser des groupes de sécurité pour restreindre le trafic sur le réseau
Connexion avec un mot de passe d’AWSChanger toujours le mot de passe par défaut pour un mot de passe personnel plus complexe

Ne s’applique pas à ce Propulseur.

Par « mise à l’échelle », on entend la capacité de la technologie à traiter un volume croissant de données et à rester aussi efficace. Des techniques de traitement en parallèle comme l’usage de flux multiples ou le traitement multiple pourraient faciliter l’évolution du système de détection des anomalies par l’usage simultané de nombreuses ressources de calcul. Pour les activités servant à entraîner le modèle, nous préconisons le traitement multiple avec Tensorflow et des cœurs CUDA. Plateforme de calcul parallèle, CUDA sert aussi de modèle aux interfaces de protocole d’application (API), ce qui permet à TensorFlow d’effectuer des calculs en parallèle sur des unités de traitement graphique (GPU). Pour en savoir plus sur l’usage de flux multiples ou le traitement multiple, on lira Thread-based parallelism et Process-based parallelism.

La Solution type se déploie sur l’instance EC2 de l’ATIR d’AWS. Les instances EC2 sont déployées sur de nombreux serveurs physiques dans une zone de disponibilité (AZ). Quand un serveur tombe en panne, l’instance peut donc être transférée rapidement à un autre. En sauvegardant régulièrement les données, on atténuera les risques de perte éventuels.

Ne s’applique pas à ce Propulseur.

Ne s’applique pas à ce Propulseur.

Ce Propulseur est une solution qui ne vous coûtera guère. Vous pourrez vous en servir de nombreuses fois par mois sans dépasser le budget alloué par l’ATIR. L’application se déploie sur une instance g4dn.2xlarge à la demande de Linux coûtant 0,835 $US/heure.

Les codes rédigés par Chillwall AI sont tous couverts par la licence MIT.

Code source

Vous trouverez le code source de la Solution type dans le référentiel de Chillwall AI à l’adresse : https://github.com/Chillwall/anomaly_detection.git

Glossaire

Terminologie employée dans le document

ExpressionDescription
APIInterface de protocole d’application
ATIRAccélérateur technologique pour l’innovation et la recherche. Si rien ne le qualifie, dans ce document, l’acronyme désigne la plateforme pilote des Propulseurs de l’ATIR (un nuage hybride constitué d’un nuage public et d’un nuage privé, et non l’ancien service privé d’infonuagique de l’ATIR). Plateforme hybride en nuage
Apprentissage profondApprentissage automatique recourant aux réseaux neuronaux artificiels
ECGÉlectrocardiogramme
GPUUnité de traitement graphique
HyperparamètreParamètre préétabli servant à entraîner le modèle, comparativement aux paramètre dérivés durant la formation de ce dernier
InstanceMachine virtuelle exploitée sur une plateforme d’infonuagique
LSTMMénoire à long et à court terme (réseau)
Apprentissage automatiqueCadre employé pour bâtir un modèle sans programmation
SurapprentissageProduction d’une analyse qui correspond trop étroitement ou exactement à un jeu particulier de données, donc n’autorisera pas l’analyse d’autres données ou une prévision fiable d’autres observations
Données chronologiquesSéquence de données prises à un même intervalle, à différents moments dans le temps