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?Antworten:
Ja, du kannst es benutzen. Das Problem ist, dass die Kosinusähnlichkeit keine Distanz ist, deshalb wird sie Ähnlichkeit genannt. Trotzdem kann es wie hier erklärt in eine Entfernung umgewandelt werden .
In der Tat können Sie einfach jede Entfernung verwenden. Eine sehr schöne Studie über die Eigenschaften von Distanzfunktionen in hochdimensionalen Räumen (wie dies normalerweise beim Abrufen von Informationen der Fall ist) befasst sich mit dem überraschenden Verhalten von Distanzmetriken im hochdimensionalen Raum . Es wird jedoch nicht Euklidisch gegen Kosinus verglichen.
Ich bin auf diese Studie gestoßen, in der behauptet wird, dass sich in hochdimensionalen Räumen beide Abstände ähnlich verhalten.
quelle
Yes, you can use it
. (Ist die Idee, Kosinus in euklidischen Abstand umzuwandeln, meiner Antwort ähnlich ?)Der euklidische Abstand eignet sich nicht zum Vergleichen von Dokumenten oder Dokumentenclustern. Beim Vergleich von Dokumenten ist die Normalisierung nach Dokumentlänge ein zentrales Problem. Die Kosinusähnlichkeit erreicht diese Art der Normalisierung, die euklidische Distanz jedoch nicht. Darüber hinaus werden Dokumente häufig als multinomiale Wahrscheinlichkeitsverteilungen (sogenannte Wortsack) modelliert. Die Kosinusähnlichkeit ist eine Annäherung an die JS-Divergenz, die eine statistisch begründete Methode zur Ähnlichkeit darstellt. Ein zentrales Problem bei Dokumenten und Cosinus ist, dass die Zählungen ordnungsgemäß mit tf-idf normalisiert werden sollten. Wenn Sie gensim verwenden, um die LSA-Darstellung abzuleiten, führt gensim dies bereits aus.
Eine weitere nützliche Beobachtung für Ihren Anwendungsfall von 2 Clustern ist, dass Sie eine gute nicht zufällige Initialisierung erhalten können, da LSA nur SVD ist. Sie machen es folgendermaßen:
quelle
Ja, das gleiche Schwerpunkt-Update nach Vektordurchschnitt funktioniert.
Siehe m = 1 Fall in Abschnitt 2.2 dieses Dokuments . w sind die Gewichte und die Gewichte sind alle 1 für Basis-k-Mittelwert-Algorithmen.
Das Papier verwendet Eigenschaften der Cauchy-Schwartz-Ungleichung, um die Bedingung zu ermitteln, die die Kostenfunktion für den k-Mittelwert minimiert.
Denken Sie auch daran, dass die Kosinusähnlichkeit keine Vektorentfernung ist. Cosinus-Unähnlichkeit ist. (Dies sollte ein guter Suchbegriff sein.) Wenn Sie also die Partition aktualisieren, suchen Sie
arg max
im Gegensatz zuarg min
.quelle