Si dovrebbero rimuovere variabili altamente correlate prima di fare PCA?


111

Sto leggendo un articolo in cui l'autore scarta diverse variabili a causa dell'alta correlazione con altre variabili prima di fare PCA. Il numero totale di variabili è di circa 20.

Questo dà qualche vantaggio? Mi sembra un sovraccarico poiché PCA dovrebbe gestirlo automaticamente.


26
Solo un suggerimento. Pensa, in che modo i risultati di PCA cambieranno se aggiungi sempre più copie (o quasi copie) di una delle variabili.
ttnphns,

@ type2 puoi per favore nominare il documento che stavi leggendo?
Amatya,

Risposte:


123

Questo spiega il suggerimento perspicace fornito in un commento di @ttnphns.

L'unione di variabili quasi correlate aumenta il contributo del loro comune fattore sottostante al PCA. Possiamo vederlo geometricamente. Considera questi dati nel piano XY, mostrato come una nuvola di punti:

dispersione

C'è poca correlazione, covarianza approssimativamente uguale e i dati sono centrati: PCA (non importa quanto condotto) segnalerebbe due componenti approssimativamente uguali.

Passiamo ora a una terza variabile uguale a più una piccola quantità di errore casuale. La matrice di correlazione di mostra questo con i coefficienti off-diagonali piccoli tranne tra la seconda e la terza riga e colonne ( e ):ZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

Dal punto di vista geometrico, abbiamo spostato tutti i punti originali quasi verticalmente, sollevando l'immagine precedente dal piano della pagina. Questa pseudo nuvola di punti 3D tenta di illustrare il sollevamento con una vista prospettica laterale (basata su un set di dati diverso, sebbene generato allo stesso modo di prima):

Trama 3D

I punti originariamente si trovano sul piano blu e sono sollevati ai punti rossi. L' asse originale punta a destra. L'inclinazione risultante allunga anche i punti lungo le direzioni YZ, raddoppiando così il loro contributo alla varianza. Di conseguenza, un PCA di questi nuovi dati identificherebbe ancora due principali componenti principali, ma ora uno di essi avrà il doppio della varianza dell'altro.Y

Questa aspettativa geometrica è confermata da alcune simulazioni R. Per questo ho ripetuto la procedura di "sollevamento" creando copie quasi collineari della seconda variabile una seconda, terza, quarta e quinta volta, nominandole da a . Ecco una matrice scatterplot che mostra come queste ultime quattro variabili siano ben correlate:X2X5

Matrice a dispersione

Il PCA viene eseguito utilizzando le correlazioni (anche se non ha importanza per questi dati), utilizzando le prime due variabili, quindi tre, ... e infine cinque. Mostro i risultati usando i grafici dei contributi dei componenti principali alla varianza totale.

Risultati PCA

Inizialmente, con due variabili quasi non correlate, i contributi sono quasi uguali (angolo in alto a sinistra). Dopo aver aggiunto una variabile correlata alla seconda, esattamente come nell'illustrazione geometrica, ci sono ancora solo due componenti principali, uno ora il doppio dell'altra. (Un terzo componente riflette la mancanza di una correlazione perfetta; misura lo "spessore" della nuvola simile a un pancake nel grafico a dispersione 3D.) Dopo aver aggiunto un'altra variabile correlata ( ), il primo componente è ora circa i tre quarti del totale ; dopo l'aggiunta di un quinto, il primo componente è quasi i quattro quinti del totale. In tutti e quattro i casi i componenti dopo il secondo verrebbero probabilmente considerati irrilevanti dalla maggior parte delle procedure diagnostiche PCA; nell'ultimo caso è 'X4un componente principale che vale la pena considerare.

Ora possiamo vedere che potrebbe esserci il merito di scartare le variabili che si ritiene stiano misurando lo stesso aspetto sottostante (ma "latente") di una raccolta di variabili , perché l'inclusione delle variabili quasi ridondanti può far sì che il PCA enfatizzi eccessivamente il loro contributo. Non c'è nulla di matematicamente giusto (o sbagliato) in una tale procedura; è un giudizio basato sugli obiettivi analitici e sulla conoscenza dei dati. Ma dovrebbe essere abbondantemente chiaro che mettere da parte le variabili note per essere fortemente correlate con gli altri può avere un effetto sostanziale sui risultati della PCA.


Ecco il Rcodice

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)

