Cluster Big Data en R y ¿el muestreo es relevante?

13

Soy nuevo en ciencia de datos y tengo problemas para encontrar clústeres en un conjunto de datos con 200,000 filas y 50 columnas en R.

Dado que los datos tienen variables tanto numéricas como nominales, los métodos como K-means que usa la medida de distancia euclidiana no parecen ser una opción adecuada. Así que recurro a PAM, agnes y hclust, que acepta una matriz de distancia como entrada.

El método Margarita puede funcionar en datos de tipo mixto, pero la matriz de distancia es demasiado grande: 200,000 veces 200,000 es mucho mayor que 2 ^ 31-1 (el límite de longitud del vector antes de R 3.0.0).

El nuevo R 3.0.0 lanzado ayer admite vectores largos con una longitud mayor a 2 ^ 31-1. Pero una matriz doble de 200,000 por 200,000 requiere una RAM continua mayor a 16Gb, lo cual no es posible en mi máquina.

Leí acerca de la computación paralela y el paquete bigmemory y no estoy seguro de si van a ayudar: si estoy usando Daisy, generará una gran matriz que de todos modos no puede caber en la memoria.

También leí sobre la publicación sobre muestreo: ¿es relevante el muestreo en el momento de los 'grandes datos'?

Entonces, en mi caso, ¿es relevante usar el muestreo en el conjunto de datos, agrupar en la muestra y luego inferir la estructura de todo el conjunto de datos?

¿Me puede dar alguna sugerencia? ¡Gracias!

Acerca de mi máquina:

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

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

SO: Windows 7 de 64 bits

RAM: 16.0GB

Comunidad
fuente
El único método de agrupación que sé que es para grandes datos (por ejemplo, millones de casos) y puede aceptar variables nominales junto con las numéricas es el clúster TwoStep que se encuentra en SPSS.
ttnphns

Respuestas:

4

O(norte3)O(norte2)

El PAM en sí no debería requerir una matriz de distancia completa, pero se sabe que el algoritmo se escala mal, ya que luego necesita (re) calcular todas las distancias por pares dentro de cada grupo en cada iteración para encontrar los elementos más centrales. Esto es mucho menor si tiene una gran cantidad de clústeres, ¡pero sin embargo es bastante costoso!

O(nortelosolnorte)

Sin embargo, para la mayoría de estos algoritmos, primero debe asegurarse de que su función de distancia sea realmente buena; entonces debe considerar formas de acelerar las consultas mediante el uso de índices apropiados.

También tenga en cuenta que en muchos casos, y esto puede ser válido para PAM, puede ejecutar el algoritmo en una muestra primero , luego solo refinarlo en el conjunto de datos completo. Si su muestra es representativa, los algoritmos como k-means y PAM deberían darle esencialmente el mismo resultado que en el conjunto de datos completo.

HA SALIDO - Anony-Mousse
fuente
No ayudará al OP aquí, pero en caso de que aparezca alguien que tenga números de muestra "intermedios": también hay un clúster rápido para R (vea math.stanford.edu/~muellner/fastcluster.html ).
cbeleites apoya a Monica el
Hola, Anony-Mousse, ¿podría indicarme algunos de los algoritmos que utilizan la aceleración de la estructura de índice? ¡Muchas gracias!
Por ejemplo, DBSCAN se puede acelerar bien con índices que admiten consultas de rango de epsilon. Probablemente también significa agrupación por turnos. ÓPTICA, que también se puede acelerar de esta manera, puede ser visto como una versión más avanzada de vinculación agrupación (que se podría llamar "densidad de vinculación jerárquica agrupación")
Ha dejado de fumar - Anony-Mousse
2

pruebe la función CLARA del paquete de clúster en R. Implementa un algoritmo tipo pam submuestreando sus datos (asegúrese de proporcionar tamaños de submuestra que tengan sentido para sus datos porque los valores predeterminados son deliberadamente demasiado pequeños). Funciona especialmente bien si los medios de sus datos pueden representarse con una pequeña muestra del total de datos (es decir, hay relativamente menos grupos en el conjunto de datos). De esta manera, puede agrupar de manera eficiente con una pequeña muestra aleatoria y agregar puntos a la solución de agrupación precalculada.

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

zzk
fuente
hola zzk, gracias por la respuesta. Leí sobre clara antes, pero parece que solo proporciona métrica euclidiana y manhattan. El principal problema es que mi conjunto de datos tiene variables numéricas y nominales. Por lo tanto, no usar métrica para la medición de distancia no es apropiado.
ah sí, eso también es una limitación para mí. Creo que el método en realidad se puede hacer a cualquier distancia arbitraria, pero aún no me he molestado en revisar el código fuente para ver si se puede cambiar.
zzk
0

También puede aplicar análisis de correspondencia múltiple en sus variables cualitativas y hacer transformaciones en una variable numérica.

Alvaro
fuente
2
Parece una buena idea, pero puede ser un poco escasa. ¿Puedes explicar esto un poco para explicar qué es y por qué eso ayudaría?
gung - Restablece a Monica