Créer automatiquement un modèle de machine learning

avec Amazon SageMaker Autopilot

Amazon SageMaker est un service entièrement géré permettant aux développeurs et aux scientifiques des données de créer, former et déployer rapidement et facilement des modèles de machine learning.

Grâce à ce didacticiel, vous allez créer automatiquement des modèles de machine learning sans écrire la moindre ligne de code ! Vous allez utiliser Amazon SageMaker Autopilot, un outil AutoML capable de créer automatiquement les meilleurs modèles de machine learning pour la classification et la régression, qui va aussi vous donner un contrôle et une visibilité complets.

Dans ce didacticiel, vous allez apprendre à :

  1. Créer un compte AWS
  2. Configurer Amazon SageMaker Studio de façon à avoir accès à Amazon SageMaker Autopilot
  3. Télécharger un ensemble de données public avec Amazon SageMaker Studio
  4. Créer une expérience de formation avec Amazon SageMaker Autopilot
  5. Explorer les différents stades de l'expérience de formation
  6. Identifier et déployer le meilleur modèle possible à partir de l'expérience de formation
  7. Effectuer des prédictions avec le modèle déployé

Pour ce tutoriel, vous allez jouer le rôle d'un développeur travaillant dans une banque. Mission vous été confiée de développer un modèle de machine learning pour prédire si un client va s'inscrire pour un certificat de dépôt (CD). Le modèle sera entraîné à partir d'un ensemble de données marketing qui contiennent des informations sur les caractéristiques sociodémographiques des clients, les réactions aux événements marketing et les facteurs externes.

Les données ont été étiquetées pour plus de commodité et une colonne dans l'ensemble de données indique si le client est inscrit pour un produit offert par la banque. Une version de cet ensemble de données est accessible au public sur le référentiel de ML de l'Université de Californie à Irvine.
À propos de ce didacticiel
Durée 10 minutes                                           
Coût Moins de 10 USD
Cas d'utilisation Machine learning
Produits Amazon SageMaker
Public ciblé Développeur
Niveau Débutant
Dernière mise à jour 12 mai 2020

Étape 1. Créer un compte AWS

Le coût de cet atelier est inférieur à 10 USD. Pour en savoir plus, consultez la page Tarification Amazon SageMaker Studio.

Vous possédez déjà un compte ? Se connecter

Étape 2. Configurer Amazon SageMaker Studio

Suivez les étapes ci-dessous pour vous inscrire à Amazon SageMaker Studio et accéder à Amazon SageMaker Autopilot.

Remarque : pour en savoir plus, consultez la page Démarrage avec Amazon SageMaker Studio de la documentation d'Amazon SageMaker.


a. Se connecter à la console Amazon SageMaker

Remarque : dans le coin supérieur droit, assurez-vous de sélectionner une région AWS dans laquelle Amazon SageMaker Studio est disponible. Pour avoir une liste des régions, consultez la page S'inscrire à Amazon SageMaker Studio.


b. Dans le volet de navigation d' Amazon SageMaker, sélectionnez Amazon SageMaker Studio.
 
Remarque : si vous utilisez Amazon SageMaker Studio pour la première fois, vous devez passer par le processus d'inscription à Studio. Au moment de l'inscription, vous avez le choix entre AWS Single Sign-On (AWS SSO) et AWS Identity and Access Management (IAM) comme méthode d'authentification. Si vous optez pour l'authentification IAM, vous avez le choix entre le démarrage rapide et la procédure de configuration standard. Si vous ne savez pas quelle option choisir, consultez la page S'inscrire à Amazon SageMaker Studio et demandez l'aide de votre administrateur informatique. Pour plus de simplicité, ce didacticiel utilise la procédure Démarrage rapide.

c. Dans la fenêtre Démarrage, sélectionnez Démarrage rapide et indiquez un nom d'utilisateur.

d. Pour Rôle d'exécution, sélectionnez Créer un rôle IAM. Dans la boîte de dialogue qui s'ouvre, sélectionnez N'importe quel compartiment S3 et sélectionnez Créer un rôle.

