Estou usando a análise semântica latente para representar um corpus de documentos no espaço dimensional inferior. Quero agrupar esses documentos em dois grupos usando k-means.
Vários anos atrás, eu fiz isso usando o gensim do Python e escrevendo meu próprio algoritmo k-means. Eu determinei os centróides do cluster usando a distância euclidiana, mas depois agrupei cada documento com base na semelhança de cossenos com o centróide. Pareceu funcionar muito bem.
Agora, estou tentando fazer isso em um corpus muito maior de documentos. K-means não está convergindo, e estou me perguntando se é um bug no meu código. Li recentemente que você não deve agrupar usando similaridade de cosseno, porque k-means só funciona com distância euclidiana. Embora, como mencionei, pareceu funcionar bem no meu caso de teste menor.
Agora me deparei com isso na página da Wikipedia da LSA :
Documentos e representações vetoriais de termo podem ser agrupados usando algoritmos tradicionais de agrupamento, como k-means, usando medidas de similaridade como cosseno.
Então qual é? Posso usar semelhança de cosseno ou não?
I then assigned each document to a cluster based on cosine similarity
- Cosseno entre um médico e um centróide? E depois que todos os documentos são atribuídos, você atualiza os centróides de maneira usual (euclidiana), porque as coordenadas dos documentos no espaço são conhecidas. É assim mesmo?