24 votos

Posicionamiento de las flechas en un biplot PCA

Estoy buscando implementar un biplot para el análisis de componentes principales (PCA) en JavaScript. Mi pregunta es, ¿cómo puedo determinar las coordenadas de las flechas de la $U,V,D$ ¿el resultado de la descomposición de vectores singulares (SVD) de la matriz de datos?

A continuación se muestra un ejemplo de biplot producido por R:

biplot(prcomp(iris[,1:4]))

Biplot of the Iris dataset

Intenté buscarlo en el Artículo de Wikipedia sobre biplot pero no es muy útil. O correcto. No estoy seguro de cuál.

3 votos

Biplot es un gráfico de dispersión superpuesto que muestra tanto los valores U como los V. O UD y V. O U y VD'. O UD y VD'. En términos de PCA, los UD se denominan puntuaciones brutas de componentes principales y los VD' se denominan cargas de componentes variables.

2 votos

Tenga en cuenta también que la escala de las coordenadas depende de cómo se normalicen inicialmente los datos. En el PCA, por ejemplo, normalmente se dividen los datos por sqrt(r) o sqrt(r-1) [r es el número de filas]. Pero en un verdadero "biplot" en el sentido estricto de la palabra, normalmente se dividen los datos por sqrt(rc) [c es el número de columnas] y luego se desnormalizan las U y V obtenidas.

0 votos

¿Por qué los datos tienen que ser escalados por $\frac{1}{\sqrt{n-1}}$ ?

51voto

zowens Puntos 1417

Hay muchas maneras diferentes de producir un biplot PCA y por lo tanto no hay una respuesta única a su pregunta. He aquí un breve resumen.

Suponemos que la matriz de datos $\mathbf X$ tiene $n$ puntos de datos en filas y está centrado (es decir, las medias de las columnas son todas cero). Por ahora, hacemos no suponemos que fue estandarizada, es decir, consideramos el ACP sobre la matriz de covarianza (no sobre la matriz de correlación). El PCA equivale a una descomposición del valor singular $$\mathbf X=\mathbf{USV}^\top,$$ puedes ver mi respuesta aquí para más detalles: Relación entre SVD y PCA. Cómo utilizar la SVD para realizar el PCA?

En un biplot del PCA, los dos primeros componentes principales se trazan como un gráfico de dispersión, es decir, la primera columna de $\mathbf U$ se traza contra su segunda columna. Pero la normalización puede ser diferente; por ejemplo, se puede utilizar

  1. Columnas de $\mathbf U$ son componentes principales escalados a la suma unitaria de los cuadrados;
  2. Columnas de $\sqrt{n-1}\mathbf U$ son componentes principales estandarizados (varianza unitaria);
  3. Columnas de $\mathbf{US}$ : se trata de componentes principales "en bruto" (proyecciones en direcciones principales).

Además, las variables originales se trazan como flechas; es decir $(x,y)$ coordenadas de un $i$ -a punta de flecha están dadas por el $i$ -ésima en la primera y segunda columna de $\mathbf V$ . Pero, de nuevo, se pueden elegir diferentes normalizaciones, por ejemplo:

  1. Columnas de $\mathbf {VS}$ : No sé cuál podría ser la interpretación aquí;
  2. Columnas de $\mathbf {VS}/\sqrt{n-1}$ : se trata de cargas;
  3. Columnas de $\mathbf V$ son los ejes principales (también conocidos como direcciones principales o vectores propios).

Este es el aspecto de todo esto para el conjunto de datos Fisher Iris:

Fisher Iris biplots, PCA on covariance

La combinación de cualquier subtrama de arriba con cualquier subtrama de abajo conformaría $9$ posibles normalizaciones. Pero según la definición original de un biplot introducida en Gabriel, 1971, La representación gráfica biplot de las matrices con aplicación al análisis de componentes principales (este artículo tiene 2k citas, por cierto), las matrices utilizadas para el biplot deberían, cuando se multiplican juntas, aproximarse a $\mathbf X$ (de eso se trata). Así que un "biplot adecuado" puede utilizar, por ejemplo $\mathbf{US}^\alpha \beta$ y $\mathbf{VS}^{(1-\alpha)} / \beta$ . Por lo tanto, sólo tres de los $9$ son "biplots propiamente dichos": es decir, una combinación de cualquier subplot de arriba con el de abajo.