Amazon SageMaker crée un rôle avec les autorisations nécessaires et l'affecte à votre instance.  


e. Cliquez sur Soumettre.

Étape 3. Télécharger l'ensemble de données

Suivez les étapes ci-dessous pour télécharger et explorer l'ensemble de données.

Remarque : pour en savoir plus, consultez la page Visite d'Amazon SageMaker Studio de la documentation d'Amazon SageMaker.


a. Sur le Panneau de configuration d'Amazon SageMaker Studio, sélectionnez Open Studio.

b. Dans JupyterLab, sur le menu Fichier, sélectionnez Nouveau, puis Bloc-notes. Dans la fenêtre Sélection du noyau, sélectionnez Python 3 (science des données).
 

c. Pour télécharger et extraire le code, copiez-collez le code suivant dans la cellule de code et sélectionnez Exécuter.
 
Remarque : pendant l'exécution du code, une * apparaît entre les crochets. Après quelques secondes, l'exécution du code se termine et la * est remplacée par un chiffre.
%%sh
apt-get install -y unzip
wget https://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip

d. Copiez-collez le code suivant dans une nouvelle cellule de code et sélectionnez Exécuter.

L'ensemble de données CSV se charge et affiche les dix premières lignes.

import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]

L'une des colonnes de l'ensemble de données est intitulée y et représente l'étiquette pour chaque échantillon : ce client a-t-il accepté l'offre ou non ?

À cette étape, les scientifiques des données commencent à explorer les données, créer de nouvelles fonctionnalités et ainsi de suite. Avec Amazon SageMaker Autopilot, vous vous épargnez ces étapes supplémentaires. Il suffit de charger des données tubulaires dans un fichier dont les valeurs sont séparées par des virgules (par exemple, à partir d'un classeur ou d'une base de données) et de choisir la colonne cible pour la prédiction, puis Autopilot crée un modèle prédictif pour vous.


d. Copiez-collez le code suivant dans une nouvelle cellule de code et sélectionnez Exécuter.

Cette étape permet de charger l'ensemble de données CSV dans un compartiment Amazon S3. Vous n'avez pas à créer de compartiment Amazon S3 : Amazon SageMaker crée automatiquement un compartiment par défaut sur votre compte lorsque vous chargez les données.

import sagemaker

prefix = 'sagemaker/tutorial-autopilot/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)

Et voilà ! Le code de sortie indique l'URI du compartiment S3 comme suit :

s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv

Gardez une trace de l'URI S3 dans votre bloc-notes. Vous en aurez besoin à l'étape suivante.

Étape 4. Créer une expérience SageMaker Autopilot

Maintenant que vous avez téléchargé et compartimenté votre ensemble de données dans Amazon S3, vous pouvez créer une expérience Amazon SageMaker Autopilot. Une expérience est un recueil de tâches de traitement et de formation en lien avec un même projet de machine learning.

Suivez les étapes suivantes pour créer une nouvelle expérience.

Remarque : pour en savoir plus, consultez la page Créer une expérience Amazon SageMaker Autopilot dans SageMaker Studio de la documentation d'Amazon SageMaker.


a. Sur le volet de navigation de gauche d'Amazon SageMaker Studio, sélectionnez Expériences (icône symbolisée par un flacon), puis sélectionnez Créer une expérience.


