Cosa indica una forma a cuneo del diagramma PCA?


9

Nel loro documento sulla autoencoders per la classificazione di testo Hinton e Salakhutdinov dimostrato la trama prodotta da 2-dimensionale LSA (che è strettamente legata alla PCA): LSA a 2 dim.

Applicando la PCA a dati dimensionali leggermente diversi e assolutamente diversi ho ottenuto una trama dall'aspetto simile: PCA a 2 dim(tranne in questo caso, volevo davvero sapere se c'è una struttura interna).

Se inseriamo dati casuali nel PCA otteniamo un blob a forma di disco, quindi questa forma a cuneo non è casuale. Significa qualcosa da solo?


6
Presumo che tutte le variabili siano positive (o non negative) e continue? In tal caso, i bordi del cuneo sono solo i punti oltre i quali i dati diventerebbero 0 / negativi. Inoltre, puoi ottenere lo stesso modello che mostri con variabili positive distorte a destra; le osservazioni sono raggruppate nella parte bassa. Se avessi variabili casuali uniformi positive vedresti un quadrato (ruotato). Quindi modelli come quello che mostri sono solo dei vincoli sui dati. Altri modelli possono apparire, come un ferro di cavallo, ma questi non sono dovuti a vincoli sugli intervalli delle variabili.
Gavin Simpson,

1
@GavinSimpson Questo è molto più di un commento. Perché non espanderlo in una risposta?
Mike Hunter

Ho chiesto ai miei figli (3 e 4 anni) cosa ricordano loro queste foto e hanno detto che è un pesce. Quindi forse "forma simile a un pesce"?
amoeba,

@GavinSimpson, grazie! In entrambi i casi le variabili sono effettivamente non negative, anche in entrambi i casi sono valutate come numeri interi. Questo cambia qualcosa?
macleginn,

Risposte:


6

Supponendo che le variabili siano positive o non negative, i bordi del bordo sono solo punti oltre i quali i dati diverrebbero rispettivamente 0 o negativi. Poiché tali dati della vita reale tendono ad essere distorti, vediamo una maggiore densità di punti nella parte bassa della loro distribuzione e quindi una maggiore densità nel "punto" del cuneo.

Più in generale, PCA è semplicemente una rotazione dei dati e i vincoli su tali dati saranno generalmente visibili nei componenti principali nello stesso modo mostrato nella domanda.

Ecco un esempio che utilizza diverse variabili log-normalmente distribuite:

library("vegan")
set.seed(1)
df <- data.frame(matrix(rlnorm(5*10000), ncol = 5))
plot(rda(df), display = "sites")

inserisci qui la descrizione dell'immagine

A seconda della rotazione implicita dai primi due PC, potresti vedere il cuneo o potresti vedere una versione leggermente diversa, mostrala qui in 3d usando ( ordirgl()al posto di plot())

inserisci qui la descrizione dell'immagine

Qui, in 3d, vediamo più punte sporgenti dalla massa centrale.

Xio~(N)(μ=0,σ=1)

set.seed(1)
df2 <- data.frame(matrix(rnorm(5*10000), ncol = 5))
plot(rda(df2), display = "sites")

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

E per variabili casuali positive uniformi vediamo un cubo

set.seed(1)
df3 <- data.frame(matrix(runif(3*10000), ncol = 3))
plot(rda(df3), display = "sites")

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Nota che qui, per l'illustrazione, mostro l'uniforme usando solo 3 variabili casuali, quindi i punti descrivono un cubo in 3d. Con dimensioni maggiori / più variabili non possiamo rappresentare l'ipercubo 5d perfettamente in 3d e quindi la distinta forma del "cubo" viene distorta in qualche modo. Problemi simili influiscono sugli altri esempi mostrati, ma è comunque facile vedere i vincoli in quegli esempi.

Per i tuoi dati, una trasformazione del log delle variabili prima del PCA tirerebbe le code e allungherebbe i dati raggruppati, proprio come potresti usare una tale trasformazione in una regressione lineare.

Altre forme possono apparire nei grafici PCA; una di queste forme è un manufatto della rappresentazione metrica conservata nel PCA ed è conosciuta come il ferro di cavallo . Per i dati con un gradiente lungo o dominante (i campioni disposti lungo una singola dimensione con variabili che aumentano da 0 a un massimo e poi si riducono di nuovo a 0 lungo porzioni di dati sono ben noti per generare tali artefatti.

ll <- data.frame(Species1 = c(1,2,4,7,8,7,4,2,1,rep(0,10)),
                 Species2 = c(rep(0, 5),1,2,4,7,8,7,4,2,1, rep(0, 5)),
                 Species3 = c(rep(0, 10),1,2,4,7,8,7,4,2,1))
rownames(ll) <- paste0("site", seq_len(NROW(ll)))
matplot(ll, type = "o", col = 1:3, pch = 21:23, bg = 1:3,
        ylab = "Abundance", xlab = "Sites")

inserisci qui la descrizione dell'immagine

che produce un ferro di cavallo estremo, dove i punti alle estremità degli assi si piegano di nuovo nel mezzo.

inserisci qui la descrizione dell'immagine


+1. Potrebbe avere senso collegarsi alla propria risposta qui Qual è l '"effetto ferro di cavallo" e / o l' "effetto arco" nell'analisi PCA / corrispondenza? nell'ultima parte di questa risposta.
amoeba,
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.