Correspondance d'enregistrements avec FindMatches AWS Lake Formation - AWS Glue

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.

Correspondance d'enregistrements avec FindMatches AWS Lake Formation

Note

La correspondance des enregistrements n'est actuellement pas disponible dans les régions suivantes dans la console AWS Glue : Moyen-Orient (EAU), Europe (Espagne) (eu-south-2) et Europe (Zurich) (eu-central-2).

AWS Lake Formation fournit des fonctionnalités de Machine Learning pour créer des transformations afin de nettoyer vos données. Il existe actuellement une transformation disponible nommée FindMatches. La transformation FindMatches vous permet d'identifier les enregistrements en double ou correspondants dans votre ensemble de données, même lorsque les enregistrements n'ont pas un identifiant unique commun et qu'aucun champ ne correspond exactement. Cela ne nécessite pas d'écrire du code ou de savoir comment fonctionne le Machine Learning. FindMatches peut être utile dans de nombreux problèmes différents, tels que :

  • Correspondance de clients : liaison des enregistrements clients entre différentes bases de données client, même lorsque de nombreux champs client ne correspondent pas exactement entre les bases de données (par exemple, orthographe de nom différentes, adresses différentes, données manquantes ou inexactes, etc.).

  • Correspondance de produits : correspondance des produits de votre catalogue par rapport à d'autres sources de produits, telle qu'un catalogue de produits par rapport au catalogue d'un concurrent, où les entrées sont structurées différemment.

  • Amélioration de la détection des fraudes : identification de comptes client en double, afin de déterminer quand un nouveau compte est (ou peut être) une correspondance pour un utilisateur frauduleux précédemment connu.

  • Autres problèmes de correspondance : correspondance d'adresses, de films, de listes de pièces, etc. En général, si un être humain peut regarder les lignes de votre base de données et déterminer qu'il existe une correspondance, il y a de très fortes chances que la transformation FindMatches puisse vous aider.

Vous pouvez créer ces transformations lorsque vous créez une tâche. La transformation que vous créez est basée sur un schéma de magasin de données source et des exemples de données du jeu de données source que vous labélisez (nous appelons ce processus l'« enseignement » d'une transformation). Les enregistrements que vous labélisez doivent être présents dans le jeu de données source. Dans ce processus, nous générons un fichier que vous labélisez et chargez ensuite pour que la transformation apprenne d'une manière ou d'une autre. Une fois que vous avez enseigné votre transformation, vous pouvez l'appeler à partir de votre tâche AWS Glue basée sur Spark (PySpark ou Scala Spark) et l'utiliser dans d'autres scripts avec un magasin de données source compatible.

Une fois la transformation créée, elle est stockée dans AWS Glue. Sur la console AWS Glue, vous pouvez gérer les transformations que vous créez. Dans le volet de navigation sous Intégration des données et ETL, Outils de classification des données > Correspondance des enregistrements, vous pouvez modifier et continuer à entraîner votre transformation de machine learning. Pour de plus amples informations sur la gestion des transformations sur la console, veuillez consulter Travailler avec l'apprentissage automatique transforme.

Note

Les tâches FindMatches de la version 2.0 de AWS Glue utilisent le aws-glue-temp-<accountID>-<region> du compartiment Amazon S3 pour stocker des fichiers temporaires pendant que la transformation traite des données. Vous pouvez supprimer ces données une fois l'exécution terminée, soit manuellement, soit en définissant une règle de cycle de vie Amazon S3.

Types de transformations Machine Learning

Vous pouvez créer des transformations de machine learning pour nettoyer vos données. Vous pouvez appeler ces transformations à partir de votre script ETL. Vos données sont transmises d'une transformation vers une transformation dans une structure de données appelée DynamicFrame, qui est une extension d'unDataFrame Apache Spark SQL. Le DynamicFrame contient vos données, et vous référencez son schéma pour traiter vos données.

Les types de transformations de machine learning suivants sont disponibles :

Recherche de correspondances

