Articles - Méthodes des Composantes Principales dans R: Guide Pratique

Classification Hiérarchique sur Composantes Principales: L'Essentiel

La classification hiérarchique (ou hierarchical clustering en anglais) est l’une des approches les plus importantes pour l’exploration des données multivariées. L’objectif est d’identifier des groupes (i.e., clusters) d’objets similaires dans un jeu de données. Pour en savoir plus sur le clustering, vous pouvez lire notre livre intitulé “Practical Guide to Cluster Analysis in R” (https://goo.gl/DmJ5y5).

Brièvement, les deux stratégies de classification les plus courantes sont:

  1. La classification ascendante hiérarchique (CAH), utilisée pour identifier des groupes d’observations similaires dans un jeu de données.
  2. Le Partitionnement en K-moyennes (k-means en anglais), utilisé pour diviser un jeu de données en plusieurs groupes.

L’approche HCPC (Hierarchical Clustering on Principal Components ou Classification Hiérarchique sur Composantes Principales) nous permet de combiner les trois méthodes standards utilisées dans les analyses de données multivariées (Husson, Josse, and J. 2010):

  1. Les Méthodes des composantes principales (ACP, AFC, ACM, AFDM, AFM),
  2. La classification ascendante hiérarchique et
  3. Le partitionnement en k-moyennes.

Ce chapitre décrit POURQUOI et COMMENT combiner les méthodes des composantes principales avec la classification hiérarchique. Enfin, nous démontrons comment calculer et visualiser le HCPC à l’aide du logiciel R et le package FactoMineR.

Contents:


Pourquoi HCPC??

Le HCPC est utile dans au moins trois situations.

Cas 1: variables continues

Dans la situation où vous disposez d’un grand jeu de données multivariées contenant plusieurs variables continues, l’analyse en composantes principales (ACP) peut être utilisée pour réduire la dimension des données en quelques variables continues contenant les informations les plus importantes dans les données. Ensuite, vous pouvez effectuer la classification sur les résultats de l’ACP.

L’étape ACP peut être considérée comme une étape réduisant le bruit de fond dans les données, ce qui peut conduire à une classification plus stable.

Cas 2: Classification des données catégorielles

Afin d’effectuer une classification sur des données catégorielles, il faudrait d’abord appliquer:

  • L’analyse Factorielle des Correspondances (AFC) dans le cas d’un tableau de contingence formé par deux variables catégorielles.
  • L’analyse des Correspondances Multiples (ACM), pour les données à plus de deux variables catégorielles.

L’AFC et l’ACM permettent, dans ce cas, de transformer les variables qualitatives en variables quantitatives (axes principaux).

Ensuite, la classification est appliquée sur le résultat de l’AFC ou de l’ACM en fonction du type de données.

Cas 3: Classification sur données mixtes

Lorsque vous disposez de données mixtes de variables continues et catégorielles, vous pouvez d’abord effectuer l’AFDM (analyse factorielle des données mixtes) ou l’AFM (analyse factorielle multiple). Ensuite, vous pouvez appliquer la classification sur les résultats de l’AFDM / l’AFM.

Algorithme de la méthode HCPC

  1. Effectuez une ACP, AFC, ACM, AFDM ou AFM en fonction du type de données. Choisissez le nombre de dimensions à retenir en spécifiant l’argument ncp. La valeur par défaut est 5.

  2. Appliquez la classification hiérarchique sur le résultat de l’étape 1.

  3. Choisissez le nombre de groupes en fonction du dendrogramme obtenu à l’étape 2. Un partitionnement initial est effectué.

  4. Effectuez le k-means pour améliorer le partitionnement initiale obtenu à l’étape 3.

Calcul

Packages R

Installation:

install.packages(c("FactoMineR", "factoextra"))

Chargez les packages:

library("FactoMineR")
library("factoextra")

Fonction R

Fonction HCPC() [dans le package FactoMineR]

Format simplifié:

HCPC (res, nb.clust = 0, graph = TRUE)
  • res: Résultat d’une analyse factorielle ou un data frame.
  • nb.clust: Le nombre de clusters (groupes) à générer.
  • graph: si TRUE, les graphiques sont affichés

Cas de variables continues

  1. Faire une ACP
  2. Appliquer la classification hiérarchique sur le résultat de l’ACP
library(FactoMineR)
# 1. ACP 
res.pca <- PCA(USArrests, ncp = 3, graph = FALSE)
# 2. HCPC
res.hcpc <- HCPC(res.pca, graph = FALSE)
  1. Visualiser le dendrogramme généré par la classification. Fonction R: fviz_dend() [factoextra]:
fviz_dend(res.hcpc, 
          cex = 0.7,                     # Taille du text
          palette = "jco",               # Palette de couleur ?ggpubr::ggpar
          rect = TRUE, rect_fill = TRUE, # Rectangle autour des groupes
          rect_border = "jco",           # Couleur du rectangle
          labels_track_height = 0.8      # Augment l'espace pour le texte
          )

Le dendrogramme suggère une solution à 4 groupes.

  1. Visualiser les individus et colorer par groupes. Fonction R: fviz_cluster() [factoextra].
fviz_cluster(res.hcpc,
             repel = TRUE,            # Evite le chevauchement des textes
             show.clust.cent = TRUE, # Montre le centre des clusters
             palette = "jco",         # Palette de couleurs, voir ?ggpubr::ggpar
             ggtheme = theme_minimal(),
             main = "Factor map"
             )

  1. Graphique 3D combinant la classification hiérarchique et le plan des facteurs. Fonction R: plot().
# Principal components + tree
plot(res.hcpc, choice = "3D.map")

  1. Contenu du résultat de la fonction HCPC():
  • data.clust: Données d’origine avec une colonne supplémentaire appelée clust contenant les groupes.
  • desc.var: les variables décrivant les groupes
  • desc.ind: les individus les plus typiques de chaque groupes
  • desc.axes: les axes décrivant les groupes

  • Données d’origine avec la colonne class:

head(res.hcpc$data.clust, 10)
##             Murder Assault UrbanPop Rape clust
## Alabama       13.2     236       58 21.2     3
## Alaska        10.0     263       48 44.5     4
## Arizona        8.1     294       80 31.0     4
## Arkansas       8.8     190       50 19.5     3
## California     9.0     276       91 40.6     4
## Colorado       7.9     204       78 38.7     4
## Connecticut    3.3     110       77 11.1     2
## Delaware       5.9     238       72 15.8     2
## Florida       15.4     335       80 31.9     4
## Georgia       17.4     211       60 25.8     3
  • Variables quantitatives décrivant le plus chaque cluster:
res.hcpc$desc.var$quanti

Ici, nous ne montrons que quelques colonnes d’intérêt: “Moyenne dans la catégorie”, “Moyenne globale”, “p.value”

## $`1`
##          Mean in category Overall mean  p.value
## UrbanPop             52.1        65.54 9.68e-05
## Murder                3.6         7.79 5.57e-05
## Rape                 12.2        21.23 5.08e-05
## Assault              78.5       170.76 3.52e-06
## 
## $`2`
##          Mean in category Overall mean p.value
## UrbanPop            73.88        65.54 0.00522
## Murder               5.66         7.79 0.01759
## 
## $`3`
##          Mean in category Overall mean  p.value
## Murder               13.9         7.79 1.32e-05
## Assault             243.6       170.76 6.97e-03
## UrbanPop             53.8        65.54 1.19e-02
## 
## $`4`
##          Mean in category Overall mean  p.value
## Rape                 33.2        21.23 8.69e-08
## Assault             257.4       170.76 1.32e-05
## UrbanPop             76.0        65.54 2.45e-03
## Murder               10.8         7.79 3.58e-03

De le résultat ci-dessus, on constate que:

  • les variables UrbanPop, Murder, Rape et Assault sont les plus significativement associées au cluster 1. Par exemple, la valeur moyenne de la variable Assault dans le cluster 1 est de 78.53, ce qui est inférieure à la moyenne globale (170.76) dans tous les clusters. Par conséquent, on peut conclure que le cluster 1 se caractérise par un faible taux de la variable Assault par rapport à tous les autres clusters.

  • les variables UrbanPop et Murder sont les plus significativement associées au cluster 2.

…etc …

  • Axes principaux associées aux clusters:
res.hcpc$desc.axes$quanti
## $`1`
##       Mean in category Overall mean  p.value
## Dim.1            -1.96    -5.64e-16 2.27e-07
## 
## $`2`
##       Mean in category Overall mean  p.value
## Dim.2            0.743    -5.37e-16 0.000336
## 
## $`3`
##       Mean in category Overall mean  p.value
## Dim.1            1.061    -5.64e-16 3.96e-02
## Dim.3            0.397     3.54e-17 4.25e-02
## Dim.2           -1.477    -5.37e-16 5.72e-06
## 
## $`4`
##       Mean in category Overall mean  p.value
## Dim.1             1.89    -5.64e-16 6.15e-07

Les résultats ci-dessus indiquent que les individus dans les groupes 1 et 4 ont des coordonnées élevées sur l’axes 1. Les individus du groupe 2 ont des coordonnées élevées sur le deuxième axe. Les individus appartenant au troisième groupe ont des coordonnées élevées sur les axes 1, 2 et 3.

  • Individus représentatifs de chaque groupe:
res.hcpc$desc.ind$para
## Cluster: 1
##         Idaho  South Dakota         Maine          Iowa New Hampshire 
##         0.367         0.499         0.501         0.553         0.589 
## -------------------------------------------------------- 
## Cluster: 2
##         Ohio     Oklahoma Pennsylvania       Kansas      Indiana 
##        0.280        0.505        0.509        0.604        0.710 
## -------------------------------------------------------- 
## Cluster: 3
##        Alabama South Carolina        Georgia      Tennessee      Louisiana 
##          0.355          0.534          0.614          0.852          0.878 
## -------------------------------------------------------- 
## Cluster: 4
##   Michigan    Arizona New Mexico   Maryland      Texas 
##      0.325      0.453      0.518      0.901      0.924

Pour chaque groupe, les 5 meilleurs individus les plus proches du centre du cluster sont affichés. Ces individus sont appelés paragones. La distance entre chaque individu et le centre du groupe est fournie. Par exemple, les individus représentatifs pour le groupe 1 inclus: Idaho, South Dakota, Maine, Iowa et New Hampshire.

Cas des variables catégorielles

  1. Calculer l’AFC ou l’ACM en fonction du type de données
  2. Appliquer la classification hierarchique

Jeu de données utilisé: tea [FactoMineR]. Les lignes représentent les individus et les colonnes représentent des variables catégorielles.

Nous commençons, par effectuer une ACM. Nous conservons les 20 premiers axes de l’ACM qui capturent 87% de l’information.

# Chargement des données
library(FactoMineR)
data(tea)
# ACM
res.mca <- MCA(tea, 
               ncp = 20,            # Nombre de composants gardés
               quanti.sup = 19,     # Variables quantitatives supplémentaires
               quali.sup = c(20:36), # Variables qualitative supplémentaires
               graph=FALSE)

Classification hiérarchique:

res.hcpc <- HCPC (res.mca, graph = FALSE, max = 3)

Visualisation des résultats:

# Dendrogramme
fviz_dend(res.hcpc, show_labels = FALSE)
# Individus
fviz_cluster(res.hcpc, geom = "point", main = "Factor map")

Comme mentionné ci-dessus, les groupes peuvent être décrits par i) les variables et / ou catégories, ii) les axes principaux et iii) les individus. Dans l’exemple ci-dessous, nous affichons uniquement une partie des résultats.

  • Description par les variables et les catégories
