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-<
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.accountID
>-<region
>
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 colonnematch_id
est un identifiant arbitraire. Tous les enregistrements qui ont le mêmematch_id
ont été identifiés comme correspondant les uns aux autres. Les enregistrements avec desmatch_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
:
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).
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.
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 colonnelabel
.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.
Téléchargez le fichier d'étiquetage et labélisez le fichier comme décrit dans la section Étiquetage.
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é
-
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.
É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
etlabeling_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é aveccp1252
.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 colonnelabel
. 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 colonnelabel
.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 delabeling_set_id
. Par exemple, une étiquette « A » danslabeling_set_id
1 n'a aucune relation avec l'étiquette « A » danslabeling_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.