¿Hay algún valor en la reducción de dimensionalidad de un conjunto de datos donde todas las variables son aproximadamente ortogonales?

11

Supongamos que tengo un conjunto de datos -dimensional donde las dimensiones son más o menos ortogonales (tienen correlación cero).NN

¿Hay alguna utilidad en términos de:

  1. Visualización
  2. Representación (para la eficiencia del clasificador)
  3. U otros criterios

realizar una reducción de dimensionalidad en los datos?

usuario1172468
fuente
3
Respuesta parcialmente relevante stats.stackexchange.com/a/92803/3277
ttnphns

Respuestas:

8

Quería aclarar un comentario que dejé bajo la respuesta de @ Peter-Flom, pero probablemente valga la pena escribirlo en una respuesta. ¿En qué medida puede reducir las dimensiones ejecutando PCA en datos casi ortogonales? La respuesta es "depende" de si realiza el PCA en la matriz de correlación o covarianza .

Si está utilizando PCA en la matriz de correlación, como esto solo diferirá ligeramente de la matriz de identidad, existe una simetría esférica que hace que todas las direcciones sean "igualmente informativas". Reescalar las variaciones de sus variables a una antes de PCA es un enfoque matemáticamente equivalente que producirá el mismo resultado. Si bien la salida de PCA identificará algunos componentes con una varianza ligeramente menor que otros, esto puede atribuirse (si suponemos una correlación cero en la población) a nada más que una variación casual en la muestra, por lo que no sería una buena razón para deshacerse de estos componentes. De hecho, tal disparidad entre las desviaciones estándar de los componentes debería reducirse en magnitud a medida que aumentamos el tamaño de la muestra. Podemos confirmar esto en una simulación.

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)
}

Salida:

> 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

Sin embargo, si hace PCA utilizando la matriz de covarianza en lugar de la matriz de correlación (equivalente: si no escalamos las desviaciones estándar a 1 antes de aplicar PCA), la respuesta depende de la distribución de sus variables. Si sus variables tienen la misma variación, entonces todavía tenemos simetría esférica, por lo que no existe una "dirección privilegiada" y no se puede lograr la reducción dimensional.

> 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

Sin embargo, con una mezcla de variables de varianza alta y baja, la simetría es más como un elipsoide con algunos ejes anchos y otros delgados. En esta situación, se cargarán componentes de alta varianza en las variables de alta varianza (donde el elipsoide es ancho) y componentes de baja varianza que se cargarán en las variables de baja varianza (en qué direcciones el elipsoide es estrecho).

> 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

Si las variables tienen variaciones muy diferentes (geométricamente un elipsoide de nuevo pero con todos los ejes diferentes), entonces la ortogonalidad permite que la primera PC se cargue mucho en la variable de mayor varianza y así sucesivamente.

> 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

En los últimos dos casos hubo componentes de baja varianza que podría considerar tirar para lograr la reducción dimensional, pero hacerlo es exactamente equivalente a tirar las variables de menor varianza en primer lugar . Esencialmente, la ortogonalidad le permite identificar componentes de baja varianza con variables de baja varianza, por lo que si tiene la intención de reducir la dimensionalidad de esta manera, no está claro si se beneficiaría de usar PCA para hacerlo.

Nota bene: el tiempo dedicado a discutir el caso en el que las variables no se reescalan a la varianza unitaria, es decir, usar la matriz de covarianza en lugar de la correlación, no debe tomarse como una indicación de que este enfoque es de alguna manera más importante, y ciertamente no es que es mejor". La simetría de la situación es simplemente más sutil, por lo que requiere una discusión más larga.

Lepisma
fuente
Mi respuesta tal vez responda mejor al problema tal como lo plantea el póster original (que se refería a lo que PCA puede o no puede lograr), ¡lo que supongo explica el tic verde! Pero insto a los lectores a mirar la respuesta de @ RyanBressler, que ofrece soluciones alternativas .
Silverfish
11

Puede probar un método de aprendizaje múltiple de reducción de dimensionalidad no lineal más general , como la inclusión localmente lineal, mapas propios laplacianos o t-SNE.

Es perfectamente posible que haya un subespacio de dimensión inferior (múltiple) en sus datos de una manera que deje 0 correlación entre las dimensiones de base N. Por ejemplo, un círculo de puntos sobre el origen o la forma de onda como se ve aquí . PCA no recogerá esto, pero otros métodos lo harán.

Mirar estos métodos es especialmente interesante y común para la visualización y el análisis exploratorio de datos. Para usar dentro de un clasificador u otro modelo, deberá limitarse a los métodos que pueden ajustarse en el entrenamiento y aplicarse en las pruebas que excluyen muchos de estos métodos. Si este es su interés principal, también debe buscar métodos para la capacitación previa no supervisada y la ingeniería de funciones (supervisada).

Ryan Bressler
fuente
6

Si todas las N variables son más o menos ortogonales, la reducción de la dimensión reducirá relativamente poco. Ej. EnR

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)

En esencia, "ortogonal" implica "ya en su tamaño más pequeño".

Peter Flom - Restablece a Monica
fuente
2
tienes un pequeño error tipográfico en "ortogonal"
Silverfish
66
@Silverfish, orthon es "un humanoide de mediana estatura con cabello largo y rubio y piel bronceada con zapatos de color marrón rojizo". Aunque puede que tengas razón en que Peter quería decir diferente.
ttnphns
44
¿Vale la pena señalar que esta respuesta depende de cómo se escalan las variables? Si hay variables de alta y baja varianza y hacemos PCA en la matriz de covarianza no correlación, entonces habrá componentes de baja varianza que pueden descartarse (la ortogonalidad solo significa que sus cargas los identifican fuertemente con una variable de baja varianza cada uno). Realizar los siguientes cambios leves: x1<-rnorm(100, sd=0.1)y pcsol <- princomp(df1, cor=FALSE)y hay una diferencia, especialmente si miramos summary(pcsol). (No estoy sugiriendo que cov sea un mejor enfoque que cor, solo que es posible).
Silverfish
Arreglé el error tipográfico, gracias. Además, buen punto sobre la escala.
Peter Flom - Restablece a Monica
2
¿No se aplica esto solo a la reducción de dimensiones que depende de la covarianza? ¿Por qué, por ejemplo, la escala multidimensional no haría ninguna reducción aquí?
shadowtalker