Tengo una matriz grande de datos binarios (650K filas * 62 columnas) (solo 0-1 entradas). La matriz es principalmente escasa: aproximadamente el 8% está lleno.
Me gustaría agruparlo en 5 grupos, digamos nombrado del 1 al 5. He intentado el agrupamiento jerárquico y no pude manejar el tamaño. También he utilizado el algoritmo de agrupación de k-medias basado en la distancia de Hamming, considerando los vectores de 650K de longitud 62. No obtuve resultados adecuados con ninguno de estos.
Por favor ayuda.
clustering
dataset
k-means
binary-data
Sin límites26
fuente
fuente
Respuestas:
Estás haciendo la pregunta equivocada.
En lugar de preguntar "qué algoritmo", debería preguntarse "qué es una categoría / clúster significativo en su aplicación".
No me sorprende que los algoritmos anteriores no funcionen, están diseñados para casos de uso muy diferentes. k-means no funciona con otras distancias arbitrarias. No lo use con la distancia de Hamming. Hay una razón por la que se llama k- medias , solo tiene sentido usarla cuando la media aritmética es significativa (que no es para datos binarios).
Es posible que desee probar los modos k, IIRC, esta es una variante que en realidad está destinada a ser utilizada con datos categoriales, y los datos binarios son algo categoriales (pero la dispersión aún puede matarlo).
Pero antes que nada, ¿ha eliminado duplicados para simplificar sus datos, y ha eliminado columnas únicas / vacías, por ejemplo?
Quizás APRIORI o enfoques similares también sean más significativos para su problema.
De cualquier manera, primero descubra lo que necesita, luego qué algoritmo puede resolver este desafío. Trabaje basado en datos , no probando algoritmos aleatorios.
fuente
Tal vez llego un poco tarde con la respuesta, pero probablemente sería útil para algún cuerpo en el futuro.
La teoría de resonancia adaptativa es un buen algoritmo para problemas de clasificación binaria. Consulte sobre ART 1. Puede encontrar más información en el libro gratuito de Diseño de redes neuronales en el capítulo 19.
Esta red combina una gran idea biológica y una buena implementación matemática. Además, este algoritmo es fácil de implementar y, en este libro, también puede encontrar instrucciones paso a paso sobre cómo construir este clasificador.
fuente
Un algoritmo clásico para la agrupación de datos binarios es el modelo de mezcla de Bernoulli. El modelo puede ajustarse usando métodos bayesianos y también puede ajustarse usando EM (maximización de expectativas). Puede encontrar código de python de muestra en todo GitHub, mientras que el primero es más poderoso pero también más difícil. Tengo una implementación de C # del modelo en GitHub (¡usa Infer.NET que tiene una licencia restrictiva!).
El modelo es bastante simple. Primero muestre el clúster al que pertenece un punto de datos. Luego muestree independientemente de tantos Bernoullis como tenga dimensiones en su conjunto de datos. ¡Tenga en cuenta que esto implica independencia condicional de los valores binarios dados el clúster!
En la configuración bayesiana, la asignación anterior sobre el clúster es una distribución de Dirichlet. Este es el lugar para poner prioridades si crees que algunos grupos son más grandes que otros. Para cada grupo debe especificar antes, una distribución Beta, para cada distribución de Bernoulli. Típicamente, este previo es Beta (1,1) o uniforme. Finalmente, no olvide inicializar aleatoriamente las asignaciones de clúster cuando se brinden datos. Esto romperá la simetría y la muestra no se atascará.
Hay varias características interesantes del modelo BMM en un entorno bayesiano:
Agrupación en línea (los datos pueden llegar como una secuencia)
El modelo se puede usar para inferir las dimensiones faltantes
El primero es muy útil cuando el conjunto de datos es muy grande y no cabe en la RAM de una máquina. El segundo se puede usar en todo tipo de tareas de imputación de datos faltantes, por ejemplo. imputando la mitad faltante de la imagen binaria MNIST.
fuente