Ricardo Alves de Olinda


http://lattes.cnpq.br/7767223263366578

Universidad del Estado de Paraíba

http://departamentos.uepb.edu.br/estatistica/corpo-docente/



Universidad de San Carlos de Guatemala







Use R!

Libro Texto

Kassambara, A. (2017). Practical Guide to Cluster Analysis in R: Unsupervised Machine Learning (Multivariate Analysis) (1st ed.)

Descripción de los datos

Este conjunto de datos contiene estadísticas sobre arrestos por agresión, asesinato y violación por cada 100 000 habitantes en cada uno de los 50 estados de EE. UU. También se indica el porcentaje de la población que vive en zonas urbanas.

# Extensión en .csv  texto separado por espacios
violacion = read.csv("Datos_V1.csv",sep=";",
            header = TRUE) 

# Leyendo las seis primeras líneas
dim(violacion)
## [1] 50  5
# Reemplace el nombre de la primera columna con una string vacía
colnames(violacion)[1] <- ""
head(violacion)
##              Asesinato Asalto PopUrbano Violacion
## 1    Alabama      13.2    236        58      21.2
## 2     Alaska      10.0    263        48      44.5
## 3    Arizona       8.1    294        80      31.0
## 4   Arkansas       8.8    190        50      19.5
## 5 California       9.0    276        91      40.6
## 6   Colorado       7.9    204        78      38.7

Introducción

  1. Explique en que consiste el análisis de conglomerados

    El análisis clústers(AC), es un método estándar del análisis multivariado que puede reducir una compleja cantidad de información en pequeños grupos o clústers, donde los miembros de cada uno de ellos comparten características similares. El AC se considera una técnica eminentemente exploratoria que no utiliza ningún tipo de modelo estadístico para llevar a cabo el proceso de clasificación y, por ello, se le podría calificar como una técnica de aprendizaje no supervisado, es decir, una técnica muy adecuada para extraer información de un conjunto de datos sin imponer restricciones previas en forma de modelos estadísticos.

    El AC tiene por objeto formar grupos o clústers homogéneos en función de las similitudes o similaridades entre ellos. Los grupos se forman de tal manera que cada objeto es parecido a los que hay dentro del clúster con respecto a algún criterio de selección predeterminado). Las técnicas de agrupamiento en el AC se pueden clasificar en dos categorías: el clúster jerárquico y el no jerárquico.(Heredia, Escobar, and Dı́az 2012, pág. 4)

    Es uno de los métodos de minería de datos importantes para descubrir conocimientos en datos multidimensionales. En la literatura, se lo denomina “reconocimiento de patrones” o “máquina no supervisada de aprendizaje”; “sin supervisión” porque no se guía por ideas a priori de las cuales las variables o muestras pertenecen a qué conglomerados. “Aprendiendo” porque en la máquina el algoritmo “aprende” cómo agruparse, es imortante mencionar que el análisis de conglomerados es popular en muchos campos, que incluyen: medicina, marketing y urbanismo, etc. (Kassambara 2017, pág. 3)

Dentro del métodos de análisis de clúster están:

Método Jerárquico:

    El método de agrupamiento Jerárquico o análisis de agrupamiento Jerárquico, es una alternativa del método de la agrupación No jerárquico, a diferencia de esta la agrupación Jerárquica no requieren Pre especificar el número de clústeres que se producirán.

    La agrupación jerárquica se puede subdividir en dos tipos:

    Agrupación aglomerativa en la que, cada observación se considera inicialmente como un racimo propio (hoja). Luego, los clústeres más similares se fusionan sucesivamente hasta que haya un solo gran clúster (raíz), esta agrupación es conocida como Dendrograma.

    La agrupación en clústeres dividida, una inversión de la agrupación aglomerativa, comienza con la raíz, en que todos los objetos están incluidos en un grupo. Entonces el más heterogéneo los conglomerados se dividen sucesivamente hasta que todas las observaciones están en su propio conglomerado. (Kassambara 2017, pág. 65)

