Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CLSTERS EN EL ENTORNO R
crea un objeto R, usualmente de la clase data.frame (aunque hay otras posibilidades). Esta clase representa lo que usualmente pensamos como una matriz de datos, donde las filas representan individuos u objetos y las columnas son las variables observadas, aadiendo opcionalmente informacin adicional sobre el tipo de las variables (si son numricas, o cadenas de caracteres, etc.) o los nombres de individuos o variables. Un ejemplo de estos conjuntos de datos, que emplearemos en esta prctica, es eurodist, una matriz de datos de distancias entre ciudades europeas. La instruccin: data(eurodist) crea en R el objeto eurodist, que es de la clase dist, una matriz de distancias, es decir, una matriz simtrica con ceros en la diagonal de la que, por tanto, se guarda slo el tringulo inferior sin la diagonal.
Los datos spam contienen datos sobre emails, para clasificar como spam o no spam. Tambin nos sern tiles. Los datos vowel.train y vowel.test sirven para pruebas de reconocimiento de vocales inglesas a partir del sonido registrado. Los datos countries contienen un conjunto de datos de disimilaridades entre pases, que puede emplearse para pruebas de anlisis de clsters, de representacin eucldea (escalado multidimensional) o de mapas autoorganizados.
A continuacin, aplicaremos kmeans a los datos de dgitos escaneados. En realidad, este conjunto de datos est preparado para clasificacin segn diversos procedimientos de aprendizaje supervisado, es decir, despus de haber entrenado un algoritmo de clasificacin en el subconjunto zip.train, en el que cada bitmap tiene una etiqueta con el dgito al que corresponde, realizar el reconocimiento ptico de caracteres (OCR ) con nuevos bitmaps, como los que forman parte del subconjunto zip.test. Para la presente prctica, descartaremos las etiquetas identificadoras, juntaremos los bitmaps correspondientes a dos o ms dgitos y veremos cmo el algoritmo kmeans permite separarlos en clases. Con la instruccin: data(zip.train) creamos el data.frame con nombre zip.train, que tiene 7291 filas de 257=1+256 columnas. La primera columna tiene la etiqueta del dgito. Mediante: zip.train1<-zip.train[,-1] eliminamos esta columna, y con: z<-kmeans(zip.train1,10) ejecutamos el mtodo de k-medias con k=10 y creamos un objeto de la clase kmeans de nombre z (ver la estructura de esta clase en la pgina de ayuda). Es interesante visualizar los prototipos de los dgitos creados por el algoritmo de k medias. Para ello usaremos la funcin zip2image(), descrita ms arriba. Como esta funcin est preparada para un fichero en el formato de los datos zip, vamos a aadirle una columna a la matriz de los centroides: z0<-cbind(1:10,z$centers) Para mostrar el primer prototipo, hacemos: a1<-zip2image(z0,1) image(a1, col=gray((0:32)/32)) Del mismo modo podemos visualizar los dems. Tambin es interesante producir ms de 10 o menos de 10 clsters y visualizar como imgenes los centroides resultantes. En segundo lugar, vamos a ver la produccin de clsters jerrquicos con la funcin hclust(). Como en el caso anterior, ver la pgina de ayuda de la funcin. La instruccin: h<-hclust(eurodist) crea un objeto de la clase hclust, que tiene toda la informacin del resultado del anlisis de clsters jerrquicos de las distancias entre ciudades europeas. Para ver su estructura, hacemos:
str(h) Para ver un resumen del objeto, print(h) o, equivalentemente, h Para hacer el dibujo del dendrograma producido, hacemos plot(h) De este modo vemos una caracterstica importante de la orientacin a objetos del lenguaje R. Es posible, cuando se disea una clase de objetos, escribir mtodos especficos para la clase, que toman el lugar de los mtodos genricos. As, la funcin plot() que, en general sirve para dibujar diagramas de dispersin, de puntos, se especializa para objetos de la clase hclust, dando lugar al dibujo de un dendrograma. Observad, en la sintaxis de la funcin, que puede hacerse el anlisis de clsters con uno de mltiples mtodos, los tres ms importantes, mencionados en la clase de teora, y algunos ms. Probad los distintos resultados. El ejemplo que aparece en la pgina de ayuda de hclust emplea la funcin dist(), que permite obtener una matriz de distancias, como un objeto de la clase dist, a partir de una matriz rectangular de datos, objeto de la clase data.frame. Observad que mediante el parmetro opcional method se puede emplear una de varias posibles medidas de distancia. Las funciones as.matrix() y as.dist() permiten pasar de la clase dist a una matriz completa, de la clase matrix y viceversa.
El paquete cluster
Aparte de las funciones bsicas del paquete stats, hay varios paquetes especficos para anlisis de clsters, segn varios algoritmos y para diversos tipos de datos. El paquete cluster contiene varias implementaciones de algoritmos de formacin de clsters, algunos de ellos para grandes bases de datos. Los nombres de las funciones son, en general, acrnimos de una descripcin del algoritmo, si bien los autores han buscado tambin hacer un juego de palabras, dando lugar a nombres de mujer. Este procedimiento de formacin de nombres se aplica tambin a la funcin que usan para el clculo de distancias, daisy (Dissimilarity Matrix Calculation). Los tres algoritmos: pam (Partitioning Around Medoids) clara (Clustering Large Applications)
son mtodos de particin, mientras que los otros tres: agnes (Agglomerative Nesting - Hierarchical Clustering) diana (Divisive Analysis Clustering) mona (Monothetic Analysis Clustering of Binary Variables)
son de tipo jerrquico. La funcin daisy tiene utilidad an si no se desea emplear los algoritmos del paquete cluster. Sirve, como la funcin dist del paquete stats, para calcular una matriz de disimilaridades o distancias a partir de un data.frame o una matriz de datos. Tiene esencialmente la misma sintaxis que dist, pero es una generalizacin neta de sta, permitiendo datos no numricos.