Está en la página 1de 50

1

Diplomado en Estadística–USACH

Clase 3: Clustering No Jerárquico

Felipe Elorrieta López

Agosto 21, 2018

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Índice 2

Introducción

Aglomeramiento No Jerárquico

Algoritmo de Partición K-medias

SOM-Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Análisis de Segmentación
3

En esta sección veremos los métodos de segmentación no


jerárquicos. Estos métodos son aplicables a los problemas reales de
minería de datos, dado que por la cantidad de datos y por la cantidad
de variables que se manejan no es posible saber y realizar un
análisis grafico para determinar el número de grupos a priori.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo de K-medias
4

I MacQueen (1967) propone por primera vez un algoritmo que,


dado un número de k grupos, permita asignar iterativamente
observaciones a cada uno de estos grupos, hasta que se
satisfacen algunos criterios de parada o convergencia. El más
conocido es el algoritmo de K-medias.
I A diferencia del método aglomerativo jerárquico, el algoritmo
K-medias está en constante actualización, hasta encontrar una
solución convergente, es decir, los grupos pueden ir cambiando
de una a otra iteración hasta obtener una solución adecuada.
I Una desventaja de este tipo de algoritmos es su sensibilidad
respecto a los valores iniciales

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo de K-medias
5

1. Seleccionar K puntos como los centros iniciales de cada grupo, esto se puede
hacer de las siguientes formas:
1.1 Asignando aleatoriamente los objetos a los grupos y tomando los centros
de los grupos así formados.
1.2 Tomando como centro los K puntos más lejanos entre sí.
1.3 Construyendo grupos iniciales con información a priori y calculando sus
centros, o bien seleccionando centros a priori.
2. Calcular una distancia de cada elemento a los centros de los K grupos, y asignar
cada elemento al grupo de cuyo centro este más próximo.
3. Se recalculan los centros de los clústers, es decir se actualiza el vector de
medias.
4. Se iteran los pasos anteriores hasta que se cumpla con un criterio de parada, o
hasta que los centroides se modifiquen levemente.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo de K-medias
6

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
7

El criterio de optimalidad es denotado como SCDG y corresponde a:


P p P
k P n 2
minSCDG = min xijk − x̄jg
g=1 j=1 i=1

Este criterio busca minimizar la variabilidad dentro de cada


agrupación.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo de K-medias
8

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Consideraciones
9

Consideraciones al realizar una segmentación de K medias:


I Cuando se realizan los análisis de segmentación, siempre es recomendable
estandarizar las variables, solo cuando todas las variables se encuentran en la
misma escala no es necesario hacerlo.
I Los métodos de segmentación de K medias, suelen comenzar con semillas para
los segmentos y esto puede influir mucho en el resultado.
I Muchas veces los paquetes computacionales eligen las semillas iniciales para
realizar la segmentación, según el orden de la muestra y esto influye mucho en
los resultados.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Diferencias con Clustering Jerárquico
10

I Clustering Jerárquico
I Confiable
I Consume mucho tiempo
I No es recomendable para base de datos grandes.
I Clustering Particional
I Rápido
I Problema con la semilla inicial.
I Problema de no convergencia.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Diferencias con Clustering Jerárquico
11

I Además, en Clustering Particional, cada punto es asignado a un


único cluster.
I En Clustering Jerárquico se crean clusters anidados, es decir
una observación puede pertenecer a muchos clusters.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
12

I Para probar el método de K-Medias se utilizara la base de datos Iris, en la cual


se entregan las medidas en centímetros de la longitud y anchura del sépalo y el
pétalo de 50 flores de cada una de las 3 especies de iris. Las especies son Iris
setosa, versicolor y virginica.
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
13

I Si graficamos las variables “Sepal Width” y “Sepal Lenght”, obtenemos lo


siguiente

Figure : Base de datos Iris

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
14

I Luego, a partir del siguiente código se pueden obtener los clúster a partir del
algoritmo de K-Medias
set.seed(8989)
cl <- kmeans(iris[,1:4],3)
plot(iris[,1:2], col = cl$cluster, main="Grafico de K-Medias",pch=20,lwd=3)
points(cl$centers, col = 1:5, pch = 8)

tab<-table(iris[,5],cl$cluster)

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
15

I Obtenemos el siguiente resultado,

Figure : Clustering K-Medias

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
16

