Regroupement HCPC de FactoMineR en langage R
L'essentiel de cette page
Le clustering par la méthode HCPC (Clustering Hiérarchique sur Analyse en Composantes Principales) est une méthode de clustering en 3 étapes :
ACP pour éliminer la variabilité parasite. Cela permet de regrouper les variables corrélées et de réduire le jeu de données à quelques variables non corrélées (composantes)
CAH pour identifier le nombre optimal de catégories
K-means pour effectuer un regroupement qui va consolider celui déduit du CAH.
Cette technique semble assez efficace, l'ACP servant de nettoyage au jeu de données. On va ainsi obtenir une présentation qui tente de maximiser la variance entre les groupes et de réduire celles intra-groupes.
library(FactoMineR)
# Charger votre ensemble de données
data(iris) # un exemple
data <- iris[,1:4]
# Effectuer une analyse factorielle
resultats_factorielle <- PCA(data)
# Effectuer une analyse HCPC sur les résultats de l'analyse factorielle
resultats_HCPC <- HCPC(resultats_factorielle)
# Afficher les résultats de l'analyse HCPC
print(resultats_HCPC)
On peut ensuite visualiser les clusters,par exemple avec la fonction fviz_cluster() :
plot(data[,1:2],col=rainbow(2)[factor(resultats_HCPC$data.clust$clust)],pch=16)
library(factoextra) ; library(ggplot2)
fviz_cluster(resultats_HCP, data, ellipse.type = "norm")
Approche classique avec plot()
Approche avec fviz_cluster() de {factoextra}
Enfin, on peut accéder aux descriptions des clusters de la façon suivante :
resultats_HCPC # pour voir le table des matières
resultats_HCPC[2] #pour voir la description des clusters par variables
Cela montre à quel point {FactoMineR} est performant pour gagner du temps.
On retiendra toutefois que tous ces bilans s'obtiennent quel que soit le package par des fonctions classiques.
Description par variables des clusters :
# Moyennes de clusters pour chaque variable
apply(data,2,function(x){by(x,resultats_HCPC$data.clust$clust,mean)})
# aggregate(data, by=list(Cluster=resultats_HCPC$data.clust$clust), summary)
#apply(data,2,function(x){by(x,resultats_HCPC$data.clust$clust,summary)})