Agrupando una matriz binaria

22

Tengo una matriz semi-pequeña de características binarias de dimensión 250k x 100. Cada fila es un usuario y las columnas son "etiquetas" binarias de algún comportamiento del usuario, por ejemplo, "likes_cats".

user  1   2   3   4   5  ...
-------------------------
A     1   0   1   0   1
B     0   1   0   1   0
C     1   0   0   1   0

Me gustaría encajar a los usuarios en grupos de 5-10 y analizar las cargas para ver si puedo interpretar grupos de comportamiento del usuario. Parece haber bastantes enfoques para ajustar clusters en datos binarios: ¿cuál creemos que podría ser la mejor estrategia para estos datos?

  • PCA

  • Hacer una matriz de similitud Jaccard , ajustar un grupo jerárquico y luego usar los "nodos" superiores.

  • K-medianas

  • K-medoides

  • Proximus ?

  • Inés

Hasta ahora he tenido cierto éxito con el uso de la agrupación jerárquica, pero realmente no estoy seguro de que sea la mejor manera de hacerlo ...

tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)

ingrese la descripción de la imagen aquí

wije
fuente
1
Para datos grandes (muchos nodos) y de alta dimensión, también puede valer la pena probar un algoritmo de agrupación de gráficos (utilizando, por ejemplo, similitud de tanimoto y métodos como la agrupación de Lovaina, RNSC, mcl). Tengo algunas dudas sobre si su tipo de datos generará grupos significativos (por supuesto, muy bien), pero esas dudas se relacionan con la agrupación en general, no específicamente con un tipo particular de agrupación. PCA es definitivamente algo para probar.
micans
66
Para ser sincero, me sorprende que esta pregunta haya atraído tan poca atención. ¿Por que es esto entonces? Para mí, esto suena como una pregunta extremadamente interesante.
Dror Atariah

Respuestas:

9

El análisis de clase latente es un enfoque posible.

Tome la siguiente distribución de probabilidad donde A, B y C pueden tomar valores de 1 o 0.

PAGS(UNAyo,sij,dok)

Si estos fueran independientes entre sí, entonces esperaríamos ver:

PAGS(UNAyo,sij,dok)=PAGS(UNAyo)PAGS(sij)PAGS(dok)

Una vez que se elimina esta posibilidad, podríamos plantear la hipótesis de que cualquier dependencia observada se debe a la agrupación de valores dentro de subgrupos no observados. Para probar esta idea, podemos estimar el siguiente modelo:

PAGS(UNAyo,sij,dok)=PAGS(Xnorte)PAGS(UNAyoEl |Xnorte)PAGS(sijEl |Xnorte)PAGS(dokEl |Xnorte)

Xnortenorte

5 5norte10

Sin embargo, tratar de identificar patrones significativos en 100 variables con 5-10 grupos probablemente requerirá reducir esa lista antes de estimar el modelo, que es un tema bastante complicado por derecho propio ( REF ).

DL Dahly
fuente
Genial, interesante. ¿Cuál diría que es el beneficio de usar esa técnica sobre cualquiera de las otras?
wije
Una ventaja es que la agrupación es difusa, lo que le permite tener en cuenta la incertidumbre en las tareas de clase posteriores. Otra es que, debido a que es un método basado en modelos, obtienes índices de ajuste basados ​​en la probabilidad que pueden ayudar a guiar la selección del modelo. Por supuesto, esto tiene el costo de tener que hacer suposiciones de distribución ... Estoy seguro de que otros métodos válidos tendrán sus propias compensaciones.
DL Dahly
5

En realidad, la extracción frecuente de conjuntos de elementos puede ser una mejor opción que la agrupación en dichos datos.

El conjunto habitual de algoritmos orientados a vectores no tiene mucho sentido. K-means, por ejemplo, producirá medios que ya no son binarios.

Anony-Mousse -Reinstate a Monica
fuente
¿Tiene sentido usar elementos frecuentes aunque deseo agrupar a los usuarios en lugar de las etiquetas (columnas)?
wije
1
En mi humilde opinión sí. Pero por razones obvias, las reglas de asociación no son una partición estricta del conjunto de datos. Un usuario puede ser miembro de más de un "conjunto de elementos frecuentes". Es decir, un usuario puede ser tanto un fanático de los gatos como un fanático de los perros; No se exige que estos dos grupos sean disjuntos.
Anony-Mousse -Reinstalar a Monica
Que en mi humilde opinión es realmente bueno. Asumir que cada usuario es miembro de exactamente un clúster me parece demasiado ingenuo.
Anony-Mousse -Reinstalar a Monica