Método No Jerárquico:

    Los métodos no jerárquicos o también conocidos como agrupación en clústeres de particiones son métodos de agrupación que se utilizan para clasificar observaciones, dentro de un conjunto de datos, en varios grupos en función de su similitud. Los algoritmos requieren analista para especificar el número de conglomerados que se generarán.

La agrupación en clústeres No jerárquico de uso común incluye:

    Agrupación de K-medias, en este método cada agrupación está representada por el centro o por medio de los puntos de datos pertenecientes al clúster. El método de las K-medias es sensible a puntos de datos anómalos y valores atípicos.

    Agrupación de K-medoides o Partición alrededor de medoides, con sus siglas en ingles (PAM), en el que cada grupo está representado por uno de los objetos en el racimo. PAM es menos sensible a valores atípicos en comparación con el método de k-medias.

    Algoritmo de Agrupación de aplicaciones grandes con sus siglas en ingles CLARA, es una extensión del método Partición alrededor de medoides (PAM), adaptado para grandes conjuntos de datos.(Kassambara 2017, pág. 35).

Las técnicas utilizadas para realizar el análisis de clúster atinentes al cuadro anterior son:

Método Jerárquico

    Este método es alternativa del método de la agrupación No jerárquico, a diferencia de esta la agrupación Jerárquica no requieren Pre especificar el número de clústeres que se producirán. Dentro de este método esta la agrupación aglomerativa y la no aglomerativa.

    Agrupación aglomerativa: En esta agrupación cada observación se considera inicialmente como un racimo propio (hoja). Luego, los clústeres más similares se fusionan sucesivamente hasta que haya un solo gran clúster (raíz), esta agrupación es conocida como dendrograma. Los agrupamiento aglomerativo es el tipo más común de agrupamiento jerárquico que se utiliza para agrupar objetos en grupos en función de su similitud. También se conoce como (Anidación aglomerativa). El algoritmo comienza tratando cada objeto como un grupo único. A continuación, los pares de grupos se fusionan sucesivamente hasta que todos los grupos se fusionan en un grupo grande que contiene todos los objetos. El resultado es una representación basada en árbol de los objetos, denominada dendrograma.

    La agrupación aglomerativa funciona de forma “de abajo hacia arriba.” Es decir, cada objeto se considera inicialmente como un grupo de un solo elemento (hoja). En cada paso del algoritmo, los dos grupos que son más similares se combinan en un nuevo grupo más grande (nodos). Este procedimiento se repite hasta que todos los puntos son miembros de un solo gran clúster (raíz).

Los pasos para realizar agrupaciones jerárquicas aglomerarías utilizando el software R:

    Uso de la función de vinculación para agrupar objetos en un árbol de agrupamiento jerárquico, según la información de distancia generada en el paso 1. Los objetos/agrupaciones que están muy próximos se vinculan entre sí mediante la función de vinculación.

    Determinar dónde cortar el árbol jerárquico en grupos. Esto crea una partición de los datos.

Estructura y preparación de datos:

    Los datos deben ser una matriz numérica con: filas que representan observaciones (individuos); y columnas que representan variables. Se deben de estandarizar las variables en el conjunto de datos antes de realizar un análisis posterior. La estandarización hace que las variables sean comparables cuando se miden en diferentes escalas. Por ejemplo, una variable puede medir la altura en metros y otra variable puede medir el peso en kg.

    La agrupación en clústeres dividida: Una inversión de la agrupación aglomerativa, comienza con la raíz, en que todos los objetos están incluidos en un grupo. Entonces el más heterogéneo los conglomerados se dividen sucesivamente hasta que todas las observaciones están en su propio conglomerado.

    La inversa de la agrupación aglomerativa es agrupamiento divisivo, que también se conoce como DIANA (Análisis de división) y funciona de manera “de arriba hacia abajo”. Comienza con la raíz, en la que todos los objetos se incluyen en un solo clúster. En cada paso de la iteración, el grupo más heterogéneo se divide en dos. El proceso se repite hasta que todos los objetos están en su propio clúster

