Ich verwende die latente semantische Indizierung, um Ähnlichkeiten zwischen Dokumenten zu finden ( danke, JMS! )
Nach der Dimensionsreduzierung habe ich versucht, mit k-means Clustering die Dokumente in Cluster zu gruppieren, was sehr gut funktioniert. Ich möchte jedoch noch einen Schritt weiter gehen und die Dokumente als eine Reihe von Knoten visualisieren, bei denen der Abstand zwischen zwei beliebigen Knoten umgekehrt proportional zu ihrer Ähnlichkeit ist (Knoten, die sehr ähnlich sind, liegen nahe beieinander).
Es fällt mir auf, dass ich eine Ähnlichkeitsmatrix nicht genau auf einen zweidimensionalen Graphen reduzieren kann, da meine Daten> 2 Dimensionen haben. Meine erste Frage: Gibt es einen Standardweg, um dies zu tun?
Könnte ich meine Daten einfach auf zwei Dimensionen reduzieren und sie dann als X- und Y-Achse darstellen, und würde das für eine Gruppe von ~ 100-200 Dokumenten ausreichen? Wenn dies die Lösung ist, ist es besser, meine Daten von Anfang an auf zwei Dimensionen zu reduzieren, oder gibt es eine Möglichkeit, die beiden "besten" Dimensionen aus meinen mehrdimensionalen Daten auszuwählen?
Ich benutze Python und die Gensim-Bibliothek, wenn das einen Unterschied macht.
Antworten:
Dafür wurde MDS (Multidimensional Scaling) entwickelt. Kurz gesagt, wenn Sie eine Ähnlichkeitsmatrix M erhalten, möchten Sie die nächste Annäherung findenS.= X.X.⊤ wo S. hat Rang 2. Dies kann durch Berechnung der SVD von erfolgen M.= V.Λ V.⊤= X.X.⊤ wo X.= V.Λ1 / 2 .
Nun, vorausgesetzt dasΛ wird permutiert, so dass die Eigenwerte in absteigender Reihenfolge sind, die ersten beiden Spalten von X. sind Ihre gewünschte Einbettung in die Ebene.
Es gibt viel Code für MDS (und ich wäre überrascht, wenn scipy keine Version davon hat). In jedem Fall sind Sie festgelegt, solange Sie Zugriff auf eine SVD-Routine in Python haben.
quelle
Es gibt eine Software namens ggobi , die Ihnen helfen kann. Sie können damit mehrdimensionale Pseudoräume erkunden. Es ist hauptsächlich für die Datenexploration gedacht, aber die Benutzeroberfläche ist äußerst benutzerfreundlich und funktioniert einfach!
Sie benötigen lediglich ein CSV-Format (in RI verwenden Sie normalerweise nur write.csv mit den Standardparametern) oder eine XML-Datei (dieses Format ermöglicht Ihnen mehr Kontrolle; normalerweise speichere ich meine Tabelle in CSV, exportiere sie dann mit ggobi nach XML und bearbeite sie manuell zum Beispiel, um die Reihenfolge einiger Faktoren zu ändern).
quelle