I Una medida para validar los clúster obtenidos, puede ser la tasa de mala
clasificación (misclasification error rate). La cual consiste en el ratio de las
observaciones mal clasificadas, por el total de observaciones.
I Para observar esto, vemos una tabla en las que se tiene la clasificación original y
los clúster realizados.
1 2 3
setosa 0 0 50
versicolor 2 48 0
virginica 36 14 0
I Por lo tanto, la tasa de mala clasificación se obtiene como,
mcr<-1-(50+48+36)/150
mcr
[1] 0.1066667

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
17

I Ahora, si utilizamos solo el “Sepal Width” y “Sepal Lenght” para hacer los
clústers,
set.seed(8989)
cl2 <- kmeans(iris[,1:2],3)
plot(iris[,1:2], col = cl2$cluster, main="Grafico de K-Medias",pch=20,lwd=3)
points(cl2$centers, col = 1:5, pch = 8)

tab<-table(iris[,5],cl2$cluster)

mcr<-1-(50+38+35)/150
mcr
0.18
I En este caso, el error de mala clasificación es 0.18 y mayor que si se ocupan las
cuatro variables, por lo cual debiésemos quedarnos con los primeros clúster.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
18

I Para observar el comportamiento del algoritmo de k medias, también se puede


utilizar el grafico de dispersión multivariado, a partir del siguiente código,
pairs(iris[,1:4], pch=cl$pred, col=cl$cluster)

Figure : Clustering K-Medias

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
19

I En SAS Guide, también podemos utilizar el algoritmo de k-medias a partir del


nodo “Análisis de Clúster”.
I Nuevamente utilizamos la base de datos iris, que está en la librería SASHELP.

Figure : Análisis de Cluster

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
20

I Luego en Clúster escogemos la opción Algoritmo de K-Medias, con k = 3.

Figure : Análisis de Cluster

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
21

I Finalmente, en resultados guardamos los clúster obtenidos en una base de


datos.

Figure : Análisis de Cluster

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Número de Grupos
22

En la aplicación típica de un algoritmo de segmentación hay que fijar


el número de grupos, que en la explicación del ejemplo corresponde
a K. Para resolver este problema se han propuesto dos métodos para
seleccionar el número de grupos.
El primer procedimiento que es el más utilizado es realizar test F de
reducción de variabilidad, lo que hace el test es cuantificar la
reducción relativa de variabilidad al aumentar un grupo adicional en
el análisis.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Número de Grupos
23

Para realizar el test, se define un número inicial de 2 grupos, luego se suma la


variabilidad de cada variable una vez realizada la partición y se compara con el mismo
resultado para un numero de 3 grupos, luego el grupo de 3 se compara con el de 4 y
así hasta que la diferencia sea significativa. El test es

SCDG(G)−SCDG(G+1)
F = SCDG(G+1)/(n−G−1)

Una regla empírica que da resultados razonables, sugerida por Hartigan (1975), e
implantada en algunos programas informáticos, es introducir un grupo más si este
cociente es mayor que 10.
Ahora, si suponemos que la variabilidad de una de las variables medidas dado un
número de grupos corresponde a (xij − x̄i )2 y la suma para las p variables es
P

(xij − x̄i )2 , se puede reescribir este estadístico de la siguiente manera :


PP
MS(K ) =

(n−K )MS(K )−(n−K −1)MS(K +1)


F= MS(K +1)

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
24

I En la salida podemos ver medidas de ajuste, como el Pseudo Estadístico F,


además de los centros de los clústers.

Figure : Análisis de Cluster

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.-
25

I Finalmente, a partir del nodo Análisis de Tabla podemos comparar la agrupación


inicial con respecto a la obtenida por el clúster.

Figure : Análisis de Cluster

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


SOM Kohonen
26

En la actualidad otro método muy utilizado es la segmentación de


SOM Kohonen. Esta es una herramienta cuantitativa pertenece a la
familia de las redes neuronales.
Al igual que K medias, este método es un proceso recursivo basado
en un algoritmo. Una de las grandes ventajas del método es que
reduce la dimensionalidad del problema, llevándolo a un plano de
dos dimensiones y expresada en una interface de mapa que facilita
el nivel de interpretación.
Este método tiene grandes aplicaciones en:
I Reconstrucción de imágenes.
I Marketing.
I Codificación.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Mapas de Kohonen
27

I Los Mapas Auto-organizados (Self-organizing maps, SOMs), o


redes de Kohonen, pueden ser empleados con fines
descriptivos, cuando el objetivo es agrupar observaciones en
grupos homogéneos.
I Este tipo de modelos forman parte de los métodos no
supervisados, puesto que la variable de salida (la que actúa
como supervisor) está ausente.
I Un modelo de este tipo está especificado por una capa de
neuronas (n observaciones iniciales) de entrada y una capa de
neuronas de salida (grupos).
I El objetivo de este tipo de algoritmos es obtener una
representación “espacial” de la información, agrupando las
observaciones en una grilla final.
I Nodos de salida adyacentes denotan similaridad entre las
observaciones.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