Paquete Cluster R:

    El paquete R grupo facilita la realización de análisis de conglomerados en R. Proporciona la función Inés() y Diana() para calcular agrupaciones aglomerativas y divisivas, respectivamente. Estas funciones realizan todos los pasos necesarios para usted. No es necesario ejecutar elescala(), dist() y hclust() funcionan por separado.

Las funciones se pueden ejecutar de la siguiente manera:

    Los métodos no jerárquicos o también conocidos como agrupación en clústeres de particiones son métodos de agrupación que se utilizan para clasificar observaciones, dentro de un conjunto de datos, en varios grupos en función de su similitud. Los algoritmos requieren analista para especificar el número de conglomerados que se generarán.

    Agrupación de K-medias, en este método cada agrupación está representada por el centro o por medio de los puntos de datos pertenecientes al clúster. El método de las K-medias es sensible a puntos de datos anómalos y valores atípicos.

    Agrupación de K-medoides o Partición alrededor de medoides, con sus siglas en ingles (PAM), en el que cada grupo está representado por uno de los objetos en el racimo. PAM es menos sensible a valores atípicos en comparación con el método de k-medias.

    Algoritmo de Agrupación de aplicaciones grandes con sus siglas en ingles CLARA, es una extensión del método Partición alrededor de medoides (PAM), adaptado para grandes conjuntos de datos.

    El clúster por medio de técnicas no jerárquicas no requiere de procesos de construcción de árboles;

    En su lugar, asignan los objetos a clústers una vez que el número de grupos a formar esté especificado. Los procedimientos de aglomeración no jerárquicos se denominan frecuentemente agrupaciones de k–medias, k–medianas y k–modas. Una desventaja con respecto a la técnica jerárquica consiste en que debe conocerse a priori el número de clústers a obtener, lo que implica un grado de subjetividad en el proceso (Peterson, 2002). A pesar de lo anterior, se considera un método dinámico en el sentido en que los objetos dentro de los clústers se pueden mover de un clúster a otro, minimizando la distancia entre objetos dentro de un mismo clúster (Rao & Srinivas, 2006). Pese a las ventajas del método de aglomeración no jerárquico, en este artículo se presenta la aplicación del método jerárquico dado el interés de no querer asignar a priori el número de grupos a formar. A continuación se describen las técnicas empleadas en el análisis clúster y el método de similitud utilizado.

El algoritmo K-means se puede resumir de la siguiente manera:

  1. Especifique el número de clústeres (K) que se crearán (por el analista)

  2. Seleccionar aleatoriamente k objetos del conjunto de datos como centros o medias del conglomerado inicial

  3. Asigna cada observación a su centroide más cercano, según la distancia euclidiana entre el objeto y el centroide.

  4. Para cada uno de los k clústeres, actualice el centroide de racimo calculando los nuevos valores medios de todos los puntos de datos del conglomerado. El centoide de unKth cluster es un vector de longitud pag que contiene las medias de todas las variables para las observaciones en el kth grupo; pag es el número de variables.

  5. Minimice iterativamente el total dentro de la suma del cuadrado. Es decir, repita los pasos 3 y hasta que las asignaciones de clúster dejen de cambiar o se alcance el número máximo de iteraciones. De forma predeterminada, el software R utiliza 10 como valor predeterminado para el número máximo de iteraciones.

    Para calcular la agrupación en clústeres de k-medias en R, Los datos deben contener solo variables continuas, ya que el algoritmo de kmedias utiliza medias variables. Como no queremos que el algoritmo de k-medias dependa de una unidad variable arbitraria, comenzamos escalando los datos usando la funció Rescala() de la siguiente manera:

Base de datos

Tasas de delitos violentos por estado de EE. UU.

Descripción

    Este conjunto de datos contiene estadísticas sobre arrestos por agresión, asesinato y violación por cada 100 000 habitantes en cada uno de los 50 estados de EE. UU. También se indica el porcentaje de la población que vive en zonas urbanas.

Cargando el conjunto de datos, data (“USArrests”)

