Esecuzione di PCA con solo una matrice di distanza


12

Voglio raggruppare un enorme set di dati per il quale ho solo le distanze a coppie. Ho implementato un algoritmo k-medoids, ma ci vuole troppo tempo per essere eseguito, quindi vorrei iniziare riducendo la dimensione del mio problema applicando PCA. Tuttavia, l'unico modo che conosco per eseguire questo metodo è utilizzare la matrice di covarianza che non ho nella mia situazione.

Esiste un modo per applicare la PCA conoscendo solo le distanze a coppie?


1
Quindi, hai una grande matrice quadrata di distanze tra i punti che vuoi raggruppare. (A proposito di quale distanza? Euclideo?) Cosa ti fa pensare che sia il numero di dimensioni che questi punti attraversano, e non il numero di punti stessi (cardinalità), che impedisce il raggruppamento?
ttnphns,

1
Il numero di punti non è "molto grande" (poche migliaia). La distanza che sto usando è la correlazione pearson tra questi punti
bigTree,

2
Ma la mia domanda era: vuoi davvero ridurre la dimensionalità (e se sì, perché?) O la cardinalità (il numero di punti)? Perché la tua domanda non è chiara .
ttnphns,

1
@ttnphns: Oh ragazzo, ovviamente ho semplicemente sbagliato a scrivere il mio commento precedente. Al fine di eliminare la possibile confusione, ora eliminerò quel commento e ripeterò quello che ho detto qui con una formulazione corretta: "Ridurre la cardinalità in questo caso significa ridurre la tua matrice di distanza (diminuire ). Ridurre la dimensionalità significa renderlo rango inferiore, senza cambiare PCA equivale a quest'ultimo e non aiuta davvero con il primo obiettivo ". N NN×NNN
ameba dice di reintegrare Monica il

1
Penso che il modo più semplice per te sia usare tale (a) metodo di clustering (b) tale implementazione o (c) un computer così potente (abbastanza RAM) che prenderà e classificherà 6000 oggetti (non so perché il tuo il programma medoid lo trova difficile: 6000 è grande, ma non molto grande.). Alcuni metodi (come K-medie) richiedono gli oggetti X caratteristiche dei dati. È possibile creare tali dati dalla matrice della distanza degli oggetti tramite MDS metrico (se, di nuovo, il programma del computer / MDS consentirà 6000 oggetti).
ttnphns,

Risposte:


8

Aggiornamento: ho rimosso completamente la mia risposta originale, perché si basava su una confusione tra distanze euclidee e prodotti scalari. Questa è una nuova versione della mia risposta. Scuse.

Se per distanze a coppie intendi le distanze euclidee, allora sì, c'è un modo per eseguire la PCA e trovare i componenti principali. Descrivo l'algoritmo nella mia risposta alla seguente domanda: qual è la differenza tra l'analisi dei componenti principali e il ridimensionamento multidimensionale?

Molto brevemente, la matrice delle distanze euclidee può essere convertita in una matrice Gram centrata, che può essere utilizzata direttamente per eseguire la PCA tramite la composizione elettronica. Questa procedura è nota come scaling multidimensionale [classico] (MDS) .

Se le distanze a coppie non sono euclidee, non è possibile eseguire PCA, ma è comunque possibile eseguire MDS, che non sarà più equivalente a PCA. Tuttavia, in questa situazione è probabile che MDS sia ancora migliore per i tuoi scopi.


La distanza che sto usando è una correlazione (correlazione di Pearson) e non è quindi la distanza euclidea. Funzionerebbe allo stesso modo?
bigTree,

1
@bigTree: se non è la distanza euclidea, non è possibile eseguire PCA. Tuttavia, è possibile utilizzare il ridimensionamento multidimensionale che è una tecnica di riduzione della dimensionalità che utilizza precisamente la matrice delle distanze a coppie (può essere qualsiasi distanza). Un'altra nota: in base a determinati presupposti sui punti di dati originali (che non si hanno) le correlazioni possono essere trasformate in distanze euclidee. Ipotesi sono: (1) con media zero, (2) con lunghezza fissa, ad es. Unità. È forse vero per i tuoi dati?
ameba dice di reintegrare Monica il

Nessuno di questi è vero o i miei dati, ma proverò MDS grazie
bigTree il

1
non puoi usare il kernel PCA? Immagino che avrebbero bisogno solo di prodotti dot pairwise, ma non so molto del problema, quindi non so se abbia senso
rep_ho

4

Esiste un PCA con una matrice di distanza, che si chiama ridimensionamento multidimensionale (MDS). Puoi saperne di più su Wikipedia o in questo libro .

Puoi farlo Rcon la funzione mds cmdscale. Per un campione x, puoi verificarlo prcomp(x)e cmdscale(dist(x))dare lo stesso risultato (dove prcompfa PCA e distcalcola solo le distanze euclidiche tra gli elementi di x)


3

Sembra un problema a cui potrebbe essere applicato il clustering spettrale. Poiché si dispone della matrice della distanza a coppie, è possibile definire un grafico completamente connesso in cui ogni nodo ha N connessioni, corrispondenti alla sua distanza da ogni altro nodo nel grafico. Da questo, puoi calcolare il grafico Laplacian (se sembra spaventoso, non preoccuparti - è un calcolo facile) e quindi prendere autovettori del più piccoloautovalori (questo è dove differisce da PCA). Se prendi 3 autovettori, ad esempio, avrai una matrice Nx3. In questo spazio, i punti dovrebbero (si spera) essere ben separati a causa di una certa teoria dei grafi che suggerisce che questo è un taglio ottimale per massimizzare il flusso (o la distanza, in questo caso) tra i cluster. Da lì, è possibile utilizzare un k-mean o un algoritmo simile per raggruppare in 3 spazi. Consiglio di dare un'occhiata a questa fantastica procedura dettagliata per ulteriori approfondimenti:

http://arxiv.org/abs/0711.0189


0

Le distanze a coppie formano anche una matrice quadrata proprio come la matrice di co-varianza. PCA è solo SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition ) applicato alla matrice di co-varianza. Dovresti comunque essere in grado di ridurre le dimensioni usando SVD sui tuoi dati. Non sono esattamente sicuro di come interpretare il tuo output ma è sicuramente qualcosa da provare. È possibile utilizzare metodi di clustering come k-mean o cluster gerarchico. Dai un'occhiata anche ad altre tecniche di riduzione dimensionale come il ridimensionamento multidimensionale. Cosa stai cercando di uscire dai tuoi cluster?


La risposta di Andrew Cassidy è in realtà valida. Se la misura della distanza è una correlazione di Pearson, sei solo un fattore di standardizzazione "troppo lontano" dall'avere effettivamente una matrice di covarianza. Pertanto, applicare SVD è sostanzialmente la stessa cosa di fare PCA.
Matthew Anthony,
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.