SOM Kohonen
28

Un modelo SOM esta compuesto por dos capas de neuronas. La capa de entrada
(formada por N neuronas, una por cada variable de entrada) se encarga de recibir y
transmitir a la capa de salida la información procedente del exterior. La capa de salida
(formada por M neuronas) es la encargada de procesar la información y formar el
mapa de rasgos. Normalmente, las neuronas de la capa de salida se organizan en
forma de mapa bidimensional como se muestra en la figura:

Figure : Grafico del Diagrama de la Red

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Descripción SOM Kohonen
29

I El algoritmo comienza asignando un vector llamado ‘codebook’ a cada unidad de


la grilla de salida, el cual representará a un patrón típico de esa unidad
I Normalmente, se asigna al azar un subconjunto de los datos a cada unidad de la
grilla de salida.
I Durante el entrenamiento, los objetos se presentan repetidamente (en orden
aleatorio) al mapa.
I La “unidad ganadora”, es decir, la más similar al objeto de entrenamiento actual,
se actualizará para que se aún más similar (aprendizaje inmediato) .
I Se utiliza un promedio ponderado, donde el peso del nuevo objeto es uno de los
parámetros de entrenamiento de la SOM, llamada tasa de aprendizaje α.
Tipicamente, es un valo pequeño (≈ 0.05)

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Descripción SOM Kohonen
30

I El algoritmo SOM tiene una limitación espacial, que consiste en que las unidades
vecinas deben tener un ‘codebook’ similar y por lo tanto, no se debe actualizar
solo la “unidad ganadora”, si no que tambien sus vecinos.
I Tanto la taza de aprendizaje, como el tamaño de la vecnidad disminuyen en cada
iteración, de modo que eventualmente (en la implementación en R) después de
un tercio de las iteraciones se actualizan solo las “unidades ganadoras”.
I Despúes de eso el procedimiento es exactamente igual a k-medias.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Tasa de Aprendizaje
31

La tasa de aprendizaje α(t) puede ser definida por las siguientes funciones:
I Tasa de aprendizaje lineal:
 
t
α(t) = α0 1 − T

I Tasa de aprendizaje Exponencial o power:


 t/T
0.005
α(t) = α0 α0

I Tasa de aprendizaje inversa:


α0
α(t) =
(1+ 100t
T )

La función de aprendizaje más utilizada es la lineal.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
32

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
33

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
34

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
35

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
36

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
37

Algoritmo

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
38

Antes de comenzar el algoritmo se supone que las variables de la muestra se


encuentran estandarizadas. Algoritmo de SOM Kohonen:
I Se fija la dimensión de la grilla de salida. Los pesos que conectan las neuronas
de entrada a las neuronas de salida se inicializan aleatoriamente.
I Sea r el número de iteraciones del algoritmo y hacer r = 0.
I Para cada neurona xi , seleccionar una neurona i ∗ de salida tal que se minimice
la distancia (euclídea) entre los vectores de entrada y los pesos que conectan
ambas capas.
I Se actualizan los pesos de acuerdo a una medida conocida como tasa de
aprendizaje (rate learning).
I Los pesos son normalizados tal que sean consistentes con las escalas iniciales.
I Los pasos anteriores se repiten hasta que algún criterio de convergencia es
alcanzado.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Algoritmo
39

Comparación respecto K-Means


I La ecuación de costo del algoritmo de SOM Kohonen es similar a la de K-Medias.
I La diferencias es que el algoritmo de SOM Kohonen se toma la distancia de
cada entrada respecto a todos los vectores de referencias, en lugar de solo el
centro más cercano como en k-medias.
I Aunque el algoritmo de agrupamiento K-Medias y SOM Kohonen están
íntimamente relacionados, la mejor manera de utilizarlos son diferentes.
I Mientras que el algoritmo de K-Medias se debe elegir un numero k de clúster de
acuerdo a los datos, en SOM el numero de vectores de referencia pueden
elegirse con una alta dimensión (grilla de salida), independiente del número de
grupos final.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo.
40

I Se estudia el conjunto de datos wines, el cual contiene observaciones sobre 177


vinos italianos procedentes de tres cosecheros y 13 variables, como
concentraciones de alcohol y flavonoides entre otras.
I Para aplicar la técnica SOM de Kohonen en R, es necesario bajar la librería
kohonen a partir del siguiente código,
require(kohonen)
I Para llamar a la base se debe aplicar el siguiente código
data(wines)

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
41