Recherche des enregistrements en double dans les données source. Vous enseignez cette transformation Machine Learning par l'étiquetage des ensembles de données afin d'indiquer les lignes qui correspondent. La transformation de machine learning apprend quelles lignes doivent être des correspondances à mesure que vous l'entraînez à l'aide d'exemples de données étiquetées. En fonction de la manière dont vous configurez la transformation, la sortie peut ressembler à l'une des suivantes :

  • Une copie de la table d'entrée et une colonne match_id renseignée avec des valeurs qui indiquent des ensembles d'enregistrements correspondants. La colonne match_id est un identifiant arbitraire. Tous les enregistrements qui ont le même match_id ont été identifiés comme correspondant les uns aux autres. Les enregistrements avec des match_id différents ne correspondent pas.

  • Une copie de la table d'entrée dans laquelle les lignes en double ont été retirées. Si plusieurs doublons sont trouvés, l'enregistrement avec la clé primaire la plus faible est conservé.

Rechercher des correspondances progressives

La transformation FindMatches peut également être configurée pour rechercher des correspondances entre les trames existantes et progressives et renvoyer en sortie une colonne contenant un ID unique par groupe de correspondances.

Pour de plus amples informations, veuillez consulter Recherche de correspondances progressives.

Utilisation de la transformation FindMatches

Vous pouvez utiliser la transformation FindMatches pour rechercher les enregistrements en double dans les données source. Un fichier d'étiquetage des données est généré ou fourni pour vous aider à enseigner à la transformation.

Note

Actuellement, les transformations FindMatches utilisant une clé de chiffrement personnalisée ne sont pas prises en charge dans les régions suivantes :

  • Asie-Pacifique (Osaka) - ap-northeast-3

Pour faire vos premiers pas avec la transformation FindMatches, suivez les étapes ci-dessous. Pour un exemple plus avancé et détaillé, consultez le blog AWS sur le Big Data : Harmonize data using AWS Glue and AWS Lake Formation FindMatches ML to build a customer 360 view.

Commencer à utiliser la transformation Recherche de correspondances

Suivez les étapes ci-après pour commencer à utiliser la transformation FindMatches :

  1. Créez une table dans AWS Glue Data Catalog pour les données source à nettoyer. Pour plus d'informations sur la façon de créer un crawler, veuillez consulter Travailler avec des crawlers sur la console AWS Glue.

    Si vos données source sont dans un fichier texte, par exemple un fichier CSV (valeurs séparées par une virgule), tenez compte des éléments suivants :

    • Placez votre fichier CSV des enregistrements d'entrée et le fichier d'étiquetage des données dans des dossiers distincts. Dans le cas contraire, le crawler AWS Glue pourrait les considérer comme plusieurs parties de la même table et créer des tables dans le catalogue de données de manière incorrecte.

    • Sauf si votre fichier CSV inclut des caractères ASCII uniquement, assurez-vous que l'encodage UTF-8 sans marque d'ordre d'octet (BOM) est utilisé pour les fichiers CSV. Microsoft Excel ajoute souvent une marque d'ordre d'octet (BOM) au début de fichiers CSV UTF-8. Pour la retirer, ouvrez le fichier CSV dans un éditeur de texte, puis réenregistrez le fichier au format UTF-8 sans marque d'ordre d'octet (BOM).

  2. Sur la console AWS Glue, créez une tâche, puis choisissez le type de transformation Recherche de correspondances.

    Important

    La table de sources de données que vous choisissez pour la tâche ne peut pas avoir plus de 100 colonnes.

  3. Demandez à AWS Glue de générer un fichier d'étiquetage des données en choisissant Generate labeling file (Générer un fichier d'étiquetage). AWS Glue effectue une première passe en regroupant les enregistrements similaires pour chaque labeling_set_id afin que vous puissiez vérifier ces regroupements. Vous labélisez les correspondances dans la colonne label.

    • Si vous disposez déjà d'un fichier d'étiquetage, c'est-à-dire un exemple d'enregistrements qui indiquent des lignes qui correspondent l'une à l'autre, téléchargez le fichier dans Amazon Simple Storage Service (Amazon S3). Pour en savoir plus sur le format du fichier d'étiquetage, consultez Format du fichier d'étiquetage. Passez à l'étape 4.

  4. Téléchargez le fichier d'étiquetage et labélisez le fichier comme décrit dans la section Étiquetage.

  5. Chargez le fichier étiqueté corrigé. AWS Glue exécute des tâches pour enseigner à la transformation comment trouver des correspondances.

    Sur la page de liste Machine learning transforms(Transformations Machine Learning), choisissez l'onglet History (Historique). Cette page indique quand AWS Glue effectue les tâches suivantes :

    • Importer des étiquettes

    • Exporter des étiquettes

    • Générer des étiquettes

    • Estimation de la qualité

  6. Pour créer une meilleure transformation, vous pouvez télécharger, étiqueter, puis charger de manière itérative le fichier étiqueté. Lors des premières exécutions, beaucoup d'enregistrements peuvent ne pas correspondre. Cependant, AWS Glue apprend dès lors que vous continuez à lui enseigner en vérifiant le fichier d'étiquetage.

  7. Évaluez et ajustez votre transformation en évaluant les performances et les résultats des correspondances trouvées. Pour de plus amples informations, veuillez consulter Réglage des transformations Machine Learning dans AWS Glue.

