Classification Hiérarchique sur Composantes Principales

L'article suivant décrit en détail l'intérêt d'une classification hiérarchique combinée avec une analyse factorielle. Il donne également des exemples d'utilisation.
Husson, F., Josse, J. & Pagès J. (2010). Principal component methods - hierarchical clustering - partitional clustering: why would we need to choose for visualizing data?. Rapport technique.

On va réaliser une classification hiérarchique sur les composantes principales d'une analyse factorielle. Le tableau de données utilisé est le tableau "tea" utilisé pour illustrer l'Analyse des Correspondances Multiples.

Objectifs

On veut regrouper les 300 individus du tableau de données en quelques classes qcorrespondant à différents profils de consommation.

Les variables étant qualitatives, un ACM sera d'abord réalisée puis les coordonnées des individus sur les composantes principales seront utilisées pour la classification hiérarchique. l'ACM est utilisée en amont de la classification pour transformer des variables qualitatives en variables continues.

HCPC

La première étape consiste à réaliser l'ACM du tableau de données.

Comme précédemment (voir la page ACM), on réalise l'ACM en n'utilisant comme variables actives que celles qui correspondant à une attitude de consommation.
On n'utilise pas les derniers axes de l'ACM car on les considère comme du bruit qui rendrait la classification moins stable. On ne garde donc que les 20 premiers axes de l'ACM qui résument 87% de l'information.

Tapez : library(FactoMineR)
data(tea)
res.mca = MCA(tea, ncp=20, quanti.sup=19, quali.sup=c(20:36), graph=FALSE) #tea: le tableau de donnée utilisé
#ncp: le nombre de dimensions gardé dans les résultats
#quanti.sup: vecteur des index des variables continues illustratives
#quali.sup: vecteur des index des variables qualitatives illustratives
#graph: TRUE ou FALSE selon que l'on veut ou non afficher les graphes

On réalise ensuite la classification hiérarchique : res.hcpc = HCPC(res.mca) #res.mca: le résultat d'une ACM

L'arbre hiérarchique suggère une partition en trois classes :

Hierarchical Clustering on Principal Components: hierarchical tree cliquez pour voir Hierarchical Clustering on Principal Components: hierarchical tree cut into three clusters

On obtient un arbre hiérarchique tridimensionnel et un plan factoriel où les individus sont coloriés en fonction de la classe à laquelle ils appartiennent.

Hierarchical Clustering on Principal Components: 3D hierarchical tree cliquez pour voir Hierarchical Clustering on Principal Components: factorial map of the individuals coloured by cluster

Description des classes

Les classes peuvent être décrites par :

  • Les variables et/ou des modalités
  • Les axes factoriels
  • Les individus

Description par Variables et/ou modalités

res.hcpc$desc.var$test.chi2
res.hcpc$desc.var$category

Hierarchical Clustering on Principal Components: chi² test cliquez pour voir Hierarchical Clustering on Principal Components: description of the third cluster by the categories

Les variables "where" et "how" sont celles qui caractérisent le plus la partition en trois classes.

Chaque classe est caractérisée par une modalité des variables "where" et "how". Seules les modalités dont la probabilité critique est inférieure à 0.02 sont utilisées. Par exemple, les individus qui appartiennent à la troisième classe achètent du thé en sac et en vrac dans des chaînes de magasins et dans des magasins de thé.

description par les composantes principales

res.hcpc$desc.axes

Hierarchical Clustering on Principal Components: description by factorial axes cliquez pour voir

Les individus de la classe 1 possèdent de faibles coordonnées sur les deux premiers axes. Ceux de la classe 2 possèdent des coordonnées élevées sur le deuxième axe et les individus de la classe 3 possèdent des coordonnées élevées sur le premier axe. Ici, une dimension est gardée uniquement si sa valeur test est supérieure à 3.

description par les individus

Il existe deux types d'individus spécifiques pour décrire les classes :

  • Les individus les plus proches du centre de classe
  • Les individus les plus éloignés des centres des autres classes

res.hcpc$desc.ind

Hierarchical Clustering on Principal Components: individuals closest to their cluster's centercliquez pour voir Hierarchical Clustering on Principal Components: individuals farest from other clusters' center

L'individu 285 appartient à la classe 1 et est le plus proche du centre de cette classe.
L'individu 82 appartient à la classe 1 et est le plus éloigné des centres des classes 2 et 3.

Pour aller plus loin

Transformation de variables continues en variables qualitatives

Pour découper une variable continue en classes : vari = tea[,19]
res.hcpc = HCPC(vari, iter.max=10) max.cla=unlist(by(res.hcpc$data.clust[,1], res.hcpc$data.clust[,2], max))
breaks = c(min(vari), max.cla)
aaQuali = cut(vari, breaks, include.lowest=TRUE)
summary(aaQuali)
#iter.max: Le nombre maximal d'itérations pour la consolidation

Pour découper plusieurs variables continues en classes : data.cat = data
for (i in 1:ncol(data.cat)){
vari = data.cat[,i]
res.hcpc = HCPC(vari, nb.clust=-1, graph=FALSE)
maxi = unlist(by(res.hcpc$data.clust[,1], res.hcpc$data.clust[,2], max))
breaks = c(min(vari), maxi)
aaQuali = cut(vari, breaks, include.lowest=TRUE)
data.cat[,i] = aaQuali
}
#data: tableau de données avec les variables continues à découper en classes