data("USArrests") # Cargando el conjunto de datos
df <- scale(USArrests) # Scaling the data
# Ver las primeras 3 filas de datos
head(df, n = 3)
##             Murder   Assault   UrbanPop         Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska  0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona 0.07163341 1.4788032  0.9989801  1.042878388

Paquetes y funciones de R requeridos

    Para crear un hermoso gráfico de los clústeres generados con el k significa() función, utilizará la factoextra paquete.

Estimación del número óptimo de conglomerados

    La agrupación de k-means requiere que los usuarios especifiquen el número de agrupaciones que se generarán.

    La idea es calcular la agrupación de k-medias utilizando diferentes valores de las agrupaciones k. A continuación, se dibuja el wss (dentro de la suma del cuadrado) de acuerdo con el número de grupos. La ubicación de una curva (rodilla) en la parcela se considera generalmente como un indicador del número apropiado de grupos.

    La función R fviz_nbclust() [en factoextra paquete] proporciona una solución conveniente para estimar el número óptimo de clústeres.

library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.2
## Carregando pacotes exigidos: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_nbclust(df, kmeans, method = "wss") +
  geom_vline(xintercept = 4, linetype = 2)

    El gráfico anterior representa la varianza dentro de los grupos. Disminuye a medida que k aumenta, pero se puede ver una curva (o “codo”) en k = 4. Esta curva indica que los grupos adicionales más allá del cuarto tienen poco valor. En la siguiente sección, clasificaremos las observaciones en 4 racimos.

Cálculo de la agrupación en clústeres de k-medias

    Como el algoritmo de agrupamiento de k-medias comienza con k centroides seleccionados al azar, siempre se recomienda usar el set.seed() función con el fin de establecer una semilla para R es aleatorio generador de números. El objetivo es hacer reproducibles los resultados, de modo que el lector de este artículo obtenga exactamente los mismos resultados que se muestran a continuación.

    El siguiente código R funciona agrupación de k-medias con k = 4:

# Calcule k-medias con k = 4
set.seed(123)
km.res <- kmeans(df, 4, nstart = 25)
# Imprime los resultados
print(km.res)
## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
## 
## Cluster means:
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3 
## 
## Within cluster sum of squares by cluster:
## [1]  8.316061 11.952463 16.212213 19.922437
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

    La salida impresa muestra:

    Es posible calcular la media de cada variable por conglomerados utilizando los datos originales:

aggregate(USArrests, by = list(cluster = km.res$cluster), mean)
##   cluster   Murder   Assault UrbanPop     Rape
## 1       1 13.93750 243.62500 53.75000 21.41250
## 2       2  3.60000  78.53846 52.07692 12.17692
## 3       3  5.65625 138.87500 73.87500 18.78125
## 4       4 10.81538 257.38462 76.00000 33.19231

    Si desea agregar las clasificaciones de puntos a los datos originales, use esto:

dd <- cbind(USArrests, cluster = km.res$cluster)
head(dd)
##            Murder Assault UrbanPop Rape cluster
## Alabama      13.2     236       58 21.2       1
## Alaska       10.0     263       48 44.5       4
## Arizona       8.1     294       80 31.0       4
## Arkansas      8.8     190       50 19.5       1
## California    9.0     276       91 40.6       4
## Colorado      7.9     204       78 38.7       4

Acceso a los resultados de la función kmeans()

    kmeans () La función devuelve una lista de componentes, que incluye:

    Se puede acceder a los componentes de la siguiente manera:

# Número de conglomerado para cada una de las observaciones
km.res$cluster
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3
head(km.res$cluster, 4)
##  Alabama   Alaska  Arizona Arkansas 
##        1        4        4        1
# Tamaño de cluster
km.res$size
## [1]  8 13 16 13
# Clúster significa
km.res$centers
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964

