Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DEPARTAMENTO DE MATEMÁTICA
LICENCIATURA EN ESTADÍSTICA
TÍTULO:
Autora:
Rebeca Abigail López Rivera
Docente:
Jaime Isaac Peña
El análisis de cluster es un método que permite descubrir asociaciones y estructuras en los datos que no son
evidentes a priori pero que pueden ser útiles una vez que se han encontrado. Los resultados de un Análisis de
Clusters pueden contribuir a la definición formal de un esquema de clasificación tal como una taxonomı́a para
un conjunto de objetos, a sugerir modelos estadı́sticos para describir poblaciones, a asignar nuevos
ÍNDICE
1 ANÁLISIS DE CLÚSTER 1
1.1 MÉTODO JÉRARQUICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Ejemplo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 MÉTODO NO JÉRARQUICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2.1 Ejemplo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3 CUSTOMIZACIÓN DE DENDOGRAMAS . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.4 LIMITACIONES DEL CLUSTERING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.5 MÉTODO JERÁRQUICO UTILIZANDO DIFERENTEs TIPOS DE DENDOGRAMA
DE LA BASE USArrests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ÍNDICE DE FIGURAS
1 Dendograma con Linkage completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Dendograma con Linkage completo con cuatro grupos . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Cluster Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Determinación del número de clústers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Hopkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6 Número óptimo de cluster con wss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7 Número óptimo de cluster con silhouette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8 Número óptimo de cluster gap-stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
9 Dendograma con Linkage completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10 Hierarchical k-means Cluster plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
11 Gráfico del número óptimo de clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
12 Cluster plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
13 Dendograma con representación horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
14 Dendograma con colores que determinan el número de clusters . . . . . . . . . . . . . . . . . . . 34
15 Dendograma circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
16 Dendrograma en forma de árbol filogenético. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1 ANÁLISIS DE CLÚSTER
El Análisis Clúster , conocido como Análisis de Conglomerados, es una técnica estadı́stica multivariante que
busca agrupar elementos (o variables) tratando de lograr la máxima homogeneidad en cada grupo y la mayor
diferencia entre los grupos.
Puesto que la utilización del análisis cluster ya implica un desconocimiento o conocimiento incompleto de la
clasificación de los datos, el investigador ha de ser consciente de la necesidad de emplear varios métodos, ninguno
de ellos incuestionable, con el fin de contrastar los resultados.
a) Jerárquicos:
Se denominan jerárquicos a los que configuran grupos con estructura arborescente, de forma que clusters de
niveles más bajos van siendo englobados en otros clusters de niveles superiores.
Objetivo: Agrupar cluster para formar uno nuevo o separar alguno ya existente para dar origen a otros dos de
forma que se maximice una medida de similaridad o se minimice alguna distancia.
Se clasifican en:
• Asociativos o Aglomerativos: Se parte de tantos grupos como individuos hay en el estudio y se van agru-
pando hasta llegar a tener todos los casos en un mismo grupo.
• Disociativos: Se parte de un solo grupo que contiene todos los casos y a través de sucesivas divisiones se
forman grupos cada vez más pequeños.
b) No jerárquicos:
Se conocen como no jerárquicos a aquellos que asignan los casos o grupos diferenciados que el propio análisis
configura, sin que unos dependan de otros. Los métodos no jerárquicos pueden, a su vez, producir clusters
disjuntos (cada caso pertenece sólo a un cluster), o bien clusters solapados (un caso puede pertenecer a más de
un grupo). Estos últimos de difı́cil interpretación, son poco utilizados.
OBJETIVO
Encontrar una partición de los m individuos en c grupos de forma que cada individuo pertenezca aun grupo y
solamente a uno.
1
Nota:Es importante considerar si las variables han de estandarizarse para que tengan media 0 y desviación
estándar 1 antes de calcular la similitud entre observaciones, para que cada variable adquiera una importancia
equivalente en el clustering jerárquico, sobre todo si las escalas de medida son distintas. Aplicar o no el escalado
de variables puede depender del problema en cuestión.
AC, siendo un método de data mining bastante popular en muchos campos, existe un gran número de métodos
de clustering, siendo dos de los más conocidos:
K-means es uno de los métodos de clustering más utilizados y cuyos resultados son satisfactorios en muchos
escenarios, sin embargo, como se ha explicado en apartados anteriores, sufre las limitaciones de necesitar que se
especifique el número de clusters de antemano y de que sus resultados puedan variar en función de la iniciación
aleatoria. Una forma de contrarrestar estos dos problemas es combinando el K-means con el hierarchical clus-
tering. Los pasos a seguir son los siguientes:
1. Aplicar hierarchical clustering a los datos y cortar el árbol en k clusters. El número óptimo puede elegirse
de forma visual o con cualquiera de los métodos explicados en la sección Número óptimo de clusters.
3. Aplicar k-means clustering empleando como centroides iniciales los centros calculados en el paso 2.
El algoritmo de K-means tratará de mejorar la agrupación hecha por el hierarchical clustering en el paso 1, de
ahı́ que las agrupaciones finales puedan variar respecto a las iniciales.
1.1.1 Ejemplo:
El set de datos USArrests contiene información sobre el número de delitos (asaltos, asesinatos y secuestros)
junto con el porcentaje de población urbana para cada uno de los 50 estados de USA. Se pretende estudiar si
existe una agrupación subyacente de los estados empleando Hierarchical K-means clustering.
2
análisis de clusters. Los objetos similares se conectan mediante enlaces cuya posición en el diagrama está de-
terminada por el nivel de similitud/disimilitud entre los objetos.
## Warning in file(file, "rt"): no fue posible abrir el archivo ’USArrests.csv’: No such file
or directory
## Error in file(file, "rt"): no se puede abrir la conexión
head(USArrests,12)
3
Height
0
2
4
6
South Dakota
West Virginia
set.seed(101)
North Dakota
Vermont
Maine
Iowa
library(factoextra)
New Hampshire
Idaho
Montana
Nebraska
Kentucky
Arkansas
Virginia
Wyoming
Missouri
Oregon
Washington
Delaware
Rhode Island
Massachusetts
method = "complet")
New Jersey
Connecticut
Minnesota
Wisconsin
4
Oklahoma
Indiana
Kansas
Ohio
Pennsylvania
Hawaii
Utah
Linkage completo
theme(plot.title = element_text(hjust = 0.5, size = 15))
Colorado
California
Nevada
hc_completo <- hclust(d = dist(x = datos, method = "euclidean"),
Florida
Figure 1: Dendograma con Linkage completo
Texas
Illinois
New York
Arizona
Michigan
Maryland
New Mexico
Alaska
Alabama
Louisiana
Georgia
Tennessee
North Carolina
Mississippi
South Carolina
Empleando la representación del dendrograma se considera que existen 4 grupos.
Se resaltan los conglomerados; para este caso es de 4.
5
Height
0
2
4
6
South Dakota
West Virginia
set.seed(101)
North Dakota
Vermont
Maine
Iowa
New Hampshire library(factoextra)
Idaho
Montana
Nebraska
datos <- scale(USArrests)
Kentucky
Arkansas
Virginia
Wyoming
Missouri
Oregon
Washington
Delaware
Rhode Island
Massachusetts
New Jersey
Connecticut
Minnesota
Wisconsin
6
Oklahoma
Indiana
Kansas
Ohio
Pennsylvania
Hawaii
Utah
geom_hline(yintercept = 4, linetype = "dashed", lwd=1.4)
Linkage completo
Colorado
theme(plot.title = element_text(hjust = 0.5, size = 15))+
California
Nevada
Florida
Texas
Illinois
New York
fviz_dend(x = hc_completo,k=4, cex = 0.5,main = "Linkage completo") +
Arizona
Michigan
Figure 2: Dendograma con Linkage completo con cuatro grupos
Maryland
New Mexico
Alaska
Alabama
Louisiana
Georgia
Tennessee
North Carolina
Mississippi
South Carolina
Figure 3: Cluster Plot
Cluster plot
Mississippi
North Carolina
2 South Carolina
West Virginia
Georgia Vermont
Alaska
1 Alabama Arkansas
Louisiana South Dakota
Kentucky
Tennessee cluster
Dim2 (24.7%)
Wyoming a 2
Maryland Maine
New Mexico a 3
Florida Virginia Idaho a 4
0
New Hampshire
Michigan Indiana Nebraska
Missouri Oklahoma Iowa
Kansas
Delaware
Texas Pennsylvania Wisconsin
Illinois Oregon
Arizona Minnesota
Nevada Ohio
New York
−1
Colorado Washington Connecticut
## Error: 7
Cannot use ‘+.gg()‘ with a single argument. Did you accidentally put + on a new
line?
• DETERMINACIÓN DEL NÚMERO DE CLÚSTERS.
8
Figure 4: Determinación del número de clústers
data("USArrests")
datos<-scale(USArrests)
library(factoextra)
fviz_nbclust(datos, kmeans, method = "gap_stat")
0.30
Gap statistic (k)
0.25
0.20
0.15
1 2 3 4 5 6 7 8 9 10
Number of clusters k
9
• DETERMINAR EL MEJOR NÚMERO DE CONGLOMERADOS CON NbClust
library("NbClust")
data("USArrests")
set.seed(123)
res.nbclust <- NbClust(datos, distance = "euclidean",
min.nc = 2, max.nc = 10,
method = "complete", index ="all")
0.013
0.0015
0.012
0.0010
Hubert Statistic values
0.011
0.0005
0.010
0.009
2 4 6 8 10 2 4 6 8 10
10
## *** : The Hubert index is a graphical method of determining the number of clusters.
## In the plot of Hubert index, we seek a significant knee that corresponds to a
## significant increase of the value of the measure i.e the significant peak in Hube
## index second differences plot.
##
1.3
0.10
1.2
0.05
1.0
0.9
0.00
0.8
2 4 6 8 10 2 4 6 8 10
11
##
## *******************************************************************
## * Among all indices:
## * 9 proposed 2 as the best number of clusters
## * 4 proposed 3 as the best number of clusters
## * 6 proposed 4 as the best number of clusters
## * 2 proposed 5 as the best number of clusters
## * 1 proposed 8 as the best number of clusters
## * 1 proposed 10 as the best number of clusters
##
## ***** Conclusion *****
##
## * According to the majority rule, the best number of clusters is 2
##
##
## *******************************************************************
factoextra::fviz_nbclust(res.nbclust)
12
Optimal number of clusters − k = 2
7.5
Frequency among all indices
5.0
2.5
0.0
0 1 10 2 3 4 5 8
Number of clusters k
• VALIDACIÓN:
La validación de clusters es el proceso por el cual se evalúa la veracidad de los grupos obtenidos. A modo
general, este proceso consta de tres partes:
1. Estudio de la tendencia de clustering:
Clustering tendencia evalúa si la aplicación de agrupación es adecuada a sus datos.
∗ Hopkins estadı́stica:
Si el valor de Hopkins estadı́stica está cerca de cero (muy por debajo de 0,5), entonces podemos
concluir que el conjunto de datos es significativamente clusterable.
13
· Primera forma:
14
Figure 5: Hopkins
datos <- scale(USArrests[, -5])
get_clust_tendency(datos, n= 40,gradient = list(low = "steelblue", high = "white"))
## $hopkins_stat
## [1] 0.3440875
##
## $plot
value
6
15
· Segunda forma:
library(clustertend)
set.seed(321)
USArrests <- scale(USArrests)
hopkins(USArrests,n=3)
## $H
## [1] 0.4362735
Determinar el número óptimo de clusters es uno de los pasos más complicados a la hora de aplicar
métodos de clustering, sobre todo cuando se trata de partitioning clustering, donde el número se
tiene que especificar antes de poder ver los resultados.
No existe una forma única de averiguar el número adecuado de clusters. Es un proceso bastante sub-
jetivo que depende en gran medida del tipo de clustering empleado y de si se dispone de información
previa sobre los datos con los que se está trabajando, por ejemplo, estudios anteriores pueden sugerir
o acotar las posibilidades. A pesar de ello, se han desarrollado varias estrategias que ayudan en el
proceso.
∗ Elbow method
El método Elbow sigue una estrategia comúnmente empleada para encontrar el valor óptimo de
un parámetro. La idea general es probar un rango de valores del parámetro en cuestión, repre-
sentar gráficamente los resultados obtenidos con cada uno e identificar aquel punto de la curva
a partir del cual la mejora deja de ser sustancial (principio de verosimilitud). En los casos de
partitioning clustering, como por ejemplo K-means, las observaciones se agrupan de una forma
tal que se minimiza la varianza total intra-cluster.
16
Figure 6: Número óptimo de cluster con wss
library(factoextra)
datos <- scale(USArrests)
fviz_nbclust(x = datos, FUNcluster = kmeans, method = "wss")
150
Total Within Sum of Square
100
50
1 2 3 4 5 6 7 8 9 10
Number of clusters k
17
∗ Average silhouette method
El método de average silhouette es muy similar al de Elbow, con la diferencia de que, en lugar
minimizar el total inter-cluster sum of squares (wss), se maximiza la media de los silhouette
coeficient (). Este coeficiente cuantifica cómo de buena es la asignación que se ha hecho de una
observación comparando su similitud con el resto de observaciones de su cluster frente a las de
los otros clusters. Su valor puede estar entre -1 y 1, siendo valores altos un indicativo de que la
observación se ha asignado al cluster correcto.
18
Figure 7: Número óptimo de cluster con silhouette
library(factoextra)
datos <- scale(USArrests)
fviz_nbclust(x = datos, FUNcluster = kmeans, method = "silhouette")
0.4
0.3
Average silhouette width
0.2
0.1
0.0
1 2 3 4 5 6 7 8 9 10
Number of clusters k
19
∗ Gap statistic method
El estadı́stico gap fue publicado por R.Tibshirani, G.Walther y T. Hastie, autores también del
magnı́fico libro Introduction to Statistical Learning. Este estadı́stico compara, para diferentes
valores de k, la varianza total intra-cluster observada frente al valor esperado acorde a una dis-
tribución uniforme de referencia. La estimación del número óptimo de clusters es el valor k con
el que se consigue maximizar el estadı́stico gap, es decir, encuentra el valor de k con el que se
consigue una estructura de clusters lo más alejada posible de una distribución uniforme aleatoria.
Este método puede aplicarse a cualquier tipo de clustering.
20
Figure 8: Número óptimo de cluster gap-stat
library(factoextra)
datos <- scale(USArrests)
fviz_nbclust(x = datos, FUNcluster = kmeans,
method = "gap_stat", nboot = 500,
verbose = FALSE, nstart = 25) +
labs(title = "Número óptimo de clusters")
0.30
Gap statistic (k)
0.25
0.20
0.15
1 2 3 4 5 6 7 8 9 10
Number of clusters k
21
• ¿CÓMO ELEGIR LOS ALGORITMOS DE AGRUPACIÓN APROPIADOS PARA SUS DATOS?
##
## Clustering Methods:
## hierarchical kmeans pam clara
##
## Cluster sizes:
## 2 3 4 5 6
##
## Validation Measures:
## 2 3 4 5 6
##
## hierarchical Connectivity 6.6437 9.5615 13.9563 22.5782 31.2873
## Dunn 0.2214 0.2214 0.2224 0.2046 0.2126
## Silhouette 0.4085 0.3486 0.3637 0.3213 0.2720
## kmeans Connectivity 6.6437 13.6484 16.2413 24.6639 33.7194
## Dunn 0.2214 0.2224 0.2224 0.1983 0.2231
## Silhouette 0.4085 0.3668 0.3573 0.3377 0.3079
## pam Connectivity 6.6437 13.8302 20.4421 29.5726 38.2643
## Dunn 0.2214 0.1376 0.1849 0.1849 0.2019
## Silhouette 0.4085 0.3144 0.3390 0.3105 0.2630
## clara Connectivity 6.6437 13.8302 20.4421 29.5726 38.2643
## Dunn 0.2214 0.1376 0.1849 0.1849 0.2019
## Silhouette 0.4085 0.3144 0.3390 0.3105 0.2630
##
## Optimal Scores:
##
## Score Method Clusters
## Connectivity 6.6437 hierarchical 2
## Dunn 0.2231 kmeans 6
## Silhouette 0.4085 hierarchical 2
22
Height
0
2
4
6
South Dakota
West Virginia
North Dakota
Vermont
Maine
data("USArrests")
Iowa
New Hampshire
Idaho
Montana
Nebraska
Kentucky
Arkansas
Virginia
Wyoming
Missouri
Oregon
Washington
Delaware
main = "Linkage completo") +
Rhode Island
Massachusetts
New Jersey
Connecticut
Minnesota
Wisconsin
23
Oklahoma
Indiana
Kansas
Ohio
Pennsylvania
Hawaii
Utah
geom_hline(yintercept = 5, linetype = "dashed", lwd=1.4)
Linkage completo
Colorado
theme(plot.title = element_text(hjust = 0.5, size = 15))+
California
Nevada
Florida
Figure 9: Dendograma con Linkage completo
Texas
Illinois
New York
fviz_dend(x = hc_completo,k=2, cex = 0.5, k_colors=c("orange","blue"),
Arizona
Michigan
Maryland
New Mexico
Alaska
Alabama
Louisiana
Georgia
Tennessee
North Carolina
Mississippi
South Carolina
Figure 10: Hierarchical k-means Cluster plot
data("USArrests")
hkmeans_cluster <- hkmeans(x = datos, hc.metric = "euclidean",
hc.method ="complete", k = 2)
fviz_cluster(object = hkmeans_cluster, pallete = "jco", repel = TRUE)
Cluster plot
Mississippi
North Carolina
2 South Carolina
West Virginia
Georgia Vermont
Alaska
1 Alabama Arkansas
Louisiana South Dakota
Kentucky
Tennessee
Dim2 (24.7%)
North Dakota
Montana cluster
Maine a 1
Maryland Wyoming
New Mexico a 2
Florida Virginia Idaho
New Hampshire
0
Michigan Indiana Nebraska
Missouri Oklahoma Iowa
Kansas
Delaware
Texas Pennsylvania Wisconsin
Arizona Illinois Oregon
Nevada Minnesota
Ohio
New York
−1
Colorado Washington Connecticut
## Error: Cannot use ‘+.gg()‘ with a single argument. Did you accidentally put + on a new
24
line?
1.2 MÉTODO NO JÉRARQUICO
K-means clustering
El método de K-means clustering es un método no jerárquico para agrupar objetos (no variables) que particiona
el set de datos en K clústeres distintos y no solapantes, lo que significa que ninguna observación puede pertenecer
a más de un clúster. El número de clústeres o subgrupos requeridos se ha de establecer al inicio (con lo que es
importante tener un buen conocimiento de los datos).
Siendo C1 , ..., Ck el número de sets, la varianza intra-clúster para el clúster Ck es una medida W (Ck ) de la
cantidad que difieren las observaciones dentro del mismo. Por tanto, se busca minimizar:
K
X
W (Ck )
k=1
De manera que la varianza total dentro de cada clúster, sumada sobre todos los K clústeres, sea lo más pequeña
posible. Una forma común de establecer esta varianza es mediante la distancia euclı́dea, con lo que obtenemos
p
X X
W (Ck ) = 1
|Ck | (Xij − Xij )2
i,i∈CK j=1
siendo | Ck | el número de observaciones en el k-ésimo clúster. De esta manera la varianza se mide como la
suma de todas las distancias euclı́deas al cuadrado entre pares de observaciones del clúster k, dividido por el
número total de observaciones en ese mismo clúster.
Ventajas y desventajas:
K-means es uno de los métodos de clustering más utilizados. Destaca por la sencillez y velocidad de su algo-
ritmo, sin embargo, presenta una serie de limitaciones que se deben tener en cuenta.
1. Requiere que se indique de antemano el número de clusters que se van a crear. Esto puede ser complicado
si no se dispone de información adicional sobre los datos con los que se trabaja. Una posible solución es
aplicar el algoritmo para un rango de valores k y evaluar con cual se consiguen mejores resultados, por
ejemplo, menor suma total de varianza interna.
2. Las agrupaciones resultantes pueden variar dependiendo de la asignación aleatoria inicial de los centroides.
Para minimizar este problema se recomienda repetir el proceso de clustering entre 20 - 50 veces y selec-
cionar como resultado definitivo el que tenga menor suma total de varianza interna. Aun ası́, no se
garantiza que para un mismo set de datos los resultados sean exactamente iguales.
3. Presenta problemas de robustez frente a outliers. La única solución es excluirlos o recurrir a otros métodos
de clustering más robustos como K-medoids (PAM).
25
1.2.1 Ejemplo:
Si se emplea K-means-clustering con distancia euclı́dea hay que asegurarse de que las variables empleadas son
de tipo continuo, ya que trabaja con la media de cada una de ellas.
data("USArrests")
str(USArrests)
Una forma sencilla de estimar el número K óptimo de clusters cuando no se dispone de información adicional
en la que basarse es aplicar el algoritmo para un rango de valores de K, identificando aquel a partir del cual
la reducción en la suma total de varianza intra-cluster deja de ser sustancial (en los siguientes apartados se
detallan otras opciones). La función fviz-nbclust() automatiza este proceso.
26
Figure 11: Gráfico del número óptimo de clusters
library(factoextra)
fviz_nbclust(x = datos, FUNcluster = kmeans, method = "wss",
diss = dist(datos, method = "euclidean"))+
geom_vline(xintercept = 4, linetype = 2)
150
Total Within Sum of Square
100
50
1 2 3 4 5 6 7 8 9 10
Number of clusters k
En este caso, a partir de 4 clusters la reducción en la suma total de cuadrados internos parece estabilizarse,
27
indicando que K = 4 es una buena opción.
set.seed(123)
km_clusters <- kmeans(x = datos, centers = 4, nstart = 25)
El paquete factoextra también permite obtener visualizaciones de las agrupaciones resultantes. Si el número
de variables (dimensionalidad) es mayor de 2, automáticamente realiza un PCA y representa las dos primeras
componentes principales.
28
Figure 12: Cluster plot
Cluster plot
Mississippi
North Carolina
2
South Carolina
West Virginia
Georgia Vermont
Alaska Arkansas
1 Alabama Kentucky
Louisiana
Tennessee South Dakota cluster
Dim2 (24.7%)
−2 0 2
Dim1 (62%)
## Error: Cannot use ‘+.gg()‘ with a single argument. Did you accidentally put + on a new
line?
29
1.3 CUSTOMIZACIÓN DE DENDOGRAMAS
A continuación se muestra cómo visualizar y customizar dendrogramas utilizando las funciones fvizd end() del
paquete factoextra y varias funciones del paquete dendextend.
library(factoextra)
library(dendextend)
##
## ---------------------
## Welcome to dendextend version 1.12.0
## 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
## Or contact: <tal.galili@gmail.com>
##
## To suppress this message use: suppressPackageStartupMessages(library(dendextend))
## ---------------------
##
## Attaching package: ’dendextend’
## The following object is masked from ’package:stats’:
##
## cutree
30
distancia
0
50
100
150
Florida
North Carolina
California
Maryland
Arizona
New Mexico
Delaware
Alabama
Louisiana
Illinois
Representación Horizontal
New York
Michigan
Dendrograma − ward
Nevada
Alaska
Mississippi
South Carolina
Washington
Oregon
Wyoming
Oklahoma
Virginia
Rhode Island
Massachusetts
31
New Jersey
Missouri
Arkansas
Tennessee
Georgia
Colorado
observaciones
Texas
Idaho
Nebraska
Kentucky
Montana
Ohio
Utah
Indiana
Kansas
Connecticut
Pennsylvania
Hawaii
West Virginia
Maine
South Dakota
North Dakota
Vermont
Minnesota
Wisconsin
Iowa
New Hampshire
Figure 13: Dendograma con representación horizontal
fviz_dend(x = hc_average,
cex = 0.5,
main = "Dendrograma - ward",
xlab = "observaciones",
ylab = "distancia",
sub = "",
horiz = TRUE)
Dendrograma − ward
New Hampshire
Iowa
Wisconsin
Minnesota
Vermont
North Dakota
South Dakota
Maine
West Virginia
Hawaii
Pennsylvania
Connecticut
Kansas
Indiana
Utah
Ohio
Montana
Kentucky
Nebraska
Idaho
Texas
observaciones
Colorado
Georgia
Tennessee
Arkansas
Missouri
New Jersey
Massachusetts
Rhode Island
Virginia
Oklahoma
Wyoming
Oregon
Washington
South Carolina
Mississippi
Alaska
Nevada
Michigan
New York
Illinois
Louisiana
Alabama
Delaware
New Mexico
Arizona
Maryland
California
North Carolina
Florida
150 100 50 0
distancia
32
Cortar el dendrograma y asignar un color distinto a cada cluster.
33
Figure 14: Dendograma con colores que determinan el número de clusters
set.seed(5665)
fviz_dend(x = hc_average,
k = 4,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect = TRUE,
rect_border = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
rect_fill = TRUE,
cex = 0.5,
main = "Dendrograma - ward",
xlab = "observaciones",
ylab = "distancia",
sub = "")
## Warning in if (color == "cluster") color <- "default": la condición tiene longitud > 1 y
sólo el primer elemento será usado
Dendrograma − ward
150
100
distancia
50
34
0
Florida
North Carolina
California
Maryland
Arizona
New Mexico
Delaware
Alabama
Louisiana
Illinois
New York
Michigan
Nevada
Alaska
Mississippi
South Carolina
Washington
Oregon
Wyoming
Oklahoma
Virginia
Rhode Island
Massachusetts
New Jersey
Missouri
Arkansas
Tennessee
Georgia
Colorado
Texas
Idaho
Nebraska
Kentucky
Montana
Ohio
Utah
Indiana
Kansas
Connecticut
Pennsylvania
Hawaii
West Virginia
Maine
South Dakota
North Dakota
Vermont
Minnesota
Wisconsin
Iowa
New Hampshire
observaciones
Dendrograma circular.
35
Figure 15: Dendograma circular
set.seed(5665)
fviz_dend(x = hc_average,
k = 4,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
cex = 0.5,
type = "circular")
New Hampshire
olina
Nor th Car
Wisc
Florida
rnia
Min
Iowa
onsin
d
Califo
lan
nes
ry
Ve
ota
No
Ma
na
rm
r th
o
zo
on
xic
Ari
Da
Me
t
So
ko
ut
w
ta
h
Ne
D
e
ar
ak
aw
ot
a
el
D
M a
ain
We e am
ab
st
Vir Al
gin na
ia
u isia
Lo
Ha
wa
ii
ois
Illin
Penn
s ylvan
ia
York
New
Connec
ti cut
n
Michiga
Kansas
Nevada
Indiana
Alaska
Utah
Missis
sippi
o
Ohi Sou
th Car
olin
a
na
nta Wa
Mo sh ing
ton
c ky Or
ntu eg
Ke on
ka W
as yo
br m
Ne in
g
o
ah
O
Id
kla
s
ho
xa
Vir
m
Te
a
g
do
ini
Rh
lora
a
rgia
ode
Mas
see
Co
New J
Arkansas
Missouri
Geo
Isla
sach
s
Tenne
nd
ersey
use
tts
36
Dendrograma en forma de árbol filogenético.
37
Figure 16: Dendrograma en forma de árbol filogenético.
library("igraph")
##
## Attaching package: ’igraph’
## The following object is masked from ’package:clValid’:
##
## clusters
## The following objects are masked from ’package:stats’:
##
## decompose, spectrum
## The following object is masked from ’package:base’:
##
## union
set.seed(5665)
fviz_dend(x = hc_average,
k = 4,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
cex = 0.8,
type = "phylogenic",
repel = TRUE)
Texas Montana
Arizona Arkansas Colorado Virginia
Kentucky
New Mexico
Tennessee
Maryland Nebraska Wyoming Oklahoma
Georgia
South Carolina Oregon
Missouri
Washington
Illinois Mississippi
California Idaho
Alaska New Jersey
New York
Delaware Florida
Ohio
Alabama
North Carolina
Louisiana Utah
Pennsylvania
Connecticut
Indiana
Hawaii Kansas
38 West Virginia
Maine
North Dakota South Dakota
Vermont
Minnesota
Wisconsin
New Hampshire
1.4 LIMITACIONES DEL CLUSTERING
El clustering puede ser una herramienta muy útil para encontrar agrupaciones en los datos, sobre todo a me-
dida que el volumen de los mismos aumenta. Sin embargo, es importante recordar algunas de sus limitaciones
o problemas que pueden surgir al aplicarlo.
1. Pequeñas decisiones pueden tener grandes consecuencias: A la hora de utilizar los métodos de
clustering se tienen que tomar decisiones que influyen en gran medida en los resultados obtenidos. No
existe una única respuesta correcta, por lo que en la práctica se prueban diferentes opciones.
– Número de clusters
2. Validación de los clusters obtenidos: No es fácil comprobar la validez de los resultados ya que en la
mayorı́a de escenarios se desconoce la verdadera agrupación.
4. La naturaleza del algoritmo de hierarchical clustering conlleva que, si se realiza una mala división en los
pasos iniciales, no se pueda corregir en los pasos siguientes.
data("USArrests")
names(USArrests)
datos<-scale(USArrests)
# Matriz distancia euclı́dea entre observaciones
datos.nci.euc <- dist(datos, method = "euclidean")
39
0 1 2 3 4 5 6
South Dakota
sub = "")
cex = 0.3,
ylab = "",
xlab = "",
West Virginia
North Dakota
Vermont
Maine
Iowa
New Hampshire
Idaho
Montana
Nebraska
Kentucky
Arkansas
main = "Complete linkage",
labels = USArrests$murder,
Virginia
Wyoming
Missouri
Oregon
Washington
Delaware
Rhode Island
Massachusetts
New Jersey
Connecticut
Minnesota
Wisconsin
40
plot(hclust(datos.nci.euc, method = "complete"),
Oklahoma
Indiana
Kansas
Ohio
Pennsylvania
Hawaii
Utah
Colorado
Complete linkage
California
Nevada
Florida
Texas
Illinois
New York
Arizona
Michigan
Maryland
New Mexico
Alaska
Alabama
Louisiana
Georgia
Tennessee
North Carolina
Mississippi
South Carolina
0.0 0.5 1.0 1.5 2.0 2.5 3.0
North Dakota
sub = "")
cex = 0.3,
ylab = "",
xlab = "",
Maine
Iowa
New Hampshire
Vermont
South Dakota
West Virginia
Delaware
Rhode Island
Massachusetts
New Jersey
Arkansas
main = "Average linkage",
labels = USArrests$murder,
Kentucky
Connecticut
Minnesota
Wisconsin
Idaho
Montana
Nebraska
Wyoming
Virginia
Oklahoma
Indiana
Kansas
plot(hclust(datos.nci.euc, method = "average"),
41
Ohio
Pennsylvania
Hawaii
Utah
Oregon
Washington
Alaska
Georgia
Average linkage
Tennessee
Alabama
Louisiana
North Carolina
Mississippi
South Carolina
California
Nevada
Florida
Colorado
Missouri
Texas
Illinois
New York
Arizona
Michigan
Maryland
New Mexico
0.0 0.5 1.0 1.5 2.0
Alaska
sub = "")
cex = 0.4,
ylab = "",
xlab = "",
Florida
California
Nevada
North Carolina
Mississippi
South Carolina
Georgia
Tennessee
Alabama
Louisiana
main = "Single linkage",
labels = USArrests$labs,
Colorado
Delaware
Hawaii
Arkansas
Vermont
Missouri
Connecticut
Kentucky
South Dakota
West Virginia
Idaho
Montana
plot(hclust(datos.nci.euc, method = "single"),
North Dakota
42
Wyoming
Ohio
Maine
Iowa
New Hampshire
Minnesota
Wisconsin
Single linkage
Virginia
Pennsylvania
Nebraska
Oklahoma
Indiana
Kansas
Rhode Island
Utah
Oregon
Washington
Massachusetts
New Jersey
Texas
Illinois
New York
Arizona
Michigan
Maryland
New Mexico