Visualizzazione di dati multidimensionali (LSI) in 2D


11

Sto usando l'indicizzazione semantica latente per trovare somiglianze tra i documenti ( grazie, JMS! )

Dopo la riduzione delle dimensioni, ho provato il clustering k-means per raggruppare i documenti in cluster, il che funziona molto bene. Ma mi piacerebbe andare un po 'oltre e visualizzare i documenti come un insieme di nodi, in cui la distanza tra due nodi qualsiasi è inversamente proporzionale alla loro somiglianza (nodi molto simili sono ravvicinati).

Mi sembra che non riesca a ridurre accuratamente una matrice di somiglianza a un grafico bidimensionale poiché i miei dati sono> 2 dimensioni. Quindi la mia prima domanda: esiste un modo standard per farlo?

Potrei semplicemente ridurre i miei dati a due dimensioni e poi tracciarli come assi X e Y, e sarebbe sufficiente per un gruppo di ~ 100-200 documenti? Se questa è la soluzione, è meglio ridurre i miei dati a 2 dimensioni dall'inizio o esiste un modo per scegliere le due dimensioni "migliori" dai miei dati multidimensionali?

Sto usando Python e la libreria gensim se questo fa la differenza.


Perché è necessario ridurre la dimensionalità? Per costruire il grafico desiderato, sono necessari solo i bordi in cui la lunghezza di un bordo è proporzionale alla distanza tra i documenti. Lo hai già, dalla metrica utilizzata per il clustering di k-mean.
Aman,

@Aman che non funziona per la visualizzazione di somiglianze tra> 2 documenti su un piano 2D (grafico). certo, posso tracciare i punti A e B con una separazione basata sulla distanza k-media. ma poi quando ho bisogno di tracciare il punto C, in base alle distanze da A e B, in genere non c'è alcun punto nello spazio 2D che soddisfi tutte le relazioni a coppie.
Jeff,

Risposte:


7

Questo è ciò per cui è stato progettato MDS (ridimensionamento multidimensionale). In breve, se ti viene data una matrice di somiglianza M, vuoi trovare l'approssimazione più vicina dove ha il rango 2. Questo può essere fatto calcolando l'SVD di dove .S=XXSM=VΛV=XXX=VΛ1/2

Ora, supponendo che sia permutato in modo che gli autovalori siano in ordine decrescente, le prime due colonne di sono l'incorporamento desiderato nel piano.ΛX

C'è un sacco di codice disponibile per MDS (e sarei sorpreso se scipy non ne avesse una versione). In ogni caso, purché tu abbia accesso ad alcune routine SVD in Python, sei pronto.


1
Penso che LDA sarebbe meglio per questo. PCA -come si ottiene SVD- non preserverebbe alcuna informazione discriminatoria di cluster (classe), che è ciò che l'OP sta cercando.
Zhubarb,

0

C'è un software chiamato ggobi che può aiutarti. Ti consente di esplorare pseudo-spazi multidimensionali. È principalmente per l'esplorazione dei dati ma la sua interfaccia è estremamente intuitiva e "funziona"!

Hai solo bisogno di un formato CSV (in RI di solito usi solo write.csv con i parametri predefiniti) o un file XML (questo formato ti consente un maggiore controllo; di solito salvo la mia tabella in CSV quindi lo esporto in XML con ggobi e lo modifico manualmente ad esempio per cambiare l'ordine di alcuni fattori).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.