Visualización de clústeres de k-medias

    Es una buena idea trazar los resultados del clúster. Estos se pueden utilizar para evaluar la elección del número de conglomerados, así como para comparar dos análisis de conglomerados diferentes.

    Ahora, queremos visualizar los datos en un diagrama de dispersión coloreando cada punto de datos de acuerdo con su asignación de grupo.

    El problema es que los datos contienen más de 2 variables y la pregunta es qué variables elegir para el diagrama de dispersión xy.

    Una solución es reducir el número de dimensiones aplicando un algoritmo de reducción de dimensionalidad, como Análisis de componentes principales (PCA), que opera sobre las cuatro variables y genera dos nuevas variables (que representan las variables originales) que puede usar para hacer el gráfico.

    En otras palabras, si tenemos un conjunto de datos multidimensionales, una solución es realizar un análisis de componentes principales (PCA) y trazar puntos de datos de acuerdo con las dos primeras coordenadas de los componentes principales.

    La función fviz_cluster() [factoextra paquete] se puede utilizar para visualizar fácilmente los clústeres de kmedias. Toma los resultados de k-medias y los datos originales como argumentos. En la gráfica resultante, las observaciones se representan mediante puntos, utilizando componentes principales si el número de variables es mayor que 2. También es posible dibujar una elipse de concentración alrededor de cada grupo.

fviz_cluster(
  km.res,
  data = df,
  palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
  ellipse.type = "euclid",
  # Concentration ellipse
  star.plot = TRUE,
  # Add segments from centroids to items
  repel = TRUE,
  # Avoid label overplotting (slow)
  ggtheme = theme_minimal()
)

Capítulo 5

K-Medoides

Concepto PAM

    El uso de medias implica que la agrupación de k medias es muy sensible a los valores atípicos. Esto puede afectar gravemente la asignación de observaciones a los conglomerados. Un algoritmo más robusto es proporcionado por elPAM algoritmo.

Algoritmo PAM

    El algoritmo PAM se basa en la búsqueda de k objetos representativos o medoides entre las observaciones del conjunto de datos. Después de encontrar un conjunto de k medoides, los grupos se construyen asignando cada observación al medoide más cercano.

    A continuación, se intercambian cada medoide my cada punto de datos no medoide seleccionado y se calcula la función objetivo. La función objetivo corresponde a la suma de las diferencias de todos los objetos con su medoide más cercano.

    El paso SWAP intenta mejorar la calidad de la agrupación mediante el intercambio de objetos seleccionados (medoides) y objetos no seleccionados. Si la función objetivo se puede reducir intercambiando un objeto seleccionado con un objeto no seleccionado, entonces se lleva a cabo el intercambio. Esto se continúa hasta que la función objetivo ya no se puede reducir. El objetivo es encontrar k objetos representativos que minimicen la suma de las diferencias de las observaciones con su objeto representativo más cercano.

Estimación del número óptimo de conglomerados

library(factoextra)
library(cluster)
fviz_nbclust(df, pam, method = "silhouette") +
  theme_classic()

Visualización de clústeres PAM

    Para visualizar los resultados de la partición, usaremos la función fviz_cluster () [paquete factoextra]. Dibuja un diagrama de dispersión de puntos de datos coloreados por números de grupo. Si los datos contiene más de 2 variables, el algoritmo de análisis de componentes principales (PCA), se utiliza para reducir la dimensionalidad de los datos. En este caso, los dos primeros principales las dimensiones se utilizan para graficar los datos.

pam.res <- pam(df, 2)# El siguiente código R calcula el algoritmo PAM con k = 2:
fviz_cluster(
  pam.res,
  palette = c("#00AFBB", "#FC4E07"),
  # color palette
  ellipse.type = "t",
  # Concentration ellipse
  repel = TRUE,
  # Avoid label overplotting (slow)
  ggtheme = theme_classic()
)

Capítulo 9

Visualización de dendrogramas

Como se describió en capítulos anteriores, un dendrograma es una representación basada en árbol de un datos creados usando métodos de agrupamiento jerárquico (Capítulo 7). En este artículo, proporcionar código R para visualizar y personalizar dendrogramas. Además, mostramos cómo guardar y hacer zoom en un dendrograma grande.