[Cualquiera que sea la combinación que se utilice, podría ser necesario escalar las flechas por algún factor constante arbitrario para que tanto las flechas como los puntos de datos aparezcan aproximadamente en la misma escala].

Utilizando las cargas, es decir $\mathbf{VS}/\sqrt{n-1}$ para las flechas tiene una gran ventaja, ya que tienen interpretaciones útiles (véase también aquí sobre las cargas). La longitud de las flechas de carga se aproxima a la desviación estándar de las variables originales (la longitud al cuadrado se aproxima a la varianza), los productos escalares entre dos flechas cualesquiera se aproximan a la covarianza entre ellas, y los cosenos de los ángulos entre las flechas se aproximan a las correlaciones entre las variables originales. Para hacer un "biplot adecuado", hay que elegir $\mathbf U\sqrt{n-1}$ es decir, PCs estandarizados, para los puntos de datos. Gabriel (1971) llama a esto "PCA biplot" y escribe que

Esta [elección particular] es probable que proporcione una ayuda gráfica muy útil en la interpretación de las matrices multivariadas de observaciones, siempre que, por supuesto, éstas puedan aproximarse adecuadamente al rango dos.

Utilizando $\mathbf{US}$ y $\mathbf{V}$ permite una buena interpretación: las flechas son proyecciones de los vectores base originales sobre el plano PC, véase esta ilustración de @hxd1011 .

Incluso se puede optar por trazar PCs en bruto $\mathbf {US}$ junto con las cargas. Esto es un "biplot impropio", pero fue hecho, por ejemplo, por @vqv en el biplot más elegante que he visto: Visualizar un millón, edición PCA -- muestra el PCA del conjunto de datos del vino.

La cifra que has publicado (resultado por defecto de R biplot ) es un "biplot adecuado" con $\mathbf U$ y $\mathbf{VS}$ . La función escala dos subparcelas de manera que abarquen la misma área. Por desgracia, la función biplot hace una extraña elección de escalar todas las flechas hacia abajo por un factor de $0.8$ y mostrando el etiquetas de texto donde deberían estar los extremos de las flechas. (También, biplot no obtiene el escalado correctamente y, de hecho, acaba trazando las puntuaciones con $n/(n-1)$ suma de cuadrados, en lugar de $1$ . Ver esta detallada investigación de @AntoniParellada: Flechas de las variables subyacentes en el biplot del PCA en R .)

PCA en la matriz de correlación

Si además suponemos que la matriz de datos $\mathbf X$ se ha estandarizado para que las desviaciones estándar de las columnas sean todas iguales a $1$ entonces estamos realizando PCA en la matriz de correlación. Así es como se ve la misma figura:

Fisher Iris biplots, PCA on correlations

En este caso, las cargas son aún más atractivas, porque (además de las propiedades mencionadas), dan exactamente (y no aproximadamente) los coeficientes de correlación entre las variables originales y las PC. Las correlaciones son todas menores que $1$ y las flechas de carga tienen que estar dentro de un "círculo de correlación" de radio $R=1$ que a veces se dibuja también en un biplot (lo he trazado en el correspondiente subplot de arriba). Tenga en cuenta que el biplot por @vqv (vinculado anteriormente) se hizo para un PCA en la matriz de correlación, y también los deportes un círculo de correlación.


Más información:

1 votos

+6, esto merece más de 3 upvotes.

0 votos

¡Muchas gracias, @gung! Es la primera vez que alguien concede una recompensa a mi respuesta post hoc :) Le echaré otro vistazo para ver si se puede mejorar algo.

0 votos

A esta meritoria respuesta podría añadirse otra "lectura adicional". stats.stackexchange.com/q/119746/3277 - para que el lector entienda qué es "loading plot" y que es un ejemplo de "variables en el espacio temático (de rango reducido)". Por lo tanto, el biplot es, en cierto sentido, "espacio de variables" + "espacio de sujetos" en una sola representación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X