Étiquetage

Lorsque FindMatches génère un fichier d'étiquetage, les enregistrements sont sélectionnés à partir de votre table source. En fonction de l'entraînement précédent, FindMatches identifie les enregistrements les plus significatifs pouvant servir de base d'apprentissage.

L'acte d'étiquetage consiste à modifier un fichier d'étiquetage (nous vous suggérons d'utiliser une feuille de calcul Microsoft Excel, par exemple) et à ajouter des identifiants, ou étiquettes, dans la colonne label qui identifie les enregistrements correspondants ou non correspondants. Il est important d'avoir une définition claire et cohérente d'une correspondance dans vos données source. FindMatches apprend à partir des enregistrements que vous désignez comme correspondants (ou pas) et utilise vos décisions pour apprendre à rechercher des enregistrements en double.

Lorsqu'un fichier d'étiquetage est généré par FindMatches, environ 100 enregistrements sont générés. Ces 100 enregistrements sont généralement divisés en 10 jeux d'étiquetage, chaque jeu étant identifié par un labeling_set_id unique généré par FindMatches. Chaque jeu d'étiquetage doit être considéré comme une tâche d'étiquetage distincte indépendante des autres jeux d'étiquetage. Votre tâche consiste à identifier les enregistrements correspondants et non correspondants dans chaque jeu d'étiquetage.

Conseils pour modifier les fichiers d'étiquetage dans une feuille de calcul

Lorsque vous modifiez le fichier d'étiquetage dans une application de feuille de calcul, tenez compte des éléments suivants :

  • Le fichier peut ne pas s'ouvrir avec les champs de colonne entièrement développés. Vous devrez peut-être développer les colonnes label et labeling_set_id pour voir le contenu de ces cellules.

  • Si la colonne de clé primaire comporte un nombre, comme un type de données long, la feuille de calcul peut l'interpréter comme un nombre et modifier la valeur. La valeur de cette clé doit être traitée en tant que texte. Pour corriger ce problème, définissez le format Texte pour toutes les cellules de la colonne de clé primaire.

Format du fichier d'étiquetage