b. Remplissez les champs Paramètres de la tâche comme suit :

  • Nom de l'expérience : tutorial-autopilot
  • Emplacement S3 des données d'entrée : URI S3 imprimée plus tôt
    (e.g. s3://sagemaker-us-east-2-123456789012/sagemaker/tutorial-autopilot/input/bank-additional-full.csv)
  • Nom de l'attribut cible : y
  • Emplacement S3 pour les données de sortie : s3://sagemaker-us-east-2-[ACCOUNT-NUMBER]/sagemaker/tutorial-autopilot/output
    (pensez à bien remplacer [ACCOUNT-NUMBER] par votre propre numéro de compte)

c. Laissez tous les autres paramètres avec leurs valeurs par défaut, puis sélectionnez Créer une expérience.

Bravo ! Et voici comment démarrer une expérience Amazon SageMaker Autopilot ! Ce processus va générer un modèle ainsi que des statistiques que vous pouvez consulter en temps réel pendant l'exécution de l'expérience. Une fois l'expérience terminée, vous pouvez consulter les essais, trier par métrique objective et faire un clic droit pour déployer le modèle pour une utilisation dans d'autres environnements.

Étape 5. Explorer les stades d'une expérience SageMaker Autopilot

Pendant que votre expérience s'exécute, vous pouvez découvrir et explorer les différents stades de l'expérience SageMaker Autopilot.  

Cette section donne davantage de détails sur les stades de l'expérience SageMaker Autopilot :

  1. Analyse des données
  2. Ingénierie de fonctionnalités
  3. Ajustement du modèle

Remarque : pour en savoir plus, consultez la section Sortie du bloc-notes SageMaker Autopilot.


Analyse des données

Le stade Analyse des données identifie le type de problème à résoudre (régression linéaire, classification binaire, classification multiclasse). Il donne ensuite dix pipelines candidats. Un pipeline combine une étape de pré-traitement des données (gestion des valeurs manquantes, ingénierie de nouvelles fonctionnalités, etc.) à une étape de formation de modèle avec un algorithme de ML correspondant au type de problème. Une fois cette étape terminée, la tâche passe à l'ingénierie de fonctionnalités.  


Ingénierie de fonctionnalités

Au stade Ingénierie de fonctionnalités, l'expérience crée des ensembles de données de formation et de validation pour chaque pipeline candidat, et stocke tous les artefacts dans votre compartiment S3. Pendant le stade Ingénierie de fonctionnalités, vous pouvez ouvrir et consulter deux bloc-notes générés automatiquement :

  • le bloc-note d'exploration des données, qui contient des informations et des statistiques sur les ensembles de données ;
  • et le bloc-note de génération de candidat, qui contient la définition de dix pipelines. En fait, il s'agit d'un bloc-note exécutable : vous pouvez reproduire exactement ce que fait la tâche d'AutoPilot, comprendre la conception des différents modèles et même les ajuster à votre convenance.

Grâce à ces deux bloc-notes, vous pouvez comprendre en détail le pré-traitement des données, ainsi que la conception et l'optimisation des modèles. Cette transparence est une fonctionnalité importante d'Amazon SageMaker Autopilot.


Ajustement du modèle

Au stade Ajustement du modèle, pour chaque pipeline candidat et son ensemble de données pré-traité, SageMaker Autopilot lance une tâche d'optimisation d'hyperparamètre ; les tâches de formation associées explorent un large choix de valeurs d'hyperparamètre et convergent rapidement vers des modèles aux performances accrues.

Une fois au bout de ce stade, la tâche SageMaker Autopilot est terminée. Vous pouvez voir et explorer toutes les tâches dans SageMaker Studio.

Étape 6. Déployer le meilleur modèle

Maintenant que votre expérience est terminée, vous pouvez choisir le meilleur ajustement de modèle et déployer le modèle vers un point de terminaison géré par Amazon SageMaker.

Suivez ces étapes pour choisir le meilleur ajustement et déployer le modèle.

Remarque : pour en savoir plus, consultez la section Choisir et déployer le meilleur modèle.


a. Dans la liste Essais de votre expérience, sélectionnez la flèche en regard de la section Objectif pour trier les tâches d'ajustement dans l'ordre décroissant. La meilleure tâche d'ajustement est mise en avant par une étoile.


b. Sélectionnez la meilleure tâche d'ajustement (marquée par une étoile) et sélectionnez Déployer un modèle


c. Dans la fenêtre Déployer un modèle, nommez votre point de terminaison (par exemple, tutorial-autopilot-best-model) et laissez tous les paramètres avec leurs valeurs par défaut. Sélectionnez Déployer le modèle.

Votre modèle est déployé vers un point de terminaison HTTPS géré par Amazon SageMaker.


d. Dans la barre d'outils de gauche, sélectionnez l'icône Points de terminaison. Vous pouvez voir la progression de la création de votre modèle, qui peut prendre quelques minutes. Une fois le statut du point de terminaison défini sur En service, vous pouvez envoyer les données et recevoir des prédictions !

Étape 7. Effectuer des prédictions avec votre modèle

Maintenant que le modèle est déployé, vous pouvez prédire les 2 000 premiers échantillons de l'ensemble de données. Pour ce faire, vous devez utiliser invoke_endpoint API dans le kit boto3 SDK. Ce processus consiste à compiler d'importantes métriques de machine learning : pertinence, précision, rappel et score F1.

Suivez ces quelques étapes pour prédire à l'aide de votre modèle.

Remarque : pour en savoir plus, consultez la section Gérer le machine learning avec les expériences Amazon SageMaker.


Dans votre bloc-note Jupyter, copiez-collez le code suivant et sélectionnez Exécuter.

import boto3, sys

ep_name = 'tutorial-autopilot-best-model'
sm_rt = boto3.Session().client('runtime.sagemaker')

tn=tp=fn=fp=count=0

with open('bank-additional/bank-additional-full.csv') as f:
    lines = f.readlines()
    for l in lines[1:2000]:   # Skip header
        l = l.split(',')      # Split CSV line into features
        label = l[-1]         # Store 'yes'/'no' label
        l = l[:-1]            # Remove label
        l = ','.join(l)       # Rebuild CSV line without label
                
        response = sm_rt.invoke_endpoint(EndpointName=ep_name, 
                                         ContentType='text/csv',       
                                         Accept='text/csv', Body=l)

        response = response['Body'].read().decode("utf-8")
        #print ("label %s response %s" %(label,response))

        if 'yes' in label:
            # Sample is positive
            if 'yes' in response:
                # True positive
                tp=tp+1
            else:
                # False negative
                fn=fn+1
        else:
            # Sample is negative
            if 'no' in response:
                # True negative
                tn=tn+1
            else:
                # False positive
                fp=fp+1
        count = count+1
        if (count % 100 == 0):   
            sys.stdout.write(str(count)+' ')
            
print ("Done")

accuracy  = (tp+tn)/(tp+tn+fp+fn)
precision = tp/(tp+fp)
recall    = tn/(tn+fn)
f1        = (2*precision*recall)/(precision+recall)

print ("%.4f %.4f %.4f %.4f" % (accuracy, precision, recall, f1))

Vous devrez obtenir le résultat suivant.

100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Done
0.9830 0.6538 0.9873 0.7867

Ce résultat est un indicateur de progression qui montre le nombre d'échantillons prédits !

Étape 8. Nettoyage

À ce stade, vous résiliez les ressources utilisées dans cet atelier.

Important : il est conseillé de résilier les ressources qui ne sont pas utilisées de façon active, afin de réduire les coûts. Des ressources non résiliées peuvent entraîner des frais sur votre compte.


Suppression de votre point de terminaison : dans votre bloc-note Jupyter, copiez-collez le code suivant et sélectionnez Exécuter.

sess.delete_endpoint(endpoint_name=ep_name)

Si vous souhaitez nettoyer tous les artefacts de formation (modèles, ensembles de données pré-traités, etc.), copiez-collez le code suivant dans la cellule de code et sélectionnez Exécuter.

Remarque : pensez à bien remplacer ACCOUNT-NUMBER par votre numéro de compte.

%%sh
aws s3 rm --recursive s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/

Félicitations !

Vous avez créé automatiquement un modèle de machine learning avec la meilleure précision avec Amazon SageMaker Autopilot

Ce didacticiel vous a-t-il été utile ?