5
+1, belle figure. Cosa hai usato per i primi 2? Il 1 ° sembra disegnato a mano.
gung

14
@gung Ho usato una variante del codice su matematica.stackexchange.com/questions/11350/xkcd-style-graphs per la prima cifra. È noto da tempo che l'aggiunta di un po 'di jitter casuale al testo o a un'immagine può renderlo più caldo e più accessibile. ( stesso è stato originariamente costruito su Metafont , che Donald Knuth ha progettato dopo un profondo studio della tipografia; ha incluso tale variazione incorporata.) Per alcuni grafici, come lo pseudo 3D scatterplot nella seconda figura, la tecnica del jitter aggiunge poco o è fonte di distrazione, quindi non l'ho usato lì. TEX
whuber

2
È molto illuminante, whuber. Ho imparato qualcosa di nuovo.
Spacey,

7
@whuber è come lo statistico più alla moda - usando trame XKCD come un professionista.
Cam.Davidson.Pilon,

2
@logan In un'altra parola, no. Consentitemi di indirizzare la vostra attenzione su una frase tardiva in questo post: "Non c'è nulla di matematicamente giusto (o sbagliato) in una tale procedura; si tratta di un appello di giudizio basato sugli obiettivi analitici e sulla conoscenza dei dati".
whuber

43

Illustrerò ulteriormente lo stesso processo e la stessa idea di @whuber, ma con i grafici di caricamento, perché i caricamenti sono l'essenza dei risultati della PCA.

Ecco tre 3 analisi. Nel primo, abbiamo due variabili, e (in questo esempio non sono correlate). Nel secondo, abbiamo aggiunto che è quasi una copia di e quindi è fortemente correlato con esso. Nel terzo, abbiamo ancora aggiunto allo stesso modo altre 2 "copie" di esso: e .X 2 X 3 X 2X1X2X3X2X4X5

I grafici dei caricamenti dei primi 2 componenti principali vanno quindi. I picchi rossi sui grafici raccontano le correlazioni tra le variabili, in modo che il gruppo di più picchi sia dove si trova un gruppo di variabili strettamente correlate. I componenti sono le linee grigie; la "forza" relativa di un componente (la sua grandezza di autovalore relativa) è data dal peso della linea.

inserisci qui la descrizione dell'immagine

Si possono osservare due effetti dell'aggiunta delle "copie":

  1. Il componente 1 diventa sempre più forte e il componente 2 sempre più debole.
  2. L'orientamento dei componenti cambia: inizialmente, il componente 1 si posizionava a metà tra e ; quando abbiamo aggiunto a componente 1 si è immediatamente ri-orientato per seguire il gruppo emergente di variabili; e potresti essere sicuro che dopo aver aggiunto altre due variabili al gruppo, l'attaccamento del Componente 1 a quel gruppo di variabili strettamente correlate è diventato più indiscutibile.X 2X1X2X3X2

Non riprenderò la morale perché @whuber l'ha già fatto.


Aggiunta . Di seguito alcune immagini in risposta ai commenti di @buber. Si tratta di una distinzione tra "spazio variabile" e "spazio soggetto" e come i componenti si orientano qua e là. Vengono presentati tre PCA bivariati: analisi della prima riga , analisi della seconda riga e terza riga . La colonna di sinistra è grafici a dispersione (di dati standardizzati) e la colonna di destra sta caricando grafici.r=0r=0.62r=0.77