# Cargar datos
data(USArrests)
# Calcular distancias y agrupamiento jerárquico
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")

Para visualizar el dendrograma, usaremos las siguientes funciones y paquetes de R:

    Antes de continuar, instale el paquete requerido de la siguiente manera:

Visualización de dendrogramas

Usaremos la función fviz_dend() [en el paquete factoextra R] para crear fácilmente una hermosa dendrograma utilizando el gráfico base R o ggplot2. También proporciona una opción para dibujando dendrogramas circulares y árboles parecidos a filogenia.

Para crear dendrogramas básicos, escriba esto:

library(factoextra)
library(dendextend)
## Warning: package 'dendextend' was built under R version 4.3.2
## 
## ---------------------
## Welcome to dendextend version 1.17.1
## Type citation('dendextend') for how to cite the package.
## 
## Type browseVignettes(package = 'dendextend') for the package vignette.
## The github page is: https://github.com/talgalili/dendextend/
## 
## Suggestions and bug-reports can be submitted at: https://github.com/talgalili/dendextend/issues
## You may ask questions at stackoverflow, use the r and dendextend tags: 
##   https://stackoverflow.com/questions/tagged/dendextend
## 
##  To suppress this message use:  suppressPackageStartupMessages(library(dendextend))
## ---------------------
## 
## Attaching package: 'dendextend'
## The following object is masked from 'package:stats':
## 
##     cutree
fviz_dend(hc, cex = 0.5)
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

    Puede usar los argumentos main, sub, xlab, ylab para cambiar los títulos de la trama de la siguiente manera:

fviz_dend(
  hc,
  cex = 0.5,
  main = "Dendrogram - ward.D2",
  xlab = "Objects",
  ylab = "Distance",
  sub = ""
)

    Para dibujar un dendrograma horizontal, escriba esto:

fviz_dend(hc, cex = 0.5, horiz = TRUE)

    También es posible cortar el árbol a una altura determinada para dividir los datos en múltiples grupos como se describe en el capítulo anterior: Agrupación jerárquica (Capítulo 7). En este caso, es posible colorear las ramas por grupos y agregar un rectángulo alrededor de cada grupo.

Por ejemplo:

    Para cambiar el tema de la trama, use el argumento ggtheme, cuyos valores permitidos incluyen ggplot2 temas oficiales [theme_gray (), theme_bw (), theme_minimal (), theme_classic (), theme_void ()] o cualquier otro tema de ggplot2 definido por el usuario.

fviz_dend(
  hc,
  k = 4,
  # Cortar en cuatro grupos
  cex = 0.5,
  # # Tamaño de la etiqueta
  k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
  color_labels_by_k = TRUE,
  # Etiquetas de Color por grupos
  ggtheme = theme_gray() # Cambiar de tema
)

    Si desea dibujar un dendrograma horizontal con un rectángulo alrededor de los grupos, use esto

fviz_dend(
  hc,
  k = 4,
  cex = 0.4,
  horiz = TRUE,
  k_colors = "jco",
  rect = TRUE,
  rect_border = "jco",
  rect_fill = TRUE
)

    Además, puede trazar un dendrograma circular usando la opción type = “circular”.

fviz_dend(
  hc,
  cex = 0.5,
  k = 4,
  k_colors = "jco",
  type = "circular"
)

    Para trazar un árbol filogénico, use type = “phylogenic” y repel = TRUE (para evitar superposición de etiquetas). Esta funcionalidad requiere el paquete R igraph. Asegúrate de eso está instalado antes de escribir el siguiente código R.

require("igraph")
## Carregando pacotes exigidos: igraph
## Warning: package 'igraph' was built under R version 4.3.2
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
fviz_dend(
  hc,
  k = 4,
  k_colors = "jco",
  type = "phylogenic",
  repel = TRUE
)

Bibliografía:

Kassambara, Alboukadel, and Fabian Mundt. 2020. Factoextra: Extract and Visualize the Results of Multivariate Data Analyses. http://www.sthda.com/english/rpkgs/factoextra.