# Description par les variables
res.hcpc$desc.var$test.chi2
##          p.value df
## where   8.47e-79  4
## how     3.14e-47  4
## price   1.86e-28 10
## tearoom 9.62e-19  2
# Description par les catégories
res.hcpc$desc.var$category
## $`1`
##                     Cla/Mod Mod/Cla Global  p.value
## where=chain store      85.9    93.8   64.0 2.09e-40
## how=tea bag            84.1    81.2   56.7 1.48e-25
## tearoom=Not.tearoom    70.7    97.2   80.7 1.08e-18
## price=p_branded        83.2    44.9   31.7 1.63e-09
## 
## $`2`
##                 Cla/Mod Mod/Cla Global  p.value
## where=tea shop     90.0    84.4   10.0 3.70e-30
## how=unpackaged     66.7    75.0   12.0 5.35e-20
## price=p_upscale    49.1    81.2   17.7 2.39e-17
## Tea=green          27.3    28.1   11.0 4.44e-03
## 
## $`3`
##                            Cla/Mod Mod/Cla Global  p.value
## where=chain store+tea shop    85.9    72.8   26.0 5.73e-34
## how=tea bag+unpackaged        67.0    68.5   31.3 1.38e-19
## tearoom=tearoom               77.6    48.9   19.3 1.25e-16
## pub=pub                       63.5    43.5   21.0 1.13e-09

