Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diplomado en Estadística–USACH
Introducción
Aglomeramiento No Jerárquico
SOM-Kohonen
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.
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.
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)
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
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.
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
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:
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.
La tasa de aprendizaje α(t) puede ser definida por las siguientes funciones:
I Tasa de aprendizaje lineal:
t
α(t) = α0 1 − T
Algoritmo
Algoritmo
Algoritmo
Algoritmo
Algoritmo
Algoritmo
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.
Codes X
25
20
15
10
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
Codes X
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
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