Analyse et visualisation - Amazon SageMaker

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.

Histogram

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'exemple suivant illustre le même diagramme 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. Le RandomForestRegressor de Spark est utilisé pour entraîner un modèle pour les problèmes de régression. Le RandomForestClassifier 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.

Voici l'interface utilisateur de la fonction Quick Model.

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'au nombre max 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.

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) – La 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

Utilisez l'onglet Code pour créer des visualisations personnalisées. Votre jeu de données, après avoir subi la dernière transformation ajoutée, est disponible en tant que Pandas DataFrame dans ce bloc de code via la variable df.

Vous devez fournir une variable de sortie, chart, pour stocker un graphique de sortie Altair. Par exemple, voici un exemple de bloc de code qui peut être utilisé pour générer 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. Dans la zone Visualize (Visualisation) de Data Wrangler, choisissez l'onglet Code.

  2. Donnez à votre visualisation un Name (Nom).

  3. Saisissez votre code dans la zone de code.

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

  5. Cliquez sur Add Visualization (Ajouter une visualisation) pour ajouter votre visualisation.