¿Rápido k-significa como algoritmo para 10 ^ 10 puntos?

14

Estoy buscando hacer clusters de k-means en un conjunto de puntos de 10 dimensiones. El truco: hay 10 ^ 10 puntos .

Estoy buscando solo el centro y el tamaño de los grupos más grandes (digamos de 10 a 100 grupos); No me importa en qué grupo termina cada punto. Usar k-means específicamente no es importante; Solo estoy buscando un efecto similar, cualquier medio k aproximado o algoritmo relacionado sería genial (minibatch-SGD significa, ...). Dado que GMM es, en cierto sentido, el mismo problema que k-means, hacer GMM con los mismos datos de tamaño también es interesante.

A esta escala, el submuestreo de los datos probablemente no cambie el resultado de manera significativa: las probabilidades de encontrar los mismos 10 grupos principales utilizando una muestra de datos de 1/10000 son muy buenas. Pero incluso entonces, ese es un problema de 10 ^ 6 puntos que está en / más allá del borde del tractable.

Alex I
fuente
1
Se describen varios algoritmos en el libro "Minería de conjuntos de datos masivos", que puede descargar gratuitamente aquí . Lea el Capítulo 7 "Agrupación".
lanenok

Respuestas:

12

k-means se basa en promedios .

Modela clústeres utilizando medios y, por lo tanto, la mejora al agregar más datos es marginal. El error de la estimación promedio se reduce con 1 / sqrt (n); así que agregar más datos vale cada vez menos ...

Las estrategias para datos tan grandes siempre giran en torno al muestreo:

Si quieres tiempo de ejecución sublineal, ¡tienes que hacer un muestreo!

De hecho, Mini-Batch-Kmeans etc. hace exactamente esto: muestra repetidamente del conjunto de datos.

Sin embargo, el muestreo (en particular, el muestreo imparcial) tampoco es exactamente gratuito ... por lo general, tendrá que leer sus datos linealmente para muestrear, porque no tiene acceso aleatorio a registros individuales.

Yo iría con el algoritmo de MacQueen. Está en línea; de manera predeterminada, realiza una sola pasada sobre sus datos (aunque es popular repetir esto). No es fácil de distribuir, pero supongo que puede permitirse leer linealmente sus datos, digamos 10 veces desde un SSD.

HA SALIDO - Anony-Mousse
fuente
¡No sabía sobre el algoritmo en línea de MacQueen! ¿Suele obtener los mismos resultados que los medios K "clásicos"? ¿Qué pasa con el uso de muestreo de yacimientos? De esta forma, OP tiene una muestra para volver a ejecutar K-means en caso de que se prueben múltiples valores de K.
Victor Ma
6

Como comentario adicional, tenga en cuenta que el uso de K-means para datos 10D podría terminar en ninguna parte de acuerdo con la maldición de la dimensionalidad. Por supuesto, varía un poco según la naturaleza de los datos, pero una vez que traté de determinar el umbral en el que K-Means comienza a comportarse de manera extraña con respecto a la dimensionalidad, obtuve algo así como 7D. Después de 7 dimensiones, comenzó a fallar los grupos correctos (mis datos se generaron manualmente de acuerdo con 4 distribuciones gaussianas bien separadas y utilicé la función kmeans de MATLAB para mi pequeño experimento).

Kasra Manshaei
fuente
Esto es posible y, por supuesto, siempre depende de los datos. Sin embargo, dado que el póster tiene 10 ^ 10 muestras (presumiblemente independientes), parece que 10 dimensiones no serían un problema demasiado grande aquí.
Ryan J. Smith
2
Gracias por tu comentario @ RyanJ.Smith. Tu comentario está exactamente en la misma dirección que el mío. Simplemente no vi nada sobre este problema en la publicación. Y sobre el nr de muestras; Sin embargo, tiene muchos puntos de muestra que aún podría verse atrapado en el problema de la dimensionalidad. Creo que está discutiendo el lado opuesto del Problema de tamaño de muestra bajo que creo que no es válido. Si tiene datos dimensionales altos, un tamaño de muestra bajo será un problema, pero creo que una gran cantidad de datos no significa necesariamente nada.
Kasra Manshaei
10 dimensiones aún no son muchas.
HA SALIDO - Anony-Mousse
1
¿Cómo determinas a mi amigo? Lo que dije fue el resultado de un experimento diseñado para responder a esa pregunta, sin embargo, ¡NO PUEDE responderse en general! ¿Qué es exactamente "mucho" en tu comentario? depende de muchas circunstancias como mencioné en mi respuesta. En algunas situaciones, 10D podría ser problemático.
Kasra Manshaei