kClus
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.
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.
| 1 | DATA 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.
| 1 | PROC 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 :
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.
| 1 | PROC 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; |