Estoy utilizando un análisis semántico latente para representar un corpus de documentos en un espacio dimensional inferior. Quiero agrupar estos documentos en dos grupos usando k-means.
Hace varios años, hice esto usando el gensim de Python y escribiendo mi propio algoritmo k-means. Determiné los centroides del grupo utilizando la distancia euclidiana, pero luego agrupé cada documento en función de la similitud del coseno con el centroide. Parece que funciono bastante bien.
Ahora estoy tratando de hacer esto en un corpus de documentos mucho más grande. K-means no converge, y me pregunto si es un error en mi código. Leí recientemente que no debería agruparse usando la similitud de coseno, porque k-means solo funciona en la distancia euclidiana. Aunque, como mencioné, parecía funcionar bien en mi caso de prueba más pequeño.
Ahora me encuentro con esto en la página de Wikipedia LSA :
Los documentos y las representaciones de vectores de términos se pueden agrupar utilizando algoritmos de agrupación tradicionales como k-means utilizando medidas de similitud como coseno.
Entonces, ¿cuál es? ¿Puedo usar la similitud de coseno o no?
I then assigned each document to a cluster based on cosine similarity
- Coseno entre un doc y un centroide? Y después de que se asignan todos los documentos, actualiza los centroides de una manera habitual (euclidiana), porque se conocen las coordenadas de los documentos en el espacio. ¿Es eso así?Respuestas:
Sí, puedes usarlo. El problema es que la similitud del coseno no es una distancia, por eso se llama similitud. Sin embargo, se puede convertir a una distancia como se explica aquí .
De hecho, puedes usar cualquier distancia. Un estudio muy agradable de las propiedades de las funciones de distancia en espacios de alta dimensión (como suele ser el caso en la recuperación de información) es Sobre el comportamiento sorprendente de las métricas de distancia en el espacio de alta dimensión . Sin embargo, no compara Euclidiana versus coseno.
Me encontré con este estudio donde afirman que en espacios de altas dimensiones, ambas distancias tienden a comportarse de manera similar.
fuente
Yes, you can use it
. (¿La idea de convertir coseno a distancia euclidiana es similar a mi respuesta ?)La distancia euclidiana no es adecuada para comparar documentos o grupos de documentos. Al comparar documentos, una cuestión clave es la normalización por la longitud del documento. La similitud de coseno logra este tipo de normalización, pero la distancia euclidiana no. Además, los documentos a menudo se modelan como distribuciones de probabilidad multinomiales (llamada bolsa de palabras). La similitud del coseno es una aproximación a la divergencia JS, que es un método estadísticamente justificado para la similitud. Una cuestión clave con los documentos y el coseno es que se debe aplicar la normalización tf-idf adecuada a los recuentos. Si está utilizando gensim para derivar la representación LSA, gensim ya lo hace.
Otra observación útil para su caso de uso de 2 grupos es que puede obtener una buena inicialización no aleatoria porque LSA es solo SVD. Lo haces de la siguiente manera:
fuente
Sí, funciona la misma actualización de centroide por promedio de vectores.
Ver m = 1 caso en la Sección 2.2 de este documento . w son los pesos y los pesos son todos 1 para los algoritmos base k-mean.
El documento utiliza propiedades de la desigualdad de Cauchy-Schwartz para establecer la condición que minimiza la función de costo para k-mean.
Recuerde también que la similitud del coseno no es una distancia vectorial. La disimiliaridad del coseno es. (Este debería ser un buen término de búsqueda). Por lo tanto, cuando actualiza la partición, está buscando
arg max
lo contrarioarg min
.fuente