

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.

# Record correspondant à AWS Lake Formation FindMatches
<a name="machine-learning"></a>

**Note**  
Le rapprochement des records n'est actuellement pas disponible dans les régions suivantes de la AWS Glue console : Moyen-Orient (Émirats arabes unis), Europe (Espagne), Asie-Pacifique (Jakarta) et Europe (Zurich).

AWS Lake Formation fournit des fonctionnalités d'apprentissage automatique pour créer des transformations personnalisées afin de nettoyer vos données. Il existe actuellement une transformation disponible nommée FindMatches. La FindMatches transformation vous permet d'identifier les enregistrements dupliqués ou correspondants dans votre ensemble de données, même lorsque les enregistrements n'ont pas d'identifiant unique commun et qu'aucun champ ne correspond exactement. Cela ne nécessitera pas d'écrire de code ou de connaître le fonctionnement de l'apprentissage automatique. FindMatches peut être utile pour résoudre de nombreux problèmes, 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 pouvait examiner les lignes de votre base de données et déterminer si elles correspondent, il y a de fortes chances que la FindMatches transformation 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. Après avoir enseigné votre transformation, vous pouvez l'appeler depuis votre AWS Glue tâche basée sur Spark (PySpark ou Scala Spark) et l'utiliser dans d'autres scripts dotés d'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 [Utilisation de transformations du machine learning](console-machine-learning-transforms.md). 

**Note**  
AWS Glueles FindMatches tâches de la version 2.0 utilisent le compartiment Amazon S3 `aws-glue-temp-<accountID>-<region>` 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
<a name="machine-learning-transforms"></a>

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 passent d'une transformation à l'autre dans une structure de données appelée a *DynamicFrame*, qui est une extension d'un SQL Apache Spark`DataFrame`. 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 plus d'informations, voir : [Recherche de correspondances progressives](machine-learning-incremental-matches.md)

### Utilisation de la FindMatches transformation
<a name="machine-learning-find-matches"></a>

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 commencer la FindMatches transformation, vous pouvez suivre les étapes ci-dessous. Pour un exemple plus avancé et détaillé, consultez le **blog AWS Big Data** : [Harmonize data using AWS Glue and AWS Lake Formation FindMatches ML to build a customer 360 view](https://aws.amazon.com/blogs/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
<a name="machine-learning-find-mathes-workflow"></a>

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

1. Créez une table dans le 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](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html).

   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)**. 

1. 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.

1. 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](#machine-learning-labeling-file). Passez à l'étape 4.

1. Téléchargez le fichier d'étiquetage et labélisez le fichier comme décrit dans la section [Étiquetage](#machine-learning-labeling).

1. 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é**

1. 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.

1. É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](add-job-machine-learning-transform-tuning.md).

#### Étiquetage
<a name="machine-learning-labeling"></a>

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
<a name="machine-learning-labeling-tips"></a>

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
<a name="machine-learning-labeling-file"></a>

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 :    
<a name="table-labeling-data"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/machine-learning.html)
+ Dans l'exemple ci-dessus, nous identifions John/Johnny/Jon Doe as being a match and we teach the system that these records do not match Jane Smith. Separately, we teach the system that Richard and Rich Jones are the same person, but that these records are not a match to 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 portant l'étiquette B.
+ Le jeu d'étiquettes « GHI678 » indique qu'un ensemble d'étiquettes peut être composé uniquement de deux enregistrements auxquels est attribuée 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.