Capítulo 8
HCPC: agrupación jerárquica de componentes principales
8.1 Introducción
La agrupación es uno de los métodos de minería de datos importantes para descubrir conocimiento en conjuntos de datos multivariados. El objetivo es identificar grupos (es decir, grupos) de objetos similares dentro de un conjunto de datos de interés. Para obtener más información sobre la agrupación en clústeres, puede leer nuestro libro titulado “Guía práctica para el análisis de conglomerados en R” (https://goo.gl/DmJ5y5).
Brevemente, las dos estrategias de agrupación más comunes son:
Agrupación jerárquica, utilizada para identificar grupos de observaciones similares en un conjunto de datos.
Agrupación de particiones, como el algoritmo k-means, que se utiliza para dividir un conjunto de datos en varios grupos.
El enfoque HCPC (Hierarchical Clustering on Principal Components) nos permite combinar los tres métodos estándar utilizados en el análisis de datos multivariados (Husson et al., 2010):
Métodos de componentes principales (PCA, CA, MCA, FAMD, MFA),
Agrupación jerárquica y
Agrupación de particiones, en particular el método k-medias.
Este capítulo describe POR QUÉ y CÓMO combinar componentes principales y métodos de agrupación. Finalmente, demostramos cómo calcular y visualizar HCPC usando el software R.
8.2 ¿Por qué HCPC?
La combinación de métodos de componentes principales y métodos de agrupación es útil en al menos tres situaciones.
8.2.1 Caso 1: Variables continuas
En la situación en la que tiene un conjunto de datos multidimensional que contiene múltiples variables continuas, el análisis de componentes principales (PCA) se puede utilizar para reducir la dimensión de los datos a unas pocas variables continuas que contienen la información más importante de los datos. A continuación, puede realizar un análisis de conglomerados en los resultados de PCA.
El paso PCA puede considerarse como un paso de eliminación de ruido que puede conducir a una agrupación más estable. Esto podría resultar muy útil si tiene un gran conjunto de datos con múltiples variables, como los datos de expresión genética.
8.2.2 Caso 2: Agrupación de datos categóricos
Para realizar un análisis de agrupamiento de datos categóricos, se pueden utilizar el análisis de correspondencia (CA, para analizar tablas de contingencia) y el análisis de correspondencias múltiples (MCA, para analizar variables categóricas multidimensionales) para transformar variables categóricas en un conjunto de pocas variables continuas ( los componentes principales). Luego, el análisis de conglomerados se puede aplicar a los resultados de (M)CA.
En este caso, el método (M)CA puede considerarse como pasos de preprocesamiento que permiten calcular la agrupación de datos categóricos.
8.2.3 Caso 3: Agrupación de datos mixtos
Cuando tiene datos mixtos de variables continuas y categóricas, primero puede realizar FAMD (análisis factorial de datos mixtos) o MFA (análisis factorial múltiple). A continuación, puede aplicar el análisis de conglomerados en los resultados de FAMD/MFA.
8.3 Algoritmo del método HCPC
El algoritmo del método HCPC, implementado en el paquete FactoMineR, se puede resumir de la siguiente manera:
Calcule los métodos de componentes principales: PCA, (M)CA o MFA según los tipos de variables en el conjunto de datos y la estructura del conjunto de datos. En este paso, puede elegir el número de dimensiones que se conservarán en la salida especificando el argumento ncp. El valor predeterminado es 5.
Calcular la agrupación jerárquica: la agrupación jerárquica se realiza utilizando el criterio de Ward en los componentes principales seleccionados. El criterio de Ward se utiliza en el agrupamiento jerárquico porque se basa en la varianza multidimensional como análisis de componentes principales.
Elija la cantidad de clústeres según el árbol jerárquico: se realiza una partición inicial cortando el árbol jerárquico.
Realice una agrupación de K-medias para mejorar la partición inicial obtenida de la agrupación jerárquica. La solución de partición final, obtenida después de la consolidación con k-medias, puede ser (ligeramente) diferente de la obtenida con el agrupamiento jerárquico.
8.4 Cálculo
8.4.1 Paquetes R
Usaremos dos paquetes de R: i) FactoMineR para calcular HCPC y ii) factoextra para visualizar los resultados.
Para instalar los paquetes, escriba esto:
#install.packages(c("FactoMineR", "factoextra"))
Después de la instalación, cargue los paquetes de la siguiente manera:
#library (factoextra)
#library (FactoMineR)
8.4.2 Función R
La función HCPC() [en el paquete Facto MineR] se puede utilizar para calcular la agrupación jerárquica de los componentes principales. Un formato simplificado es:
#HCPC(res, nb.clust 0, min = 3, max = NULL, graph = TRUE)
• res: Ya sea el resultado de un análisis factorial o un marco de datos.
• nb.clust: un número entero que especifica el número de clústeres. Los valores posibles son:
• 0: el árbol se corta en el nivel en el que el usuario hace clic
• 1: el árbol se corta automáticamente al nivel sugerido
• Cualquier número entero positivo: el árbol se corta con grupos nb.clusters
• min, max: el número mínimo y máximo de clusters que se generarán, respectivamente
• gráfico: si es VERDADERO, se muestran gráficos
8.4.3 Caso de variables continuas
Comenzamos calculando nuevamente el análisis de componentes principales (PCA). El argumento ncp = 3 se utiliza en la función PCA() para mantener solo los primeros tres componentes principales. A continuación, se aplica el HCPC sobre el resultado del PCA.
#library (FactoMiner)
# Compute PCA with ncp = 3
#res.pca <- PCA (USArrests, ncp = 3, graph = FALSE)
# Compute hierarchical clustering on principal components
#res.hcpc <- HCPC(res.pca, graph = FALSE)
Para visualizar el dendrograma generado por el agrupamiento jerárquico, usaremos la función fviz_dend() [en el paquete factoextra]:
#fviz_dend(res.hcpc,
# cex = 0.7, # Tamaño del texto de las etiquetas
# palette = "jco", # Paleta de colores, asegúrate que está bien
# rect = TRUE, # Dibujar rectángulo alrededor de los clusters
# rect_fill = TRUE, # Rellenar el rectángulo
# rect_border = "jco", # Color del borde del rectángulo
# labels_track_height = 0.8 # Espacio para las etiquetas
#)
El dendrograma sugiere una solución de 4 grupos.
Es posible visualizar individuos en el mapa de componentes principales y colorearlos según el grupo al que pertenecen. La función fviz_cluster() [de factoextra] se puede utilizar para visualizar grupos individuales.
#fviz_cluster(res.hcpc,
# repel = TRUE, # Evitar la superposición de etiquetas
# show.clust.cent = TRUE, # Mostrar los centros de los clústeres
# palette = "jco", # Paleta de colores
# ggtheme = theme_minimal(), # Tema minimalista para el gráfico
# main = "Factor map" # Título del gráfico
#)
También puede dibujar un gráfico tridimensional que combine el agrupamiento jerárquico y el mapa factorial utilizando la función base de R plot():
# Componentes principales + árbol
#trama(res.hcpc, elección = "3D.map")
La función HCPC() devuelve una lista que contiene:
data.clust: los datos originales con una columna complementaria llamada clase que contiene la partición.
desc.var: Las variables que describen los clusters.
desc.ind: Los individuos más típicos de cada grupo.
desc.axes: Los ejes que describen los clústeres.
Para mostrar los datos originales con asignaciones de clúster, escriba esto:
#head(res.hcpc$data.clust, 10)
En la tabla anterior, la última columna contiene las asignaciones de clúster.
Para mostrar variables cuantitativas que describan más cada grupo, escriba esto:
#res.hcpc$desc.var$quanti
Aquí, mostramos sólo algunas columnas de interés: “Media en categoría”, “Media general”, “p.value”
Del resultado anterior, se puede ver que:
las variables UrbanPop, Asesinato, Violación y Asalto están asociadas de manera más significativa con el grupo 1. Por ejemplo, el valor medio de la variable Asalto en el grupo 1 es 78,53, que es menor que su media general (170,76) en todos los grupos. Por lo tanto, se puede concluir que el grupo 1 se caracteriza por una baja tasa de asalto en comparación con todos los grupos.
las variables UrbanPop y Murder están asociadas más significativamente con el grupo 2.
…etcétera
De manera similar, para mostrar las dimensiones principales más asociadas con los clústeres, escriba esto:
#res.hcpc$desc.axes$quanti
Los resultados anteriores indican que los individuos en los grupos 1 y 4 tienen coordenadas altas en el eje 1. Los individuos en el grupo 2 tienen coordenadas altas en el segundo eje. Los individuos que pertenecen al tercer grupo tienen coordenadas altas en los ejes 1, 2 y 3.
Finalmente, los individuos representativos de cada grupo se pueden extraer de la siguiente manera:
#res.hcpc$desc.ind$para
Para cada grupo, se muestran los 5 individuos más cercanos al centro del grupo. Se proporciona la distancia entre cada individuo y el centro del grupo. Por ejemplo, los individuos representativos del grupo 1 incluyen: Idaho, Dakota del Sur, Maine, Iowa y New Hampshire.
8.4.4 Caso de variables categóricas Para variables categóricas, calcule CA o MCA y luego aplique la función HCPC() en los resultados como se describe anteriormente.
Aquí, usaremos los datos del té [en FactoMineR como conjunto de datos de demostración: las filas representan los individuos y las columnas representan variables categóricas.
Comenzamos realizando un MCA a los individuos. Mantenemos los primeros 20 ejes del MCA que retienen el 87% de la información.
# Cargar librerías necesarias
if (!require("FactoMineR")) install.packages("FactoMineR")
## Loading required package: FactoMineR
## Warning: package 'FactoMineR' was built under R version 4.3.3
library(FactoMineR)
# Cargar los datos de ejemplo
data(tea)
# Realizar el MCA
res.mca <- MCA(tea,
ncp = 20, # Número de componentes retenidas
quanti.sup = 19, # Variables cuantitativas suplementarias
quali.sup = 20:36, # Variables cualitativas suplementarias
graph = FALSE # No mostrar gráficos durante el análisis
)
A continuación, aplicamos agrupamiento jerárquico a los resultados del MCA:
#res.hcpc <- HCPC (res.mca, graph FALSE, max 3)
Los resultados se pueden visualizar de la siguiente manera:
# Dendrogram
#fviz_dend(res.hcpc, show_labels = FALSE)
# Individuals facor map
#fviz_cluster (res.hcpc, geom = "point", main = "Factor map")
Como se mencionó anteriormente, los conglomerados pueden describirse mediante i) variables y/o categorías, ii) ejes principales y iii) individuos. En el siguiente ejemplo, mostramos solo un subconjunto de los resultados.
Descripción por variables y categorías
# Description by variables
#res.hcpc$desc.var$test.chi2
# Description by variable categories
#res.hcpc$desc.var$category
Las variables que más caracterizan a los clusters son las variables “dónde” y “cómo”. Cada grupo se caracteriza por una categoría de las variables “dónde” y “cómo”. Por ejemplo, las personas que pertenecen al primer grupo compran té en bolsitas de té en cadenas de tiendas.
Descripción por componentes principales.
#res.hcpc$desc.axes
Descripción por individuos.
#res.hcpc$desc.ind$para
8.5 Resumen
Describimos cómo calcular la agrupación jerárquica en componentes principales (HCPC). Este enfoque es útil en situaciones que incluyen:
Cuando se tiene un gran conjunto de datos que contiene variables continuas, se puede utilizar un análisis de componentes principales para reducir la dimensión de los datos antes del análisis de agrupamiento jerárquico.
Cuando tiene un conjunto de datos que contiene variables categóricas, se puede utilizar un análisis de correspondencia (múltiple) para transformar las variables categóricas en unos pocos componentes principales continuos, que se pueden utilizar como entrada del análisis de conglomerados.
Usamos el paquete FactoMineR para calcular el HCPC y el paquete factoextra R para una visualización de datos elegante basada en ggplot2.
8.6 Lectura adicional
Guía práctica para el análisis de conglomerados en R (Libro). https://goo.gl/DmJ5y5
HCPC: agrupación jerárquica de componentes principales (vídeos). https://goo. gl/jdYGoK