Ich verwende die latente semantische Analyse, um einen Korpus von Dokumenten im Raum niedrigerer Dimensionen darzustellen. Ich möchte diese Dokumente mit k-means in zwei Gruppen zusammenfassen.
Vor einigen Jahren habe ich dies mit Pythons Gensim gemacht und meinen eigenen k-means-Algorithmus geschrieben. Ich habe die Cluster-Schwerpunkte anhand des euklidischen Abstands bestimmt, dann aber jedes Dokument anhand der Kosinus-Ähnlichkeit mit dem Schwerpunkt gruppiert. Es schien ziemlich gut zu funktionieren.
Jetzt versuche ich dies auf einem viel größeren Korpus von Dokumenten zu tun. K-means konvergiert nicht und ich frage mich, ob es ein Fehler in meinem Code ist. Ich habe kürzlich gelesen, dass Sie nicht mit Kosinusähnlichkeit gruppieren sollten , da k-means nur auf euklidischer Entfernung funktioniert. Obwohl es, wie bereits erwähnt, in meinem kleineren Testfall gut zu funktionieren schien.
Jetzt stoße ich auf der LSA-Wikipedia-Seite darauf :
Dokumente und Termvektordarstellungen können mit herkömmlichen Clustering-Algorithmen wie k-means unter Verwendung von Ähnlichkeitsmaßen wie Cosinus geclustert werden.
Also was ist es? Kann ich Kosinusähnlichkeit verwenden oder nicht?
I then assigned each document to a cluster based on cosine similarity
- Kosinus zwischen einem Arzt und einem Schwerpunkt? Und nachdem alle Dokumente zugewiesen wurden, aktualisieren Sie die Schwerpunkte auf übliche (euklidische) Weise, da die Koordinaten der Dokumente im Bereich bekannt sind. Ist das so?