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.
| Paramètre | Description |
|---|---|
| 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. |
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.
| 1 | DATA mycas.data_to_annotate; |
| 2 | INPUT id feature1 feature2; |
| 3 | DATALINES; |
| 4 | 1 10 20 |
| 5 | 2 12 22 |
| 6 | 3 15 25 |
| 7 | 4 18 28 |
| 8 | ; |
| 9 | RUN; |
| 10 | |
| 11 | DATA mycas.annotations; |
| 12 | INPUT id $ label $; |
| 13 | DATALINES; |
| 14 | 1 A |
| 15 | 2 B |
| 16 | 3 A |
| 17 | ; |
| 18 | RUN; |
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.
| 1 | PROC 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}; |
| 7 | RUN; |
| 8 | QUIT; |
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.
| 1 | PROC 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}; |
| 8 | RUN; |
| 9 | QUIT; |
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.
| 1 | /* Supposons qu'une annotation existe pour un id non présent dans la table de données */ |
| 2 | DATA mycas.annotations_extra; |
| 3 | SET mycas.annotations; |
| 4 | OUTPUT; |
| 5 | id='5'; label='C'; OUTPUT; |
| 6 | RUN; |
| 7 | |
| 8 | PROC 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}; |
| 15 | RUN; |
| 16 | QUIT; |
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...
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...
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...