clustering

kClus

##set_clustering

Description

L'action kClus permet d'effectuer un 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. (classification non supervisée) en utilisant le célèbre algorithme des k-moyennes (k-meansLe clustering K-means (ou algorithme des k-moyennes) est une méthode d'apprentissage automatique non supervisé qui sert à diviser des données non étiquetées en $k$ groupes distincts (clusters) selon leurs similitudes.). C'est l'outil analytique parfait pour regrouper vos données en groupes homogènes, même quand vous ne savez pas encore à quoi ressemblent ces groupes ! Elle gère très bien 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. quantitatives (intervalle) et qualitatives (nominales) grâce à l'algorithme k-prototypesAlgorithme de partitionnement hybride combinant les k-means (données numériques) et les k-modes (données catégorielles). Il utilise une mesure de distance mixte pour regrouper des individus hétérogènes.. Cerise sur le gâteau, elle peut même estimer de manière totalement autonome le nombre optimal de clusters à votre place.

Syntaxe Officielle
proc cas;
clustering.kClus /
table={name="nom_table", caslib="nom_caslib"}
inputs={"var1", "var2"}
nominals={"var3"}
maxClusters=6
maxIters=10
standardize="STD"
estimateNClusters={method="ABC", minClusters=2}
output={casOut={name="table_sortie", replace=true}, copyVars="ALL"}
outStat={name="table_stats", replace=true};
run;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table de données en entrée à analyser. C'est ici que vous indiquez la matière première de votre clustering.
inputs Liste des variables à utiliser pour l'analyse. Ce sont les dimensions sur lesquelles l'algorithme va calculer les distances.
nominals Permet de spécifier explicitement quelles variables sont qualitatives/nominales. L'algorithme bascule alors sur le k-prototypes.
maxClusters Le nombre maximum de clusters à générer. Si vous savez déjà combien de tiroirs vous voulez, c'est ici (par défaut 6).
maxIters Nombre maximum d'itérations pour que l'algorithme converge (par défaut à 10). Soyez généreux si vos données sont complexes !
standardize Méthode pour standardiser les variables d'intervalle (ex: STD, RANGE, NONE). Fortement recommandé pour éviter qu'une variable avec de grandes valeurs n'écrase toutes les autres dans le calcul des distances.
estimateNClusters Le mode pilote automatique ! Permet à l'algorithme de deviner lui-même le nombre optimal de clusters en utilisant la méthode ABC (Aligned Box Criterion).
outStat Table de sortie contenant les statistiques des clusters et surtout les coordonnées de leurs centres (les fameux centroïdes).
output Paramètre pour générer la table de sortie contenant les données d'origine accompagnées de l'ID du cluster assigné pour chaque ligne.

Préparation des données

Chargement des données Iris

On charge le célébrissime jeu de données de Fisher sur les fleurs d'Iris dans la librairie CASUSER pour préparer notre clustering.

1DATA casuser.iris; SET sashelp.iris; RUN;

Exemples d'utilisation

Clustering simple des fleurs d'Iris en 3 groupes

On demande à la machine de trouver 3 clusters (correspondant idéalement aux 3 espèces d'Iris) en se basant sur les dimensions des pétales et sépales, tout en prenant soin de standardiser les données au préalable.

1PROC CAS; clustering.kClus / TABLE={name="iris", caslib="casuser"}, inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"}, maxClusters=3, standardize="STD", OUTPUT={casOut={name="iris_clustered", caslib="casuser", replace=true}, copyVars="ALL"}, outStat={name="iris_cluster_stats", caslib="casuser", replace=true}; RUN;
Résultat Attendu :
Une table 'iris_clustered' contenant toutes vos fleurs avec leur numéro de cluster associé, et une table 'iris_cluster_stats' résumant les centres des 3 clusters trouvés.
Clustering avancé avec estimation automatique du nombre de clusters

Ici on laisse l'algorithme faire tout le travail difficile : il va tester et deviner lui-même le meilleur nombre de clusters (entre 2 et 10 maximum) en utilisant la méthode %%ABC%% (Aligned Box Criterion). On lui donne aussi plus d'itérations pour garantir une bonne convergence.

1PROC CAS; clustering.kClus / TABLE={name="iris", caslib="casuser"}, inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"}, estimateNClusters={method="ABC", minClusters=2}, maxClusters=10, maxIters=50, standardize="STD", init="FORGY", distance="EUCLIDEAN", OUTPUT={casOut={name="iris_clustered_abc", caslib="casuser", replace=true}, copyVars="ALL"}, outStat={name="iris_abc_stats", caslib="casuser", replace=true}; RUN;
Résultat Attendu :
Le moteur SAS Viya teste plusieurs hypothèses et sélectionne le nombre optimal de groupes. Le journal de log affichera le nombre de clusters estimé, et les tables de sortie refléteront cette classification.