13 votos

¿Cluster de Big Data en R y muestra relevante?

Soy nuevo en ciencia de datos y tiene un problema encontrar clústeres en un conjunto de datos con más de 200.000 filas y 50 columnas en R.

Dado que los datos numéricos y de las variables nominales, métodos como el de K-medios que utiliza la distancia Euclídea medida no parece una opción adecuada. Así que me dirijo a PAM, agnes y hclust que acepta una matriz de distancias como entrada.

La margarita método puede funcionar en mixto tipo de datos, pero la matriz de distancias es demasiado grande: de 200.000 200.000 veces es mucho más grande que 2^31-1 (la longitud del vector límite antes de R 3.0.0.)

La nueva R 3.0.0 publicado ayer apoya mucho con los vectores de longitud mayor que 2^31-1. Pero una doble matriz de 200.000 200.000 requiere de un continuo de RAM más grande que la de 16 gb que no es posible en mi máquina.

He leído acerca de la computación paralela y bigmemory paquete y no estoy seguro de si va a ayudar a: si estoy usando daisy, se genera una gran matriz que no caben en la memoria de todos modos.

Yo también he leído sobre el post acerca de muestreo: Es la muestra relevante en el momento de la 'big data'?

Así que en mi caso, es relevante para el uso de muestreo en el conjunto de datos, en el grupo de la muestra y luego inferir la estructura de todo el conjunto de datos?

Puede usted por favor darme alguna sugerencia? Gracias!

Acerca de mi máquina:

R versión 3.0.0 (2013-04-03)

Plataforma: x86_64-w64-mingw32/x64 (64-bit)

OS: Windows 7 de 64 bits

RAM: 16.0 GB

4voto

Amadiere Puntos 5606

Como habrán notado, cualquier método que requiere una completa matriz de distancias no funciona. La memoria es una cosa, pero el otro es el tiempo de ejecución. Las implementaciones típicas de la agrupación jerárquica son en $O(n^3)$ (sé que ELKI ha FREGADERO, que es un $O(n^2)$ algoritmo de enlace único de la agrupación). Esto simplemente no escala a grandes conjuntos de datos.

PAM no debería requerir una completa matriz de distancias, pero el algoritmo es conocido a escala mal, porque entonces se debe volver a calcular todos los pares de distancias dentro de cada grupo en cada iteración para encontrar la mayoría de los elementos centrales. Esto es mucho menos si tiene un gran número de grupos, pero sin embargo bastante caro!

En su lugar, usted debe buscar métodos que puede utilizar el índice de estructuras para la aceleración. Con un buen índice de algoritmos de clustering se puede ejecutar en $O(n log n)$ que es mucho mejor para grandes conjuntos de datos.

Sin embargo, para la mayoría de estos algoritmos, primero necesita asegurarse de que su función de distancia es muy bueno; entonces usted necesita considerar las maneras de acelerar las consultas mediante el uso de índices adecuados.

También tenga en cuenta que en muchos de los casos - y esto bien puede sostener por PAM - se puede ejecutar el algoritmo en un ejemplo de primera, a continuación, sólo refinar en el conjunto de datos completo. Si la muestra es representativa, los algoritmos k-means y PAM debe darle esencialmente el mismo resultado que en el conjunto de datos completo.

3voto

mcmahling Puntos 11

pruebe la CLARA función de la agrupación de paquetes en R. implementa un pam-como algoritmo de submuestreo de sus datos (asegúrese de proporcionar la submuestra tamaños que tengan sentido para los datos porque los valores predeterminados son deliberadamente demasiado pequeño). Funciona especialmente bien si el mediods en que sus datos pueden ser representados por una pequeña muestra del total de los datos (es decir, hay relativamente pocos grupos en el conjunto de datos). De esta manera usted puede clúster de manera eficiente con una pequeña muestra aleatoria y añadir puntos a la precalculadas solución de clústeres.

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X