Esiste un valore nella riduzione della dimensionalità di un set di dati in cui tutte le variabili sono approssimativamente ortogonali?


11

Supponiamo di avere un set di dati dimensionale dove dimensioni sono approssimativamente ortogonale (avere correlazione zero).NNN

C'è qualche utilità in termini di:

  1. visualizzazione
  2. Rappresentazione (per efficienza classificatore)
  3. O altri criteri

eseguire la riduzione della dimensionalità sui dati?


3
Risposta parzialmente pertinente stats.stackexchange.com/a/92803/3277
ttnphns

Risposte:


8

Volevo chiarire un commento che ho lasciato sotto la risposta di @ Peter-Flom, ma probabilmente vale la pena scrivere in una risposta. In che misura è possibile ridurre le dimensioni eseguendo PCA su dati quasi ortogonali? La risposta è "dipende" se si esegue il PCA sulla matrice di correlazione o covarianza .

Se stai usando PCA sulla matrice di correlazione, poiché questo differirà solo leggermente dalla matrice di identità, c'è una simmetria sferica che rende tutte le direzioni "ugualmente informative". Ridimensionare le varianze delle variabili a una precedente alla PCA è un approccio matematicamente equivalente che produrrà lo stesso risultato. Mentre l'output PCA identificherà alcuni componenti con una varianza leggermente inferiore rispetto ad altri, questo può essere attribuito (se assumiamo una correlazione zero nella popolazione) a nient'altro che una variazione casuale nel campione, quindi non sarebbe una buona ragione per buttarli via componenti. In effetti tale disparità tra le deviazioni standard dei componenti dovrebbe ridursi in ampiezza man mano che aumentiamo le dimensioni del campione. Possiamo confermarlo in una simulazione.

set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
    x1 <- rnorm(n, mean=0, sd=sd1)
    x2 <- rnorm(n, mean=0, sd=sd2)
    x3 <- rnorm(n, mean=0, sd=sd3)
    x4 <- rnorm(n, mean=0, sd=sd4)
    prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}

Produzione:

> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion  0.2882 0.5505 0.7887 1.0000
> 
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion  0.2504 0.5006 0.7505 1.0000

Tuttavia, se esegui PCA utilizzando la matrice di covarianza anziché la matrice di correlazione (equivalentemente: se non ridimensioniamo le deviazioni standard su 1 prima di applicare PCA), la risposta dipende dalla diffusione delle variabili. Se le tue variabili hanno la stessa varianza, allora abbiamo ancora una simmetria sferica, quindi non esiste una "direzione privilegiata" e la riduzione dimensionale non può essere raggiunta.

> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion  0.2507 0.5009 0.7508 1.0000

Con una miscela di variabili di varianza alta e bassa, tuttavia, la simmetria è più simile a un ellissoide con alcuni assi larghi e altri sottili. In questa situazione ci saranno componenti ad alta varianza caricando sulle variabili ad alta varianza (dove l'ellissoide è largo) e componenti a bassa varianza caricando sulle variabili a bassa varianza (in quali direzioni l'ellissoide è stretto).

> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion  0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
      PC1   PC2    PC3    PC4
x1  0.460 0.888  0.000  0.000
x2 -0.888 0.460  0.000  0.000
x3  0.000 0.000 -0.747 -0.664
x4  0.000 0.000  0.664 -0.747

Se le variabili hanno varianze molto diverse (di nuovo geometricamente un ellissoide ma con tutti gli assi diversi), l'ortogonalità consente al primo PC di caricare molto pesantemente sulla variabile con la varianza più elevata e così via.

> pc1234 <-  princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion  0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
     PC1    PC2    PC3   PC4
x1 0.000  0.000 -0.001 1.000
x2 0.001 -0.001  1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000  0.003 -0.001 0.000

Negli ultimi due casi c'erano componenti a bassa varianza che potresti considerare di buttare via per ottenere una riduzione dimensionale, ma farlo equivale esattamente a buttare via le variabili di varianza più basse in primo luogo . In sostanza, l'ortogonalità consente di identificare componenti a bassa varianza con variabili a bassa varianza, quindi se si intende ridurre la dimensionalità in questo modo, non è chiaro che si trarrebbe vantaggio dall'utilizzare PCA per farlo.

Nota bene: il tempo trascorso a discutere del caso in cui le variabili non sono riscalate alla varianza unitaria - cioè usando la covarianza piuttosto che la matrice di correlazione - non dovrebbe essere preso come un'indicazione che questo approccio è in qualche modo più importante, e certamente non che è meglio". La simmetria della situazione è semplicemente più sottile, quindi è necessaria una discussione più lunga.


La mia risposta forse risponde meglio al problema posto dal poster originale (che riguardava ciò che PCA può o non può ottenere), che presumo spiega il segno di spunta verde! Ma esorto i lettori a guardare la risposta di @ RyanBressler, che fornisce soluzioni alternative .
Silverfish

11

Potresti provare un metodo di apprendimento più generale di riduzione della dimensionalità non lineare come l'incorporamento localmente lineare, autovapie laplaciane o t-SNE.

È perfettamente possibile che ci sia un sottospazio dimensionale inferiore (varietà) nei tuoi dati in un modo che lasci una correlazione 0 tra le dimensioni della N base. Ad esempio un cerchio di punti sull'origine o la forma d'onda come mostrato qui . PCA non lo raccoglierà, ma altri metodi lo faranno.

Osservare tali metodi è particolarmente interessante e comune per la visualizzazione e l'analisi dei dati esplorativi. Per l'uso all'interno di un classificatore o di un altro modello, dovrai limitarti ai metodi che possono essere adatti all'allenamento e applicati al test che esclude molti di questi metodi. Se questo è il tuo interesse principale, dovresti anche esaminare i metodi per la pre-supervisione senza supervisione e la progettazione di funzioni (supervisionate).


6

Se tutte le N variabili sono all'incirca ortogonali, la riduzione dimensionale sarà relativamente ridotta. Ad esR

set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)

df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

pcsol <- princomp(df1)
loadings(pcsol)

In sostanza, "ortogonale" implica "già alla sua dimensione più piccola".


2
hai un piccolo errore di battitura in "ortogonale"
Silverfish

6
@Silverfish, orthon è "un umanoide di media altezza con lunghi capelli biondi e pelle abbronzata che indossa scarpe bruno-rossastre". Anche se potresti essere corretto in quello che Peter intendeva diversamente.
ttnphns,

4
Vale la pena sottolineare che questa risposta dipende da come vengono ridimensionate le variabili? Se ci sono variabili di varianza alta e bassa e facciamo PCA sulla matrice di correlazione non di covarianza, allora ci saranno componenti a bassa varianza che possono essere eliminati (l'ortogonalità significa solo che i loro carichi li identificano pesantemente con una variabile a bassa varianza ciascuno). Apporta le seguenti lievi modifiche: x1<-rnorm(100, sd=0.1)e pcsol <- princomp(df1, cor=FALSE)c'è una differenza, soprattutto se guardiamo summary(pcsol). (Non sto suggerendo che cov sia un approccio migliore rispetto a cor, solo che è possibile.)
Silverfish

Ho risolto l'errore di battitura, grazie. Inoltre, un buon punto sul ridimensionamento.
Peter Flom - Ripristina Monica

2
Questo non si applica solo alla riduzione dimensionale che si basa sulla covarianza? Perché, ad esempio, il ridimensionamento multidimensionale non dovrebbe ridursi qui?
Shadowtalker,
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.