gvarcluster
Description
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.
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.
| 1 | DATA 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; |
| 15 | RUN; |
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.
| 1 | PROC CAS; |
| 2 | gVarCluster.gvarcluster / |
| 3 | TABLE={name='testdata'} |
| 4 | inputs={'x1', 'x2', 'x3', 'y1', 'y2'} |
| 5 | outTree={name='tree_results', replace=true}; |
| 6 | QUIT; |
Résultat Attendu :
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 !
| 1 | PROC 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}; |
| 14 | QUIT; |