Analyse et visualisation - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Analyse et visualisation

Amazon SageMaker Data Wrangler inclut des analyses intégrées qui vous aident à générer des visualisations et des analyses de données en quelques clics. Vous pouvez également créer des analyses personnalisées à l'aide de votre propre code.

Vous ajoutez une analyse à un dataframe en sélectionnant une étape dans votre flux de données, puis en cliquant sur Add analysis (Ajouter une analyse). Pour accéder à une analyse que vous avez créée, sélectionnez l'étape qui contient l'analyse et sélectionnez l'analyse.

Toutes les analyses sont générées à l'aide de 100 000 lignes de votre jeu de données.

Vous pouvez ajouter les analyses suivantes à un dataframe :

  • Visualisations de données, y compris les histogrammes et les nuages de points.

  • Un résumé rapide de votre jeu de données, incluant le nombre d'entrées, les valeurs minimales et maximales (pour les données numériques) et les catégories les plus et les moins fréquentes (pour les données catégorielles).

  • Un modèle rapide du jeu de données, qui peut être utilisé pour générer un score d'importance pour chaque caractéristique.

  • Un rapport de fuite cible, que vous pouvez utiliser pour déterminer si une ou plusieurs caractéristiques sont fortement corrélées avec votre caractéristique cible.

  • Une visualisation personnalisée utilisant votre propre code.

Utilisez les sections suivantes pour en savoir plus sur ces options.

Histogramme

Utilisez des histogrammes pour afficher le nombre de valeurs d'entités pour une entité spécifique. Vous pouvez inspecter les relations entre les entités à l'aide de l'option Color by (Couleur par). Par exemple, l'histogramme suivant illustre la répartition des évaluations des utilisateurs des livres les plus vendus sur Amazon entre 2009 et 2019, colorés par genre.

Vous pouvez utiliser la fonction Facet by (Facetter par) pour créer des histogrammes d'une colonne, pour chaque valeur d'une autre colonne. Par exemple, le diagramme suivant montre les histogrammes des avis des utilisateurs sur les livres les plus vendus sur Amazon si facettés par année.

Nuage de points

Utilisez la fonction Scatter Plot (Nuage de points) pour inspecter la relation entre les caractéristiques. Pour créer un nuage de points, sélectionnez une caractéristique à représenter sur l'axe des X et l'axe des Y. Ces deux colonnes doivent être des colonnes à caractères numériques.

Vous pouvez colorer les nuages de points par une colonne supplémentaire. Ainsi, l'exemple suivant présente un diagramme de dispersion comparant le nombre d'avis aux évaluations des utilisateurs pour les livres les plus vendus sur Amazon entre 2009 et 2019. Le nuage de points est coloré par genre de livre.

En outre, vous pouvez facetter des nuages de points par caractéristiques. Ainsi, l'image suivante illustre le même nuage de points d'évaluation par rapport à l'évaluation utilisateur, à facettes par année.

Résumé de la table

Utilisez l'analyse Table Summary (Résumé de la table) pour résumer rapidement vos données.

Pour les colonnes avec des données numériques, y compris les données logarithmiques et flottantes, un résumé de tableau indique le nombre d'entrées (nombre), le minimum (min), le maximum (max), la moyenne et l'écart-type (stddev) pour chaque colonne.

Pour les colonnes avec des données non numériques, y compris les colonnes avec des données de type chaîne, booléen ou date/heure, un résumé de table indique le nombre d'entrées (nombre), la valeur la moins fréquente (min) et la valeur la plus fréquente (max).

Modèle rapide

Utilisez la visualisation Quick Model (Modèle rapide) pour évaluer rapidement vos données et produire des scores d'importance pour chaque caractéristique. Un feature importance score (score d'importance d'une caractéristique) indique l'utilité d'une caractéristique pour prédire une étiquette cible. Le score d'importance d'une caractéristique se situe dans l'intervalle [0, 1] et une valeur élevée indique que la caractéristique est plus importante pour l'ensemble du jeu de données. En haut du graphique modèle rapide, il y a un score du modèle. Un problème de classification indique un score F1. Un problème de régression a un score d'erreur au carré moyen (mean squared error – MSE).

