deepLearn

dlJoin

##set_deeplearn ##ai

Description

Joint la table de données et la table d'annotations. Idéal pour fusionner vos images avec leurs étiquettes avant d'entraîner votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). d'apprentissage profondL'apprentissage profond (Deep Learning) est une branche de l'IA utilisant des réseaux de neurones multicouches pour modéliser des données complexes et automatiser l'extraction de caractéristiques.. Comme on dit, l'union fait la force !

Syntaxe Officielle
proc cas;
deepLearn.dlJoin /
annotatedTable={name="nom_table_annotation"}
casOut={name="nom_table_sortie", replace=true}
id="colonne_identifiant"
joinType="APPEND" | "FULL" | "INNER" | "LEFT" | "RIGHT"
logLevel=entier
nThreads=entier
table={name="nom_table_donnees"};
run;

Paramètres Clés

Nom du paramètre Description
annotatedTable Spécifie le nom de la table en mémoire qui contient les données d'annotation (la table de droite) pour l'opération de jointure.
casOut Spécifie le nom de la nouvelle table de sortie qui contiendra les résultats de la jointure des tables.
id Spécifie la colonne identifiant qui est utilisée pour faire la correspondance et joindre la table de données et la table d'annotations.
joinType Spécifie comment les tables sont jointes. Les choix possibles sont APPEND, FULL, INNER, LEFT et RIGHT. La valeur par défaut est LEFT.
logLevel Spécifie le niveau de détail des messages de progression envoyés au client (0 à 3). 0 indique qu'aucun message n'est envoyé, 2 ajoute l'historique des itérations.
nThreads Spécifie le nombre de threads à utiliser pour l'opération.
table Spécifie le nom de la table en mémoire qui contient les données principales (la table de gauche) pour l'opération de jointure.

Préparation des données

Création des tables de test

Créons une petite table de données simulant des images et une table d'annotations simulant des étiquettes pour illustrer la jointure. Un jeu d'enfant !

1DATA mes_donnees;
2 id = 1; image_path = "img1.jpg"; OUTPUT;
3 id = 2; image_path = "img2.jpg"; OUTPUT;
4 id = 3; image_path = "img3.jpg"; OUTPUT;
5RUN;
6DATA mes_annotations;
7 id = 1; label = "chat"; OUTPUT;
8 id = 2; label = "chien"; OUTPUT;
9RUN;
10PROC CASUTIL;
11 load DATA=work.mes_donnees casout="mes_donnees" replace;
12 load DATA=work.mes_annotations casout="mes_annotations" replace;
13QUIT;

Exemples d'utilisation

Jointure gauche basique

Un petit exemple classique pour lier nos données à leurs étiquettes avec une jointure gauche (LEFT join).

1PROC CAS;
2 DEEPLEARN.dlJoin /
3 TABLE={name="mes_donnees"}
4 annotatedTable={name="mes_annotations"}
5 id="id"
6 joinType="LEFT"
7 casOut={name="donnees_jointes", replace=true};
8RUN;
9QUIT;
Résultat Attendu :
La table 'donnees_jointes' est créée en mémoire. Elle contiendra 3 lignes (les 3 images de 'mes_donnees'), mais la troisième ligne aura une valeur manquante pour la colonne 'label' car l'identifiant 3 n'existe pas dans la table d'annotations.
Jointure interne (INNER) avec paramètres avancés

Soyons un peu plus stricts et conservons uniquement les enregistrements ayant une correspondance dans les deux tables, tout en utilisant la compression pour la table de sortie.

1PROC CAS;
2 DEEPLEARN.dlJoin /
3 TABLE={name="mes_donnees", caslib="casuser"}
4 annotatedTable={name="mes_annotations", caslib="casuser"}
5 id="id"
6 joinType="INNER"
7 logLevel=2
8 casOut={name="donnees_jointes_inner", caslib="casuser", replace=true, compress=true};
9RUN;
10QUIT;
Résultat Attendu :
La table compressée 'donnees_jointes_inner' est générée, contenant exclusivement les 2 images de 'mes_donnees' qui ont une étiquette dans 'mes_annotations' (identifiants 1 et 2). Le niveau de journalisation 2 (logLevel=2) produira des messages de progression plus bavards dans le journal de SAS.