Les variables qui caractérisent la plupart des groupes/clusters sont les variables “where” et “how”. Chaque cluster est caractérisé par une catégorie des variables “where” et “how”. Par exemple, les individus qui appartiennent au premier cluster achètent du thé en sachet dans les “chaînes de magasins”chain stores“.

  • Description par les axes principaux
res.hcpc$desc.axes
  • Description par les individus
res.hcpc$desc.ind$para

Résumé

Nous avons décrit comment calculer la classification hiérarchique sur composantes principales (HCPC). Cette approche est utile dans plusieurs situations:

  • Lorsque vous disposez d’un grand jeu de données contenant des variables continues, une ACP peut être utilisée pour réduire la dimension des données avant la classification hiérarchique des données.

  • Lorsque vous disposez d’un jeu de données contenant des variables catégorielles, une AFC ou une ACM peut être utilisée pour transformer les variables catégorielles en quelques composantes principales continues, qui peuvent être utilisées ensuite pour la classification.

Nous avons utilisé le package FactoMineR pour faire la classification HCPC et le package factoextra pour la visualisation des données.

References

Husson, François, J. Josse, and Pagès J. 2010. “Principal Component Methods - Hierarchical Clustering - Partitional Clustering: Why Would We Need to Choose for Visualizing Data?” Unpublished Data. http://www.sthda.com/english/upload/hcpc_husson_josse.pdf.