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í?