Visualisierung mehrdimensionaler Daten (LSI) in 2D


11

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.


Warum müssen Sie die Dimensionalität reduzieren? Um das gewünschte Diagramm zu erstellen, benötigen Sie nur Kanten, bei denen die Länge einer Kante proportional zum Abstand zwischen Dokumenten ist. Sie haben das bereits aus der Metrik, die für Ihr k-means-Clustering verwendet wird.
Aman

@Aman, das nicht für die Anzeige der Ähnlichkeit zwischen> 2 Dokumenten in einer 2D-Ebene (Grafik) funktioniert. Sicher, ich kann die Punkte A und B mit einem Abstand zeichnen, der auf dem k-Mittelwert-Abstand basiert. Aber wenn ich dann Punkt C basierend auf den Abständen zu A und B zeichnen muss, gibt es normalerweise keinen Punkt im 2D-Raum, der alle paarweisen Beziehungen erfüllt.
Jeff

Antworten:


7

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.


1
Ich denke, LDA wäre dafür besser. PCA - wie Sie es durch SVD erhalten - würde keine diskriminierenden Cluster- (Klassen-) Informationen beibehalten, nach denen das OP strebt.
Zhubarb

0

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).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.