activeLearn

alJoin

L'essentiel
L'essentiel
Au sein des projets d'intelligence artificielle, la consolidation des jeux d'apprentissage est une étape délicate assurée par l'action alJoin. Appartenant à la suite activeLearn, cette fonctionnalité est spécifiquement conçue pour réconcilier les observations brutes avec leurs annotations respectives (labels), transformant ainsi des données éparses en un dataset structuré prêt pour l'entraînement supervisé. En s'appuyant sur des clés d'identification uniques pour opérer des jointures précises entre les tables, elle garantit l'intégrité des données injectées dans vos modèles. Cette page regroupe les réponses aux questions techniques fréquentes concernant la syntaxe de fusion, la gestion des types de jointure et l'optimisation des performances lors de cette phase critique de préparation.

Description

L'action `alJoin` du set d'actions `activeLearn` est un outil essentiel pour fusionner des données brutes avec leurs annotations correspondantes. Ce processus est une étape fondamentale dans de nombreux flux de travail d'apprentissage automatique, en particulier pour l'apprentissage supervisé où les étiquettes (annotations) sont nécessaires pour entraîner un modèle. L'action permet de combiner une table de données principale avec une table d'annotations en se basant sur un identifiant commun, offrant plusieurs types de jointures (interne, externe, etc.) pour s'adapter à divers scénarios de préparation de données.

activeLearn.alJoin / annotatedTable={<table-source>} casOut={<table-de-sortie>} id="variable_id" [joinType="APPEND" | "FULL" | "INNER" | "LEFT" | "RIGHT"] [logLevel=entier] table={<table-source>};
Paramètres
ParamètreDescription
annotatedTable Spécifie la table CAS en mémoire qui contient les données d'annotation à joindre. C'est la table de droite dans la jointure.
casOut Spécifie la table de sortie pour stocker les résultats de la jointure.
id Spécifie la colonne d'identification utilisée comme clé pour joindre la table de données et la table d'annotation.
joinType Spécifie le type de jointure à effectuer. Les options sont APPEND, INNER (interne), LEFT (gauche), RIGHT (droite), et FULL (complète). La valeur par défaut est 'LEFT'.
logLevel Spécifie le niveau de détail des messages de progression. 0 (par défaut) pour aucun message, 1 pour les messages de début/fin, 2 pour l'historique des itérations.
table Spécifie la table CAS en mémoire qui contient les données principales à joindre. C'est la table de gauche dans la jointure.
Préparation des Données Voir la fiche de ce code dataprep
Création de données pour la jointure

Ce bloc de code crée deux tables dans la caslib `mycas`. La première, `data_to_annotate`, contient les données brutes avec un identifiant. La seconde, `annotations`, contient les étiquettes correspondantes pour certains des identifiants.

Copié !
1DATA mycas.data_to_annotate;
2 INPUT id feature1 feature2;
3 DATALINES;
41 10 20
52 12 22
63 15 25
74 18 28
8;
9RUN;
10 
11DATA mycas.annotations;
12 INPUT id $ label $;
13 DATALINES;
141 A
152 B
163 A
17;
18RUN;

Exemples

Cet exemple effectue une jointure à gauche par défaut (`joinType='LEFT'`) entre la table de données et la table d'annotations. Toutes les lignes de la table de gauche (`data_to_annotate`) sont conservées.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 ACTION activeLearn.alJoin /
3 TABLE={name='data_to_annotate'}
4 annotatedTable={name='annotations'}
5 id='id'
6 casOut={name='joined_data_left', replace=true};
7RUN;
8QUIT;
Résultat :
La table `joined_data_left` est créée. Elle contient toutes les lignes de `data_to_annotate` avec les étiquettes correspondantes de `annotations`. La ligne avec id=4 aura une valeur manquante pour la colonne 'label' car elle n'existe pas dans la table d'annotations, ce qui est le comportement attendu d'une jointure à gauche.

Cet exemple utilise une jointure interne (`joinType='INNER'`) pour ne conserver que les observations qui ont une correspondance dans les deux tables. C'est utile pour créer un jeu de données d'entraînement ne contenant que des exemples étiquetés.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 ACTION activeLearn.alJoin /
3 TABLE={name='data_to_annotate'}
4 annotatedTable={name='annotations'}
5 id='id'
6 joinType='INNER'
7 casOut={name='joined_data_inner', replace=true};
8RUN;
9QUIT;
Résultat :
La table `joined_data_inner` est créée. Elle ne contient que les lignes pour lesquelles un identifiant commun existe dans les deux tables (`data_to_annotate` et `annotations`). Par conséquent, la ligne avec id=4 est exclue du résultat final, car elle n'a pas d'annotation correspondante.

Cet exemple montre comment effectuer une jointure complète (`joinType='FULL'`) pour conserver toutes les lignes des deux tables, qu'elles aient ou non une correspondance. Cela peut être utile pour un audit complet des données et des annotations.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1/* Supposons qu'une annotation existe pour un id non présent dans la table de données */
2DATA mycas.annotations_extra;
3 SET mycas.annotations;
4 OUTPUT;
5 id='5'; label='C'; OUTPUT;
6RUN;
7 
8PROC CAS;
9 ACTION activeLearn.alJoin /
10 TABLE={name='data_to_annotate'}
11 annotatedTable={name='annotations_extra'}
12 id='id'
13 joinType='FULL'
14 casOut={name='joined_data_full', replace=true};
15RUN;
16QUIT;
Résultat :
La table `joined_data_full` est créée. Elle contient toutes les lignes des deux tables. La ligne avec id=4 aura une valeur manquante pour 'label', et une nouvelle ligne avec id=5 sera ajoutée avec des valeurs manquantes pour 'feature1' et 'feature2'.

FAQ

Quel est le but de l'action alJoin ?
Quels sont les paramètres obligatoires pour l'action alJoin ?
À quoi sert le paramètre `id` dans l'action alJoin ?
Quels types de jointures le paramètre `joinType` supporte-t-il et quelle est sa valeur par défaut ?
Que fait le paramètre `logLevel` ?

Scénarios associés

Cas d'usage
Scénario Standard : Enrichissement de données client avec des réponses à un sondage

Une équipe marketing souhaite analyser les résultats d'un sondage de satisfaction. L'objectif est de joindre les réponses du sondage à la table client principale pour enrichir l...

Cas d'usage
Scénario Cas Limite : Réconciliation de données avec types d'ID différents et doublons

Un data scientist doit auditer la qualité des données de ventes et de retours. La table des ventes utilise un ID produit numérique, tandis que celle des retours utilise un ID pr...

Cas d'usage
Scénario Performance : Jointure sur des données IoT à haute volumétrie

Dans un contexte de maintenance prédictive industrielle, il est nécessaire de joindre un très grand volume de lectures de capteurs (des millions d'enregistrements) avec une tabl...