Lorsque vous créez un graphique modèle rapide, vous sélectionnez un jeu de données que vous souhaitez évaluer et une étiquette cible par rapport à laquelle vous souhaitez comparer l'importance de la caractéristique. Data Wrangler exécute les opérations suivantes :

  • Détermine les types de données de l'étiquette cible et de chaque caractéristique du jeu de données sélectionné.

  • Détermine le type de problème. En fonction du nombre de valeurs distinctes dans la colonne d'étiquette, Data Wrangler détermine s'il s'agit d'un type de problème de régression ou de classification. Data Wrangler définit un seuil de catégorie à 100. S'il y a plus de 100 valeurs distinctes dans la colonne d'étiquette, Data Wrangler la classe comme un problème de régression ; sinon, elle est classée comme un problème de classification.

  • Fonctions de pré-traitement et données d'étiquetage pour l'entraînement. L'algorithme utilisé nécessite l'encodage des caractéristiques en type vectoriel et l'encodage des étiquettes en type double.

  • Entraîne un algorithme de forêt aléatoire avec 70 % des données. Spark RandomForestRegressorest utilisé pour entraîner un modèle pour les problèmes de régression. RandomForestClassifierIl est utilisé pour entraîner un modèle pour les problèmes de classification.

  • Évalue un modèle de forêt aléatoire avec les 30 % de données restantes. Data Wrangler évalue les modèles de classification à l'aide d'un score F1 et évalue les modèles de régression à l'aide d'un score MSE.

  • Calcule l'importance de chacune des fonctions à l'aide de la méthode d'importance Gini.

L'image suivante illustre l'interface utilisateur de la fonction de modèle rapide.

Target Leakage (Fuite de cible)

Une fuite de cible se produit lorsqu'il existe des données dans un jeu de données de machine learning fortement corrélées avec l'étiquette cible, mais qui ne sont pas disponibles dans les données du monde réel. Par exemple, vous pouvez avoir une colonne dans votre jeu de données qui sert de substitut à la colonne que vous voulez prédire avec votre modèle.

Lorsque vous utilisez Target Leakage (Fuite de cible), vous spécifiez les informations suivantes :

  • Target (Cible) : il s'agit de la caractéristique sur laquelle vous souhaitez que votre modèle ML puisse faire des prédictions.

  • Problem type (Type de problème) : c'est le type de problème ML sur lequel vous travaillez. Le type de problème peut être classification ou regression (régression).

  • (Facultatif) Max features (Nombre max de caractéristiques) : il s'agit du nombre maximal de caractéristiques à présenter dans la visualisation, qui affiche les caractéristiques classées par leur risque de fuite de cible.

Pour la classification, l'analyse de fuite de cible utilise la zone sous la caractéristique de fonctionnement du récepteur, ou la courbe ASC-ROC pour chaque colonne, jusqu'à Max features (Nombre maximum de fonctions). Pour la régression, il utilise un coefficient de détermination, ou métrique R2.

La courbe AUC - ROC fournit une métrique prédictive, calculée séparément pour chaque colonne à l'aide de la validation croisée, sur un échantillon d'environ 1 000 lignes. Un score de 1 indique des capacités prédictives parfaites, ce qui indique souvent une fuite de cible. Un score de 0,5 ou moins indique que l'information figurant dans la colonne ne pouvait fournir, à elle seule, aucune information utile pour prédire la cible. Bien qu'il puisse arriver qu'une colonne n'apporte aucune information seule, mais qu'elle soit utile pour prédire la cible lorsqu'elle est utilisée en combinaison avec d'autres fonctions, un score faible peut indiquer que la fonction est redondante.