I El código para la técnica de SOM Kohonen, es el siguiente


set.seed(7)

training <- sample(nrow(wines), 120)


Xtraining <- scale(wines[training, ])
Xtest <- scale(wines[-training, ],center = attr(Xtraining, "scaled:center"),
scale = attr(Xtraining, "scaled:scale"))

som.wines <- som(Xtraining, grid = somgrid(5, 5, "rectangular"))

names(som.wines)
I Aquí se aplica la técnica de Kohonen a una muestra de entrenamiento, para
después predecir a partir de una muestra de validación.

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
42

I Entre los resultos que se pueden obtener, está la evolución de la tasa de


aprendizaje en las iteraciones con el código
plot(som.wines, type="changes")

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
43

I Podemos hacer un grafico descriptivo de estrellas, para comparar los nodos de


la grilla de salida
plot(som.wines, type="codes", main = c("Codes X"))

Codes X

alcohol tot. phenols col. hue


malic acid flavonoids OD ratio
ash non-flav. phenols proline
ash alkalinity proanth
magnesium col. int.

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
44

I Podemos ver la cantidad de observaciones que hay en cada nodo de la grilla de


salida
plot(som.wines, type="counts")

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
45

I Podemos ver la distancia respecto a los vecinos de cada nodo de la grilla de


salida
plot(som.wines, type="dist.neighbours", main = "SOM neighbour distances")

SOM neighbour distances

25

20

15

10

Figure : Algoritmo SOM Kohonen

Felipe Elorrieta | Técnicas de Segmentación y Clasificación


Ejemplo
46

I Podemos ver la distribución en los nodos de la grilla de salida de cada una de las
variables usadas en el clustering
I Por ejemplo, para la variable 1.
plot(som.wines, type=’property’, property=som.wines$codes[,1],main=
names(as.data.frame(som.wines$codes)[1]))
alcohol

-1

Figure : Algoritmo SOM Kohonen


Felipe Elorrieta | Técnicas de Segmentación y Clasificación
Ejemplo
47

I Finalmente, para ver de mejor manera los patrones de comportamiento del


cluster, podemos hacer un cluster jerarquico sobre los 25 nodos de la grilla,
dando un valor de K
I Supongamos, k = 6.
som_cluster <- cutree(hclust(dist(som.wines$codes)), 6)
# plot these results:
plot(som.wines, type="mapping", bgcol = som_cluster+1, main = "Clusters",pch=20)
add.cluster.boundaries(som.wines, som_cluster)
Clusters

Figure : Algoritmo SOM Kohonen


Felipe Elorrieta | Técnicas de Segmentación y Clasificación
Ejemplo
48

I Otra forma de ver los clusters es con el gráfico de estrella


plot(som.wines, type="codes", main = c("Codes X"),bgcol = som_cluster+1)
add.cluster.boundaries(som.wines, som_cluster)

Codes X

alcohol tot. phenols col. hue


malic acid flavonoids OD ratio
ash non-flav. phenols proline
ash alkalinity proanth
magnesium col. int.

Figure : Algoritmo SOM Kohonen


Felipe Elorrieta | Técnicas de Segmentación y Clasificación
Ejemplo
49

I Ahora con k = 3.
som_cluster <- cutree(hclust(dist(som.wines$codes)), 3)
# plot these results:
plot(som.wines, type="mapping", bgcol = som_cluster+1, main = "Clusters",pch=20)
add.cluster.boundaries(som.wines, som_cluster)
Codes X

alcohol tot. phenols col. hue


malic acid flavonoids OD ratio
ash non-flav. phenols proline
ash alkalinity proanth
magnesium col. int.

Figure : Algoritmo SOM Kohonen


Felipe Elorrieta | Técnicas de Segmentación y Clasificación
Ejemplo
50

I Finalmente, podemos usar los datos de prueba para asignar nuevas


observaciones a los clusters
I Además, usaremos información adicional correspondiente al grupo verdadero de
cada observación para verificar que los clusters creados funcionan
som.prediction <- predict(som.wines, newdata = Xtest,
trainX = Xtraining,
trainY = factor(wine.classes[training]))
t<-table(wine.classes[-training], som.prediction$prediction)

mce<-1-sum(diag(t))/sum(t)
I Luego, calculamos el MCE
1 2 3
1 18 0 0
2 0 22 2
3 0 0 15
I De esta manera se obtiene un error de mala clasificación de 0.035

Felipe Elorrieta | Técnicas de Segmentación y Clasificación

También podría gustarte