No normalizar los datos antes de que PCA proporcione una relación de varianza mejor explicada

19

Normalicé mi conjunto de datos y luego ejecuté PCA de 3 componentes para obtener pequeñas razones de varianza explicadas ([0.50, 0.1, 0.05]).

Cuando no me normalicé pero blanqueé mi conjunto de datos y luego ejecuté PCA de 3 componentes, obtuve altas razones de varianza explicadas ([0.86, 0.06,0.01]).

Como quiero retener la mayor cantidad de datos en 3 componentes, ¿NO debería normalizar los datos? Según tengo entendido, siempre deberíamos normalizarnos antes de PCA.

Al normalizar: establecer media a 0 y tener varianza unitaria.


fuente
3
Aunque no está claro qué quiere decir con "normalizar" los datos (conozco al menos cuatro formas estándar de hacer esto en PCA y probablemente haya más), parece que el material en stats.stackexchange.com/questions/53 podría ser esclarecedor
whuber
Hola whubber: quiero decir normalizar cada observación a la norma de la unidad
1
Gracias. El término habitual para eso es "estandarizar". Cuando hace eso, está realizando un PCA basado en correlaciones: por eso creo que el enlace que proporcioné podría responder a su pregunta. Sin embargo, no veo que ninguna de las respuestas allí explique por qué o cómo obtendrá resultados diferentes (tal vez porque es complejo y el efecto de la estandarización puede ser difícil de predecir).
whuber
1
¿Es típico el blanqueamiento antes de la PCA? ¿Cuál es el objetivo de hacer eso?
shadowtalker
2
Si estaba trabajando con imágenes, por ejemplo, la norma de las imágenes corresponde al brillo. La alta varianza explicada de los datos no normalizados significa que muchos de los datos pueden explicarse por cambios en el brillo. Si el brillo no es importante para usted, ya que a menudo no se encuentra en el procesamiento de imágenes, primero querrá hacer que todas las unidades de imágenes sean la norma. Aunque la variación explicada de los componentes de su PCA será menor, refleja mejor lo que le interesa.
Aaron

Respuestas:

37

Depende del objetivo de su análisis. Algunas prácticas comunes, algunas de las cuales se mencionan en el enlace de whuber:

  1. La estandarización generalmente se realiza cuando las variables en las que se realiza el PCA no se miden en la misma escala. Tenga en cuenta que la estandarización implica asignar la misma importancia a todas las variables.
  2. Si no se miden en la misma escala y elige trabajar en las variables no estandarizadas, a menudo es el caso de que cada PC está dominada por una sola variable y simplemente obtiene una especie de ordenamiento de las variables por su varianza. (Una de las cargas de cada componente (temprano) estará cerca de +1 o -1.)
  3. Los dos métodos a menudo conducen a resultados diferentes, como has experimentado.

Ejemplo intuitivo:

Supongamos que tiene dos variables: la altura de un árbol y la circunferencia del mismo árbol. Convertiremos el volumen a un factor: un árbol tendrá un volumen alto si su volumen es mayor a 20 pies cúbicos, y de otro modo será bajo en volumen. Usaremos el conjunto de datos de árboles que viene precargado en R.

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

Ahora suponga que la altura se midió en millas en lugar de pies.

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

El primer componente explica casi el 100% de la variabilidad en los datos. Las cargas:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

Valoración gráfica:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot del primer método

Vemos que los árboles de alto volumen tienden a tener una circunferencia de árbol alta, pero las tres alturas no dan ninguna información sobre el volumen del árbol. Esto probablemente sea incorrecto y la consecuencia de las dos unidades de medida diferentes.

Podríamos usar las mismas unidades, o podríamos estandarizar las variables. Espero que ambos conduzcan a una imagen más equilibrada de la variabilidad. Por supuesto, en este caso se puede argumentar que las variables deberían tener la misma unidad pero no estar estandarizadas, lo cual puede ser un argumento válido, si no fuera que estamos midiendo dos cosas diferentes. (Cuando estaríamos midiendo el peso del árbol y la circunferencia del árbol, la escala en la que ambos deberían medirse ya no es muy clara. En este caso tenemos un argumento claro para trabajar en las variables estandarizadas).

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot del segundo método

Ahora vemos que los árboles que son altos y tienen una gran circunferencia, son de alto volumen (esquina inferior izquierda), en comparación con la circunferencia baja y baja altura para árboles de bajo volumen (esquina superior derecha). Esto intuitivamente tiene sentido.

Sin embargo, si uno observa de cerca, vemos que el contraste entre el volumen alto / bajo es más fuerte en la dirección de la circunferencia y no en la dirección de la altura. Veamos qué sucede cuando estandarizamos:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot del tercer método

De hecho, la circunferencia ahora explica la mayoría de la diferencia en árboles de alto y bajo volumen. (La longitud de la flecha en el biplot es indicativa de la varianza en la variable original). Por lo tanto, incluso si las cosas se miden en la misma escala, la estandarización puede ser útil. No se recomienda la estandarización cuando, por ejemplo, comparamos la longitud de diferentes especies de árboles porque esta es exactamente la misma medida.

Matt.135
fuente
2
(+1) Muy buena respuesta, superando en realidad a todos los dados en el hilo popular vinculado sobre PCA en covarianza vs. correlación.
ameba dice Reinstate Monica