gVarCluster

gvarcluster

##set_gvarcluster

Description

Un outil parfait pour débroussailler vos jeux de données, parce que même les variables  ont parfois besoin d'une thérapie de groupe pour mieux s'entendre

L'action gvarcluster permet d'effectuer un regroupement de variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. (clusteringLe clustering est une technique d'apprentissage non supervisé regroupant des données similaires en segments homogènes afin d'identifier des structures cachées sans étiquettes préalables.) et de fournir un réseau non orienté pour explorer les relations entre vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage.. Un outil parfait pour débroussailler vos jeux de données, parce que même les variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. ont parfois besoin d'une thérapie de groupe pour mieux s'entendre ! N'hésitez pas à consulter la documentation officielle pour tous les détails croustillants.

Syntaxe Officielle
proc cas;
gVarCluster.gvarcluster /
table={name="nom_table", caslib="nom_caslib"}
inputs={"var1", "var2", "var3"}
nominals={"var3"}
exact=false
rho=0.8
maxIter=50
maxSteps=3
minCluster=3
outCP={casOut={name="outcp_table", replace=true}, eps=0.001, list=false}
outEdge={name="outedge_table", replace=true}
outTree={name="outtree_table", replace=true}
outVert={name="outvert_table", replace=true}
select="NONE";
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les données à analyser.
inputs Spécifie les variables d'entrée à utiliser pour l'analyse de clustering.
nominals Définit les variables d'entrée qui doivent être traitées comme nominales (catégorielles).
exact Si défini sur true, effectue le clustering exact sans le prétraitement de simplification (seuillage de la covariance).
rho Détermine la séquence des paramètres de régulation (pénalités) utilisés lors des étapes séquentielles de clustering.
maxIter Spécifie le nombre maximum d'itérations pour l'estimation de la matrice de précision.
outCP Crée une table contenant une matrice symétrique des covariances entre les variables ainsi que des statistiques associées.
outEdge Génère une table décrivant les arêtes (liens) du réseau, contenant les colonnes _FROM_, _TO_ et _WEIGHT_. Idéal pour alimenter une action Hypergroup par la suite !
outTree Produit une table représentant le diagramme en arbre (dendrogramme) des résultats de votre clustering hiérarchique.
outVert Génère une table décrivant les sommets (nœuds) du réseau et leur taille, complémentaire à outEdge.

Préparation des données

Création des données de test

Nous allons créer une table CAS en mémoire avec deux groupes de variables fortement corrélées (x1,x2,x3 d'une part, et y1,y2 d'autre part) pour tester notre magnifique action de clustering.

1DATA mycas.testdata;
2 call streaminit(123);
3 DO i = 1 to 1000;
4 /* Groupe 1 */
5 x1 = rand('normal');
6 x2 = x1 + rand('normal') * 0.5;
7 x3 = x1 - rand('normal') * 0.5;
8 /* Groupe 2 */
9 y1 = rand('normal');
10 y2 = y1 + rand('normal') * 0.2;
11 /* Variable nominale parasite */
12 cat = rand('table', 0.3, 0.3, 0.4);
13 OUTPUT;
14 END;
15RUN;

Exemples d'utilisation

Exemple simple de clustering de variables

Un premier essai pour regrouper nos variables continues avec les paramètres par défaut. Simple, basique, efficace.

1PROC CAS;
2 gVarCluster.gvarcluster /
3 TABLE={name='testdata'}
4 inputs={'x1', 'x2', 'x3', 'y1', 'y2'}
5 outTree={name='tree_results', replace=true};
6QUIT;
Résultat Attendu :
L'action identifie correctement la structure de corrélation et regroupe (x1, x2, x3) ensemble, ainsi que (y1, y2). La table 'tree_results' contient la hiérarchie du clustering prête à être tracée.
Clustering avancé avec gestion des graphes (arêtes et sommets)

Ici on sort l'artillerie lourde : on inclut notre variable nominale 'cat', on désactive l'approximation avec 'exact=true', on modifie la pénalité 'rho', et on prépare les tables réseaux (nœuds et arêtes). L'astuce du chef pour préparer une belle visualisation réseau !

1PROC CAS;
2 gVarCluster.gvarcluster /
3 TABLE={name='testdata'}
4 inputs={'x1', 'x2', 'x3', 'y1', 'y2', 'cat'}
5 nominals={'cat'}
6 rho=0.8
7 maxIter=100
8 maxSteps=5
9 exact=true
10 outCP={casOut={name='cp_results', replace=true}, list=true, eps=1e-5}
11 outEdge={name='edge_results', replace=true}
12 outVert={name='vert_results', replace=true}
13 outTree={name='tree_results_adv', replace=true};
14QUIT;
Résultat Attendu :
L'algorithme s'exécute de manière exhaustive. Les tables 'edge_results' et 'vert_results' sont créées et structurées spécifiquement avec les colonnes _FROM_, _TO_, _WEIGHT_ pour les arêtes et la taille pour les sommets. Ces tables sont prêtes à être ingérées par des outils graphiques ou l'action tkhypgrp.