Universidad Nacional Autónoma de México Facultad de Ingeniería Ingeniería en Computación
Agrupamiento Particional
Guillermo Molero-Castillo
Marzo, 2019 1
Agrupamiento Método para el análisis de grupos Los pasos para el análisis de grupos son: a) Utilizar un método para medir la similitud de los elementos. b) Utilizar un método para agrupar a los elementos. c) Utilizar un método para decidir la cantidad de grupos.
2
1. Método para medir la similitud de los elementos
3
Matriz de similitudes § Distancia euclidiana. Es una función usada para calcular la distancia entre dos puntos a través del Teorema de Pitágoras.
!"#$ %, ' =
%) − ')
+
+ %+ − '+
+
+ %- − '-
+
+ … + %/ − '/
+
n dimensiones
4
2. Método para agrupar los elementos
5
Particional Organiza los registros dentro de k grupos. Tiene ventajas en aplicaciones que involucran gran cantidad de datos. Particional
k1 Y
k2 k3
X 6
Agrupamiento Particional K-medias Crea k grupos a partir de un conjunto de elementos (objetos), de modo que los miembros de un grupo sean similares. Ejemplo: Pacientes por edad, pulso, presión arterial, colesterol, entre otros. Estas magnitudes sobre el paciente representan un vector de datos Pulso Presión arterial Colesterol …
una dimensión otra dimensión otra dimensión
7
Agrupamiento Particional Procedimiento
k1
1 Se seleccionan K puntos o elementos, haciendo que éstos representen los “centros” de los grupos.
Y k2
k3 X
8
Agrupamiento Particional Procedimiento
2 Se asigna cada uno de los elementos restantes al centro más cercano. Esto es, la distancia mínima entre el elemento y el centro. La medida de distancia es la euclidiana.
k1
Y k2
k3 X
9
Agrupamiento Particional Procedimiento
k1
3 Una vez que todos los elementos han sido asignados, se recalculan los K centros.
k1
Y k2 k3 k2 k3 X
10
Agrupamiento Particional Procedimiento
k1
4 Y Se repiten los pasos 2 y 3 hasta que los centros ya no se modifiquen más.
k2
k3
X
11
Agrupamiento Particional
12
3. Método para decidir la cantidad de grupos
13
3. Método para decidir la cantidad de grupos
14
Método del Codo Elbow method La idea básica de los métodos de partición, como k-medias, es definir el número de grupos. Para esto § En primer lugar, para aplicar este método se debe calcular SSE, para varias configuraciones de k (por ejemplo: 2, 3, 4, 5, 6, 7 y 8). § SSE es la suma de la distancia al cuadrado entre cada miembro del grupo y su centroide.
G1 (
!!" = $
%&'
$
)∈+%
,-./(1, 3-)5
Y
G2 G3 X
15
Método del Codo Algoritmo 1. Calcular el agrupamiento para diferentes valores de k. Por ejemplo, k de 2 a 10 grupos. 2. Para cada k, calcular la suma total de cuadrados dentro del grupo (SSE, conocido también como WSS) 3. Trazar la curva de SSE (WSS) de acuerdo con el número de grupos k. 4. La ubicación de una curva (efecto del codo) en el gráfico se considera como un indicador del número adecuado de grupos. Número de grupos
(
!!" = $
%&'
$
)∈+%
,-./(1, 3-)5 Centroide
Elemento del grupo
16
Método del Codo Algoritmo
17
Método del Codo Algoritmo
18
Ejemplo
19
Agrupamiento Particional Retomando el ejemplo sobre ‘Empleados’ ID E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15
Salario 10000 20000 15000 30000 10000 40000 25000 20000 20000 30000 45000 8000 20000 10000 8000
Casado Sí No Sí Sí Sí No No No Sí Sí No Sí No No No
Coche No Sí Sí Sí Sí Sí No Sí Sí Sí No Sí No Sí Sí
Hijos 0 1 2 1 0 0 0 0 3 2 0 2 0 0 0
Vivienda Alquiler Alquiler Prop Alquiler Prop Alquiler Alquiler Prop Prop Prop Alquiler Prop Alquiler Alquiler Alquiler
Sindicato No Sí Sí No Sí Sí Sí Sí No No No No No Sí No
Faltas/Año 7 3 5 15 1 3 0 2 7 1 2 3 27 0 3
Antigüedad 15 3 10 7 6 16 8 6 5 20 12 1 5 7 2
Sexo M F M F M F M F M M F M F M M 20
Agrupamiento Particional Retomando el ejemplo sobre ‘Empleados’
ID E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15
Salario 10000 20000 15000 30000 10000 40000 25000 20000 20000 30000 45000 8000 20000 10000 8000
Casado 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0
Coche 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1
Hijos 0 1 2 1 0 0 0 0 3 2 0 2 0 0 0
Vivienda 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0
Sindicato 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0
Faltas/Año 7 3 5 15 1 3 0 2 7 1 2 3 27 0 3
Antigüedad 15 3 10 7 6 16 8 6 5 20 12 1 5 7 2
Sexo 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 21
Agrupamiento Particional Retomando elw ejemplo sobre ‘Empleados’ Datos <- read.table("/Users/guille/Documents/1 FI-UNAM/1 Cursos/IA 2019/2 CasosPracticos/2 Agrupamiento/Empleados.txt", header=TRUE, sep="\t") Datos
22
Agrupamiento Particional Distancia euclidiana
1
Distancias <- dist(Datos[2:10], method = "euclidean") Distancias
23
Agrupamiento Particional Método del codo (sin normalizar los datos)
2
set.seed(123) wss <- sapply(2:12, function(k) {kmeans(Datos[2:10], k, nstart=25)$tot.withinss}) plot(2:12, wss, type = "b", pch = 19, frame = FALSE, xlab = "Numero de grupos", ylab = "Suma total de cuadrados") # La función sapply simplifica la salida de los resultados de un vector o matriz
24
Agrupamiento Particional Método del codo (sin normalizar los datos) # Línea en el número deseado de grupos abline(v = 4, lty =2)
25
Agrupamiento Particional Método del codo (con datos normalizados) –Sólo en caso de requerirse–
3
Su aplicación mapea los valores al intervalo: [0, 1]
xn − xmin x = xmax − xmin * n
26
Agrupamiento Particional Método del codo (con datos normalizados) –Sólo en caso de requerirse–
3
NDatos <- scale(Datos[2:10]) set.seed(123) wss <- sapply(2:12, function(k) {kmeans(NDatos, k, nstart=25)$tot.withinss}) plot(2:12, wss, type = "b", pch = 19, frame = FALSE, xlab = "Numero de grupos", ylab = "Suma total de cuadrados") # La función sapply simplifica la salida de los resultados de un vector o matriz
27
Agrupamiento Particional Método del codo (con datos normalizados) –Sólo en caso de requerirse– # Línea en el número deseado de grupos abline(v = 4, lty =2)
28
Agrupamiento
Jerárquico
Vs
Particional
29
Agrupamiento Particional Obtención de grupos
3
set.seed(123) KMedias <- kmeans(Datos[2:10], centers=4) KMedias
30
Agrupamiento Particional Obtención de grupos cluster::clusplot(Datos[2:10], KMedias$cluster, color=T, shade=T, main='Empleados')
31
Agrupamiento Particional Obtención de grupos KMedias$cluster KMedias$centers KMedias$withinss KMedias$tot.withinss
(
!!" = $
%&'
$
)∈+%
,-./(1, 3-)5
32
Práctica guiada
33
Fuente de datos Variables climatológicas incluidas en el Sistema CLICOM (climatología computarizada). Estas variables corresponden a estaciones climatológicas del estado de Michoacán.
34
Fuente de datos Michoacán sobresale por su accidentado relieve formado por dos grandes provincias fisiográficas, Sierra Madre del Sur y Eje Neovolcánico, así como por su variedad de suelos y climas.
35
Problema Michoacán cuenta con 22 acuíferos, 9 de ellos están en condición de sobreexplotados, CONAGUA (2005). § Pastor Ortiz-La Piedad (1605).
§ § § § § § § §
Ciénega de Chapala (1607). Zamora (1608). Briseñas-Yurécuaro (1609). Ciudad Hidalgo-Tuxpan (1610). Uruapan (1614). Nueva Italia (1616). Apatzingán (1620). Cotija (1622).
36
Fuente de datos Análisis de datos
37
Fuente de datos
38
1. Acceso a la fuente de datos Estaciones <- read.table("/Users/guille/Documents/1 FI-UNAM/1 Cursos/IA 2019/2 CasosPracticos/2 Agrupamiento/Estaciones.txt", header=TRUE, sep="\t")
39
1. Acceso a la fuente de datos Estructura de la fuente de datos str(Estaciones) Estadísticas summary(Estaciones) Graficar pares de variables plot(EneTO~Estacion, Estaciones)
40
2. Estimación de las similitudes
Distancias <- dist(Estaciones[2:50], method = "euclidean") Distancias
41
3. Obtención de grupos set.seed(123) wss <- sapply(2:10, function(k) {kmeans(Estaciones[2:50], k, nstart=20)$tot.withinss}) plot(2:10, wss, type = "b", pch = 19, frame = T, xlab = "Numero de grupos", ylab = "Suma total de cuadrados") abline(v = 5, lty =2)
42
3. Obtención de grupos AParticional <- kmeans(Estaciones[2:50], centers = 5, iter.max = 20) AParticional
43
3. Obtención de grupos cluster::clusplot(Estaciones[2:50], AParticional$cluster, color=T, shade=T, main='Estaciones')
44
4. Obtención de grupos (Jerárquico) AJerarquico <- hclust(Distancias, method = 'average’) AJerarquico rect.hclust(AJerarquico, k = 5, border = 2:6)
45
5. Interpretación de grupos Variación estacional de la precipitación mensual
30.00
200.00 160.00 120.00 80.00 40.00 0.00
Ene Feb
Mar
Abr
May Jun
Jul
Mes
Ago Sep
25.00 20.00
15.00
Oct10.00 Nov Dic
St16007 St16016 St16020 St16024 St16028 St16033 St16045 mensual St16050 St16057 St16074 St16081 St16091 St16094 St16107 St16118 St16123 St16133 St16141 St16151 St16162 St16188 St16194 St16219 St16228 St16254 St16515
5.00
0.00
de temperatura observeda St16007 St16016 St16020 St16024 St16028 St16033 St16045 St16050 St16057 St16074 St16081 St16091 St16094 St16107 St16118 St16123 20.00St16133 St16141 St16151 St16162 15.00St16188 St16194 St16219 St16228 St16254 10.00St16515
Media mensual de temperatura máxima 50.00 45.00 40.00 35.00 30.00 25.00 20.00
15.00 Jul Ago Sep Oct Nov Dic Año 10.00
Ene Feb Mar Abr May Jun
St16006 St16014 St16017 St16023 St16027 St16031 St16043 St16048 St16052 St16059 St16075 St16090 St16093 St16095 St16109 St16120 St16124 St16136 St16142 St16159 St16165 St16192 St16208 St16225 St16248 St16255
5.00 0.00 Ene Feb Mar Abr May Jun
Temperatura Mínima (ºC)
240.00
Temperatura Observada (ºC)
Precipitación (mm)
280.00
St16006 St16014 St16017 St16023 St16027 St16031 St16043 Media St16048 St16052 St16059 St16075 St16090 St16093 St16095 St16109 St16120 St16124 St16136 St16142 St16159 St16165 St16192 St16208 St16225 St16248 St16255
Temperatura Máxima (ºC)
320.00
5.00
St16006 St16014 St16017 St16023 St16027 St16031 St16043 St16048 St16052 St16059 St16075 St16090 St16093 St16095 St16109 St16120 St16124 St16136 St16142 St16159 St16165 St16192 St16208 St16225 St16248 St16255
Media mensual de temperatura mínima
Jul 0.00 Ago Sep Oct Nov Dic Ene Feb Mar Abr May Jun
Año
St16007 St16016 St16020 St16024 St16028 St16033 St16045 St16050 St16057 St16074 St16081 St16091 St16094 St16107 St16118 St16123 St16133 St16141 St16151 St16162 St16188 St16194 St16219 St16228 St16254 St16515
Jul Ago Sep Oct Nov Dic
-5.00
-10.00 Año
St16006 St16014 St16017 St16023 St16027 St16031 St16043 St16048 St16052 St16059 St16075 St16090 St16093 St16095 St16118 St16120 St16124 St16136 St16142 St16159 St16165 St16192 St16208 St16225 St16248 St16255
St16007 St16016 St16020 St16024 St16028 St16033 St16045 St16050 St16057 St16074 St16081 St16091 St16094 St16107 St16109 St16123 St16133 St16141 St16151 St16162 St16188 St16194 St16219 St16228 St16254 St16515
46
5. Interpretación de grupos Los resultados pueden relacionarse con el mapa de climas del INEGI.
47
5. Interpretación de grupos Los resultados pueden relacionarse con el mapa de climas del INEGI.
La región 1 quedó conformada por 10 estaciones que se ubican en la zona norte y noreste del estado, cubriendo por lo general zonas de la provincias fisiográfica Eje Neovolcánico. P promedio total anual alcanza valores entre los 721 y 1534 mm y T media anual oscila entre los 10.6 y 17.4 ºC. Templado subhúmedo con lluvias en verano y Semifrío húmedo con abundantes lluvias en verano,
La región 2 quedó integrada por 11 estaciones climáticas, las cuales se ubican en la zona Sur del estado, cubriendo sectores de la provincia fisiográfica Sierra Madre del Sur. P promedio total anual de 500 a 989 mm y T media anual que oscila entre los 23 y 31 ºC.
…
Seco y semiseco muy cálido, y Cálido subhúmedo con lluvias en verano.
48