Le fichier d'étiquetage généré par AWS Glue pour l'apprentissage de votre transformation FindMatches utilise le format suivant. Si vous générez votre propre fichier pour AWS Glue, il doit également suivre ce format :

  • Il s'agit d'un fichier CSV (valeurs séparées par des virgules).

  • Il doit être encodé en UTF-8. Si vous modifiez le fichier à l'aide de Microsoft Windows, il peut être encodé avec cp1252.

  • Il doit se trouver dans un emplacement Amazon S3 pour sa transmission à AWS Glue.

  • Utilisez un nombre modéré de lignes pour chaque tâche d'étiquetage. Il est recommandé d'utiliser 10 à 20 lignes par tâche, même si 2 à 30 lignes par tâche sont acceptées. Les tâches de plus de 50 lignes ne sont pas recommandées et peuvent entraîner de mauvais résultats ou une défaillance du système.

  • Si vous disposez de données composées de paires d'enregistrements déjà marqués comme « correspondants » ou « non correspondants », cela ne pose pas de problème. Ces paires étiquetées peuvent être représentées sous forme de jeux d'étiquetage de taille 2. Dans ce cas, labélisez les deux enregistrements avec, par exemple, la lettre « A » s'ils correspondent, ou labélisez l'une avec la lettre « A » et l'autre avec la lettre « B » s'ils ne correspondent pas.

    Note

    Étant donné qu'il comporte des colonnes supplémentaires, le fichier d'étiquetage a un schéma différent d'un fichier qui contient vos données source. Placez le fichier d'étiquetage dans un dossier différent de celui de tout fichier CSV d'entrée de transformation, de sorte que le crawler AWS Glue n'en tienne pas compte lorsqu'il crée des tables dans le catalogue de données. Sinon, les tables créées par le crawler AWS Glue pourraient ne pas représenter correctement vos données.

  • Les deux premières colonnes (labeling_set_id, label) sont requises par AWS Glue. Les colonnes restantes doivent correspondre au schéma des données à traiter.

  • Pour chaque labeling_set_id, vous identifiez tous les enregistrements correspondants à l'aide de la même étiquette. Une étiquette est une chaîne unique placée dans la colonne label. Nous vous recommandons d'utiliser les étiquettes contenant des caractères simples, par exemple A, B, C, et ainsi de suite. Les étiquettes sont sensibles à la casse et sont saisies dans la colonne label.

  • Les lignes qui contiennent le même labeling_set_id et la même étiquette sont considérées comme formant une correspondance.

  • Les lignes qui contiennent le même labeling_set_id et une étiquette différente sont considérées comme ne formant pas une correspondance.

  • Les lignes qui contiennent un labeling_set_id différent sont considérées comme ne fournissant aucune information pour ou contre la correspondance.

    Voici un exemple d'étiquetage de données :

    labeling_set_id étiquette first_name last_name Anniversaire
    ABC123 A John Doe 04/01/1980
    ABC123 B Jane Smith 04/03/1980
    ABC123 A Johnny Doe 04/01/1980
    ABC123 A Jon Doe 04/01/1980
    DEF345 A Richard Jones 12/11/1992
    DEF345 A Rich Jones 11/12/1992
    DEF345 B Sarah Jones 12/11/1992
    DEF345 C Richie Jones Jr. 05/06/2017
    DEF345 B Sarah Jones-Walker 12/11/1992
    GHI678 A Robert Miller 1/3/1999
    GHI678 A Bob Miller 1/3/1999
    XYZABC A William Robinson 2/5/2001
    XYZABC B Andrew Robinson 2/5/1971
  • Dans l'exemple ci-dessus, nous identifions John/Johnny/Jon Doe comme étant une correspondance et nous enseignons au système que ces enregistrements ne correspondent pas à Jane Smith. En parallèle, nous apprenons au système que Richard et Rich Jones sont la même personne, mais que ces enregistrements ne correspondent pas à Sarah Jones/Jones-Walker et Richie Jones Jr.

  • Comme vous pouvez le voir, la portée des étiquettes est limitée à l'élément labeling_set_id. Ainsi, les étiquettes ne dépassent pas les limites de labeling_set_id. Par exemple, une étiquette « A » dans labeling_set_id 1 n'a aucune relation avec l'étiquette « A » dans labeling_set_id 2.

  • Si un enregistrement n'a aucune correspondance dans un jeu d'étiquettes, affectez-lui une étiquette unique. Par exemple, Jane Smith ne correspond à aucun enregistrement du jeu d'étiquettes ABC123, c'est donc le seul enregistrement de ce jeu d'étiquettes avec l'étiquette de B.

  • Le jeu d'étiquettes « GHI678 » montre qu'un jeu d'étiquettes peut se composer de seulement deux enregistrements portant la même étiquette pour montrer qu'ils correspondent. De même, « XYZABC » montre deux enregistrements portant des étiquettes différentes pour montrer qu'ils ne correspondent pas.

  • Notez que parfois un jeu d'étiquetage peut ne pas contenir de correspondances (c'est-à-dire que vous donnez à chaque enregistrement du jeu d'étiquetage une étiquette différente) ou qu'un jeu d'étiquetage peut être globalement « identique » (vous leur donnez le même label). Ceci est correct tant que vos jeux d'étiquetage contiennent collectivement des exemples d'enregistrements qui sont et ne sont pas « identiques » selon vos critères.

Important

Confirmez que le rôle IAM que vous transmettez à AWS Glue a accès au compartiment Amazon S3 qui contient le fichier d'étiquetage. Par convention, les stratégies AWS Glue accordent une autorisation sur les enregistrements ou les dossiers Amazon S3 dont les noms sont préfixés avec aws-glue-. Si vos fichiers d'étiquetage se trouvent dans un emplacement différent, ajoutez l'autorisation sur cet emplacement dans le rôle IAM.