Par exemple, l'image suivante montre un rapport de fuite de cible pour un problème de classification du diabète, c'est-à-dire prédire si une personne est atteinte de diabète ou non. Une courbe ASC - ROC est utilisée pour calculer la capacité prédictive de cinq fonctions, et toutes sont considérées comme étant à l'abri des fuites de cibles.

Multicolinéarité

La multicolinéarité est une circonstance dans laquelle deux variables prédictives ou plus sont liées les unes aux autres. Les variables prédictives sont les caractéristiques de votre jeu de données que vous utilisez pour prédire une variable cible. En cas de multicolinéarité, les variables prédictives sont non seulement prédictives de la variable cible, mais également prédictives les unes des autres.

Vous pouvez utiliser Variance Inflation Factor (VIF) (Facteur d'inflation de la variance (VIF)), Principal Component Analysis (PCA) (Analyse en composantes principales (PCA)) ou Lasso feature selection (Sélection de caractéristiques par lasso) comme mesures de la multicolinéarité de vos données. Pour plus d’informations, consultez les rubriques suivantes.

Variance Inflation Factor (VIF)

Le facteur d'inflation de la variance (VIF) est une mesure de la colinéarité entre les paires de variables. Data Wrangler renvoie un score VIF comme mesure de la relation entre les variables les unes aux autres. Le score VIF est un nombre positif supérieur ou égal à 1.

Un score de 1 signifie que la variable n'est pas corrélée avec les autres variables. Des scores supérieurs à 1 indiquent une corrélation plus élevée.

Théoriquement, vous pouvez obtenir un score VIF avec une valeur infinie. Data Wrangler coupe les scores élevés jusqu'à 50. Si vous avez un score VIF supérieur à 50, Data Wrangler définit le score à 50.

Vous pouvez utiliser les consignes suivantes pour interpréter vos scores VIF :

  • Un score VIF inférieur ou égal à 5 indique que les variables sont modérément corrélées avec les autres variables.

  • Un score VIF supérieur ou égal à 5 indique que les variables sont fortement corrélées avec les autres variables.

Principle Component Analysis (PCA)

L'analyse en composantes principales (PCA) mesure la variance des données dans différentes directions dans l'espace des caractéristiques. L'espace des caractéristiques comprend toutes les variables prédictives que vous utilisez pour prédire la variable cible dans votre jeu de données.

Par exemple, si vous essayez de prédire qui a survécu au naufrage du Titanic, votre espace de caractéristiques peut inclure l'âge et le sexe des passagers, ainsi que le tarif qu'ils ont payé.

À partir de l'espace des caractéristiques, l'analyse PCA génère une liste ordonnée de variances. Ces variances portent également le nom de valeurs singulières. Les valeurs de la liste des variances sont supérieures ou égales à 0. Nous pouvons les utiliser pour déterminer le degré de multicolinéarité de nos données.

Lorsque les nombres sont approximativement uniformes, les données présentent très peu d'instances de multicolinéarité. En cas de forte variabilité entre les valeurs, nous avons de nombreuses instances de multicolinéarité. Avant d'effectuer l'analyse PCA, Data Wrangler normalise chaque caractéristique pour avoir une moyenne égale à 0 et un écart type de 1.

Note

Dans cette circonstance, l'analyse PCA peut également être appelée « décomposition en valeurs singulières (SVD) ».

Lasso feature selection

La sélection de caractéristiques par lasso utilise la technique de régularisation L1 pour inclure uniquement les caractéristiques les plus prédictives de votre jeu de données.

Pour la classification et la régression, la technique de régularisation génère un coefficient pour chaque caractéristique. La valeur absolue de ce coefficient fournit un score d'importance pour la caractéristique. Un score d'importance plus élevé indique qu'il est plus prédictif de la variable cible. Une méthode courante de sélection de caractéristiques consiste à utiliser toutes les entités dont le coefficient de lasso est différent de zéro.

Détecter des anomalies dans les données de séries temporelles

Vous pouvez utiliser la visualisation de détection d'anomalies pour voir les valeurs aberrantes dans vos données de séries temporelles. Pour comprendre ce qui détermine une anomalie, vous devez savoir que nous décomposons la série temporelle en terme prédit et en terme d'erreur. Nous considérons la saisonnalité et la tendance des séries temporelles comme étant le terme prédit. Nous considérons les résidus comme étant le terme d'erreur.

Pour le terme d'erreur, vous spécifiez un seuil comme étant le nombre d'écarts-types dont le résidu peut s'éloigner de la moyenne pour être considéré comme une anomalie. Par exemple, vous définissez le seuil à trois écarts-types. Tout résidu à plus de 3 écarts-types de la moyenne est une anomalie.

Vous pouvez utiliser la procédure suivante pour exécuter une analyse Anomaly detection (Détection des anomalies).

  1. Ouvrez votre flux de données Data Wrangler.

  2. Cliquez sur Data type (Type de données) dans votre flux de données, choisissez le +, puis sélectionnez Add analysis (Ajouter une analyse).

  3. Pour Analysis Type Type d'analyse, choisissez Time Series (Séries temporelles).

  4. Pour Visualization (Visualisation), choisissez Anomaly detection (Détection des anomalies).

  5. Pour Anomaly threshold (Seuil d'anomalies), choisissez le seuil auquel une valeur est considérée comme une anomalie.

  6. Choisissez Preview (Prévisualisation) pour générer une prévisualisation de l'analyse.

  7. Choisissez Add (Ajouter) pour ajouter la transformation au flux de données Data Wrangler.

Décomposition de série temporelle dans les données de séries temporelles

Vous pouvez déterminer s'il existe une saisonnalité dans vos données de séries temporelles à l'aide de la visualisation de la décomposition des tendances saisonnières. Nous utilisons la méthode STL (Seasonal Trend Decomposition using LOESS) pour effectuer la décomposition. Nous décomposons la série temporelle en composants saisonniers, tendances et résidus. La tendance reflète la progression à long terme de la série. Le composant saisonnier est un signal se répète au cours d'une période. Après avoir supprimé la tendance et les composants saisonniers de la série temporelles, vous avez les résidus.

Vous pouvez utiliser la procédure suivante pour exécuter une analyse Seasonal-Trend Decomposition (Décomposition de série temporelle).

  1. Ouvrez votre flux de données Data Wrangler.

  2. Cliquez sur Data type (Type de données) dans votre flux de données, choisissez le +, puis sélectionnez Add analysis (Ajouter une analyse).

  3. Pour Analysis Type Type d'analyse, choisissez Time Series (Séries temporelles).

  4. Pour Visualization (Visualisation), choisissez Seasonal-Trend Decomposition (Décomposition de série temporelle).

  5. Pour Anomaly threshold (Seuil d'anomalies), choisissez le seuil auquel une valeur est considérée comme une anomalie.

  6. Choisissez Preview (Prévisualisation) pour générer une prévisualisation de l'analyse.

  7. Choisissez Add (Ajouter) pour ajouter la transformation au flux de données Data Wrangler.

Rapport de biais

Vous pouvez utiliser le rapport de biais dans Data Wrangler pour découvrir les biais potentiels dans vos données. Pour générer un rapport de biais, vous devez spécifier la colonne cible, ou Label (Étiquette), que vous souhaitez prédire et une Facet (Facette), ou la colonne que vous souhaitez inspecter pour détecter les biais.

Label (Étiquette) : fonction sur laquelle vous souhaitez qu'un modèle fasse des prédictions. Par exemple, si vous prédites la conversion des clients, vous pouvez sélectionner une colonne contenant des données indiquant si un client a passé une commande ou non. Vous devez également spécifier si cette fonction est une étiquette ou un seuil. Si vous spécifiez une étiquette, vous devez spécifier ce à quoi ressemble un résultat positif dans vos données. Dans l'exemple de conversion client, un résultat positif peut être 1 dans la colonne des commandes, représentant le résultat positif d'un client ayant passé une commande au cours des trois derniers mois. Si vous spécifiez un seuil, vous devez spécifier une limite inférieure définissant un résultat positif. Par exemple, si les colonnes de commandes client contiennent le nombre de commandes passées au cours de l'année précédente, vous pouvez spécifier 1.

Facet (Facette) : colonne que vous souhaitez inspecter pour les biais. Par exemple, si vous essayez de prédire la conversion des clients, votre facette peut correspondre à l'âge du client. Vous pouvez choisir cette facette parce que vous croyez que vos données sont biaisées vers un certain groupe d'âge. Vous devez identifier si la facette est mesurée en tant que valeur ou seuil. Par exemple, si vous souhaitez inspecter un ou plusieurs âges spécifiques, vous sélectionnez Value (Valeur) et spécifiez ces âges. Si vous souhaitez consulter un groupe d'âge, vous devez sélectionner Threshold (Seuil) et spécifier le seuil d'âge que vous souhaitez inspecter.

Après avoir sélectionné votre fonction et votre étiquette, vous sélectionnez les types de métriques de biais que vous souhaitez calculer.

Pour en savoir plus, veuillez consulter Générer des rapports sur les biais dans les données de pré-entraînement.

Créer des visualisations personnalisées

Vous pouvez ajouter une analyse à votre flux Data Wrangler pour créer une visualisation personnalisée. Votre jeu de données, avec toutes les transformations que vous avez appliquées, est disponible sous forme de Pandas DataFrame. Data Wrangler utilise la variable df pour stocker le dataframe. Vous accédez au dataframe en appelant la variable.

Vous devez fournir la variable de sortie, chart, pour stocker un graphique de sortie Altair. Par exemple, vous pouvez utiliser le bloc de code suivant pour créer un histogramme personnalisé à l'aide du jeu de données Titanic.

import altair as alt df = df.iloc[:30] df = df.rename(columns={"Age": "value"}) df = df.assign(count=df.groupby('value').value.transform('count')) df = df[["value", "count"]] base = alt.Chart(df) bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count')) rule = base.mark_rule(color='red').encode( x='mean(value):Q', size=alt.value(5)) chart = bar + rule
Pour créer une visualisation personnalisée :
  1. À côté du nœud contenant la transformation que vous souhaitez visualiser, sélectionnez le signe +.

  2. Choisissez Add analysis (Ajouter une analyse).

  3. Pour Analysis type (Type d'analyse), choisissez Custom Visualization (Visualisation personnalisée).

  4. Pour Analysis name (Nom de l'analyse), spécifiez un nom.

  5. Saisissez votre code dans la zone de code.

  6. Cliquez sur Preview (Aperçu) pour avoir un aperçu de votre visualisation.

  7. Sélectionnez Save (Enregistrer) pour créer une visualisation.

Si vous ne savez pas comment utiliser le package de visualisation Altair dans Python, vous pouvez utiliser des extraits de code personnalisés pour bien démarrer.

Data Wrangler possède une collection interrogeable d'extraits de visualisation. Pour utiliser un extrait de visualisation, choisissez Search example snippets (Rechercher dans les exemples d'extraits) et spécifiez une requête dans la barre de recherche.

L'exemple suivant utilise l'extrait de code Binned scatterplot (Diagramme de dispersion échelonné). Il représente un histogramme pour 2 dimensions.

Les extraits contiennent des commentaires qui vous aident à comprendre les modifications que vous devez apporter au code. Vous devez généralement spécifier les noms de colonnes de votre jeu de données dans le code.

import altair as alt # Specify the number of top rows for plotting rows_number = 1000 df = df.head(rows_number) # You can also choose bottom rows or randomly sampled rows # df = df.tail(rows_number) # df = df.sample(rows_number) chart = ( alt.Chart(df) .mark_circle() .encode( # Specify the column names for binning and number of bins for X and Y axis x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)), y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)), size="count()", ) ) # :Q specifies that label column has quantitative type. # For more details on Altair typing refer to # https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types