Su un diagramma a dispersione, la correlazione tra e viene visualizzata come oblungità del cloud. L'angolo (il suo coseno) tra una linea componente e una linea variabile è l' elemento autovettore corrispondente . Gli autovettori sono identici in tutte e tre le analisi (quindi gli angoli su tutti e 3 i grafici sono gli stessi). [Ma, è vero, che con esattamente , gli autovettori (e quindi gli angoli) sono teoricamente arbitrari; poiché la nuvola è perfettamente "rotonda" qualsiasi coppia di linee ortogonali che attraversano l'origine potrebbe fungere da due componenti, anche eX 2 r =X1X2X 1 X 2r=0 X1X2le linee stesse potrebbero essere scelte come componenti.] Le coordinate dei punti dati (200 soggetti) su un componente sono punteggi dei componenti e la loro somma dei quadrati divisa per 200-1 è l' autovalore del componente .

Su un diagramma di caricamento, i punti (vettori) sono variabili; diffondono lo spazio bidimensionale (perché abbiamo 2 punti + origine) ma in realtà è uno "spazio soggetto" ridotto a 200 dimensioni (numero di soggetti). Qui l'angolo (coseno) tra i vettori rossi è . I vettori sono uguali di lunghezza unitaria, poiché i dati erano stati standardizzati. Il primo componente è un tale asse dimensionale in questo spazio che si precipita verso l'accumulo globale dei punti; nel caso di sole 2 variabili è sempre la bisettrice tra eX 1 X 2rX1X2(ma l'aggiunta di una terza variabile può comunque deviarla). L'angolo (coseno) tra un vettore variabile e una linea di componenti è la correlazione tra loro e poiché i vettori sono lunghi in unità e i componenti sono ortogonali, questo non è altro che le coordinate, il caricamento . La somma dei carichi quadrati sul componente è il suo autovalore (il componente si orienta in questo spazio soggetto in modo da massimizzarlo)

inserisci qui la descrizione dell'immagine


Addition2. In aggiunta sopra ho parlato di "spazio variabile" e "spazio soggetto" come se fossero incompatibili insieme come l'acqua e l'olio. Ho dovuto riconsiderarlo e posso dire che - almeno quando parliamo di PCA - entrambi gli spazi sono isomorfi alla fine, e in virtù di ciò possiamo visualizzare correttamente tutti i dettagli del PCA - punti dati, assi variabili, assi componenti, variabili come punti, - su un singolo biplot non distorto.

Di seguito sono riportati il ​​diagramma a dispersione (spazio variabile) e il diagramma di caricamento (spazio componente, che è lo spazio soggetto per origine genetica). Tutto ciò che potrebbe essere mostrato sull'uno, potrebbe anche essere mostrato sull'altro. Le immagini sono identiche , ruotate solo di 45 gradi (e riflesse, in questo caso particolare) l'una rispetto all'altra. Quello era un PCA di variabili v1 e v2 (standardizzato, quindi era r che è stato analizzato). Le linee nere sulle immagini sono le variabili come assi; le linee verde / gialle sono i componenti come assi; i punti blu sono la nuvola di dati (soggetti); i punti rossi sono le variabili visualizzate come punti (vettori).

inserisci qui la descrizione dell'immagine


1
+1 illustrazione interessante. A proposito, la tua seconda osservazione è un artefatto dei dati: l'orientamento è cambiato perché nel primo caso la correlazione era perfetta, dando un eigenspace bidimensionale. (Ciò è estremamente raro nei dati reali; di solito significa che è stato commesso un errore del database e una variabile è una reespressione lineare di un'altra.) Il software era libero di scegliere qualsiasi base ortogonale per quello spazio, arbitrariamente. Solo la minima quantità di correlazione avrebbe rimosso questa degenerazione. Penso, pertanto, che tu abbia interpretato in modo eccessivo questo fenomeno di riorientamento.
whuber

@whuber, forse non ti capisco. Quale correlazione "perfetta"? r bw X1 e X2 era .003; e potrebbe essere stato qualsiasi, ad esempio .503. Sarebbe il cos dell'angolo tra i due vettori rossi sulla trama. Qualunque sia la r , il 1 ° PC è sempre la bisettrice mentre sono in analisi solo 2 variabili. Immagino che la tua nota si The software was free to choose any orthogonal basis for that space, arbitrarilyapplichi alla nuvola rotonda nello spazio variabile (ad esempio grafico a dispersione di dati, come la prima immagine nella tua risposta), ma il caricamento del diagramma è spazio soggetto in cui le variabili, non i casi, sono punti (vettori).
ttnphns,

1
Scusate; Intendevo una perfetta mancanza di correlazione. Nelle tue analisi hai usato la covarianza o la correlazione o standardizzato le righe o le colonne di dati? (Forse fraintendo, ma non trovo significativa la distinzione tra spazi "soggetti" e "variabili" in questo contesto: sia i vettori di base originali che i dati sono elementi, diciamo, ; il " caricamento della trama "è una proiezione sul sottospazio generato dai primi due PC. Credo che la maggior parte delle persone prenderebbe lo spazio" soggetto "per avere 240 dimensioni nella mia simulazione: non l'ho illustrato con un diagramma a dispersione!)R5
whuber

Ho usato le correlazioni (notate la matrice e il fatto che i vettori rossi hanno essenzialmente la stessa lunghezza). Sì, lo spazio soggetto è un grafico a dispersione tupsy-torvey con n assi (soggetti) e punti p (variabili). Naturalmente, tutte le dimensioni np sono ridondanti e qualsiasi insieme di variabili p può essere tracciato nello spazio soggetto p-dimensionale, ma ciò non lo trasforma in uno spazio variabile! Aggiungerò solo un'immagine alla mia risposta.
ttnphns,

5
+1, grazie per il contributo aggiuntivo, @ttnphns. Questo si sta trasformando da quella che inizialmente pensavo fosse una domanda abbastanza semplice in un filo favolosamente informativo.
gung

4

Senza i dettagli del tuo articolo, ipotizzerei che questo scartamento di variabili altamente correlate fosse fatto semplicemente per risparmiare sulla potenza computazionale o sul carico di lavoro. Non riesco a vedere un motivo per cui il PCA si "spezzerebbe" per variabili altamente correlate. La proiezione dei dati sulle basi trovate dal PCA ha l'effetto di imbiancare i dati (o di decorrelarli). Questo è il punto alla base della PCA.


4
Hai letto il suggerimento di @ttnphns? PCA presta attenzione non solo agli autovettori (di cui si discute) ma anche agli autovalori (che si ignora). Questo è fondamentale, perché gli autovalori vengono utilizzati per determinare quali componenti conservare e quali rilasciare.
whuber

2
@whuber Sì ... sì, penso di averlo ora. Quindi, essenzialmente, variabili più correlate enfatizzeranno eccessivamente determinati autovettori, (direzioni), e se ci sono molte variabili correlate, allora ci sarebbero così tante più direzioni "finte" troppo enfatizzate, che annullerebbero un autovettore / direzione "originale" altrimenti sono stati facilmente visti. Ti sto capendo bene?
Spacey,

2
È abbastanza vicino, Mohammad. La realtà è che un insieme di variabili correlate potrebbe "caricarsi" su diversi componenti principali (autovettori), quindi includere molte variabili di un tale insieme peserà in modo differenziato diversi autovettori - e quindi cambiare anche le direzioni di tutti gli autovettori.
whuber

1

Dal mio punto di vista, le variabili correlate sono ok, perché PCA genera vettori ortogonali.


5
Hai ragione, ma ti dispiacerebbe spiegare perché l'ortogonalità ha qualche attinenza con se scartare o meno le variabili in anticipo?
whuber

-1

Bene, dipende dal tuo algoritmo. Variabili altamente correlate possono significare una matrice mal condizionata. Se usi un algoritmo sensibile a ciò, potrebbe avere senso. Ma oso dire che la maggior parte dei moderni algoritmi utilizzati per avviare gli autovalori e gli autovettori sono robusti per questo. Prova a rimuovere le variabili altamente correlate. Gli autovalori e gli autovettori cambiano di molto? Se lo fanno, il mal condizionamento potrebbe essere la risposta. Poiché le variabili altamente correlate non aggiungono informazioni, la decomposizione del PCA non dovrebbe cambiare


4
Purtroppo, la PCA non cambia: è quasi garantito.
whuber

1
@whuber Wow, enorme quantità di risposte e molto istruttivo. Scusate il mio commento, è stato totalmente sbagliato. Colpa mia. Risposta molto istruttiva BTW
Juancentro,

4
Imparo di più da risposte totalmente sbagliate, Juancentro - specialmente la mia, che fortunatamente escono raramente in pubblico :-). Ho avuto pensieri simili ai tuoi fino a quando @ttnphns non ha lasciato un commento.
whuber

-1

Dipende dal principale metodo di selezione dei componenti che usi, no?

Tendo a usare qualsiasi componente di principio con un autovalore> 1. Quindi non mi influenzerebbe.

E dagli esempi sopra anche il metodo della trama di ghiaione di solito sceglierebbe quello giusto. SE TIENI TUTTO PRIMA DEL GOMITO. Tuttavia, se si scegliesse semplicemente il componente principale con l'autovalore "dominante", verrebbe fuori strada. Ma questo non è il modo giusto di usare una trama ghiaione!


5
Benvenuto nel sito, Chris. Sfortunatamente, nessuna di queste procedure ad hoc è particolarmente difendibile. Si noti che nel primo caso non è stato possibile modificare affatto la forma dei propri dati e passare dalla selezione di tutti loro alla selezione di nessuno di essi (semplicemente moltiplicando tutto per una costante).
cardinale
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.