10 votos

Conexión entre PCA y regresión lineal

¿Existe un vínculo formal entre la regresión lineal y el ACP? El objetivo del ACP es descomponer una matriz en una combinación lineal de variables que contengan la mayor parte de la información de la matriz. Supongamos que estamos haciendo PCA en una matriz de entrada en lugar de su matriz de covarianza, y las columnas $X_1, X2, ..., X_n$ de la matriz son variables de interés. Entonces, intuitivamente, parece que el procedimiento PCA es similar a una regresión lineal en la que se utiliza una combinación lineal de las variables para predecir las entradas de la matriz. ¿Es esto correcto? ¿Cómo se puede precisar matemáticamente?

Imagine que enumera el espacio (infinito) de todas las combinaciones lineales de las variables $X_1, X_2, ...,X_n$ de una matriz de datos y realizar una regresión lineal en cada una de esas combinaciones para medir qué parte de las filas de la matriz puede "explicar" la combinación. ¿Existe una interpretación de lo que hace PCA en términos de esta operación? Es decir, ¿cómo en este procedimiento PCA seleccionaría las 'mejores' combinaciones lineales? Me doy cuenta de que este procedimiento es obviamente no computacionalmente factible, sólo lo presento para tratar de hacer el vínculo entre PCA y regresión lineal. Este procedimiento trabaja directamente con combinaciones lineales de columnas de una matriz por lo que no requiere que sean ortogonales.

9voto

Jorrit Reedijk Puntos 129

La diferencia entre PCA y regresión puede interpretarse como matemáticamente sólo una multiplicación adicional con una matriz inversa...

He aquí una matriz de correlaciones con tres grupos de variables:

group g1: $x_{1,1},x_{1,2}$ correlated         
group g2: $x_{2,1},x_{2,2},x_{2,3}$ correlated         
group g3: $y$ composed by the variables of group g1 and g2         

La matriz de correlaciones tiene el siguiente aspecto

cor         x1_1    x1_2    x2_1    x2_2    x2_3    ___y
-----------------------------------------------------------
x1_1        1.000   0.976   0.472   0.444   0.430   0.642
x1_2        0.976   1.000   0.594   0.567   0.538   0.767
x2_1        0.472   0.594   1.000   0.998   0.979   0.919
x2_2        0.444   0.567   0.998   1.000   0.986   0.917
x2_3        0.430   0.538   0.979   0.986   1.000   0.904
___y        0.642   0.767   0.919   0.917   0.904   1.000
-----------------------------------------------------------

Se trata de la matriz de cargas en su forma triangular cholesky inicial cuando aún no se ha girado a la posición PC:

tri         f1       f2      f3      f4      f5      f6
-----------------------------------------------------------
x1_1        1.000   0.000   0.000   0.000   0.000   0.000
x1_2        0.976   0.218   0.000   0.000   0.000   0.000
x2_1        0.472   0.612   0.634   0.000   0.000   0.000
x2_2        0.444   0.615   0.649   0.054   0.000   0.000
x2_3        0.430   0.543   0.700   0.119   0.128   0.000
___y        0.642   0.644   0.350   0.156   0.112   0.117
-----------------------------------------------------------

En el ACP no distinguimos entre variables independientes y dependientes, por lo que podríamos hacer una rotación a posición ACP, donde entonces el primer eje/columna denota el primer componente principal y así sucesivamente.

[22] pca = rot(dr,"pca")

pca         f1        f2      f3      f4      f5      f6
-----------------------------------------------------------
x1_1        0.714   -0.692   0.100   0.041  -0.020   0.005
x1_2        0.810   -0.584  -0.031  -0.047   0.025  -0.007
x2_1        0.948    0.300   0.063  -0.081   0.003   0.018
x2_2        0.940    0.333   0.050  -0.049  -0.015  -0.019
x2_3        0.926    0.351   0.072   0.114   0.016  -0.001
___y        0.973    0.045  -0.226   0.027  -0.010   0.004
-----------------------------------------------------------

Vemos que todas las variables tienen un factor común, pero también podemos ver que sólo dos o tres factores son "relevantes". Una rotación quartimax podría localizar los tres factores principales mejor relacionados con los grupos de variables

[26] qua = rot(pca,"quartimax",1..6,1..3)

qua.max       f1      f2      f3      f4      f5      f6
-----------------------------------+------------------------
x1_1        0.373   0.925   -0.060   0.041  -0.020   0.005
x1_2        0.505   0.859    0.068  -0.047   0.025  -0.007
--------
x2_1        0.988   0.112   -0.059  -0.081   0.003   0.018
x2_2        0.994   0.078   -0.048  -0.049  -0.015  -0.019
x2_3        0.989   0.056   -0.071   0.114   0.016  -0.001
--------
___y        0.908   0.342    0.240   0.027  -0.010   0.004
-----------------------------------+------------------------

Vemos que tenemos dos grupos principales con altas correlaciones dentro del grupo, es decir, que miden casi lo mismo, en las variables x y un "grupo" separado menos nítidamente con sólo la variable y que está correlacionada con ambos grupos pero sigue teniendo una varianza individual (en el factor f3).
Se trata de un PCA clásico con rotación Quartimax/Varimax, el procedimiento "little jiffy".

Ahora pasamos a la regresión. En la regresión definimos una variable como dependiente, en nuestro caso la variable y. Estamos interesados en la forma en que y está compuesta por las variables independientes; un punto de vista aún pca-inherente sería que encontramos el pca de las variables independientes solamente y leve el factor f6, que muestra una parte de y-varianza que no está correlacionada , solo como se toma del factor cholesky triangular inicial.

[29] pca = rot(dr,"pca",1..5)

pca.reg      f1       f2      f3      f4      f5      f6
---------------------------------------------------+--------
x1_1        0.729   -0.680   0.067  -0.048  -0.002  0.000
x1_2        0.816   -0.571  -0.067   0.055   0.001  0.000
-------------------
x2_1        0.946    0.315  -0.066  -0.033   0.019  0.000
x2_2        0.936    0.348  -0.041  -0.013  -0.023  0.000
x2_3        0.923    0.366   0.117   0.036   0.004  0.000
---------------------------------------------------+--------
___y        0.957    0.057  -0.076   0.245  -0.039  0.117
---------------------------------------------------+--------

Aún así, los ejes muestran los "factores" y cómo cada variable está compuesta por esos factores comunes (f1 a f5) o individuales (f6).

La regresión pide ahora la composición de y no por los factores/coordenadas en los ejes sino por las coordenadas en las variables x si se toman como ejes.
Afortunadamente, sólo tenemos que multiplicar la matriz de cargas actual por la inversa de la submatriz x para obtener los ejes definidos por la x y tener las "cargas" de y en x:

[32] B = (pca[*,1..5]*inv(pca[1..5,1..5]) ) || pca[*,6]

reg.B       x1_1    x1_2    x2_1    x2_2    x2_3    ___y
---------------------------------------------------+--------
x1_1        1.000   0.000   0.000   0.000   0.000   0.000
x1_2        0.000   1.000   0.000   0.000   0.000   0.000
-------------------
x2_1        0.000   0.000   1.000   0.000   0.000   0.000
x2_2        0.000   0.000   0.000   1.000   0.000   0.000
x2_3        0.000   0.000   0.000   0.000   1.000   0.000
---------------------------------------------------+--------
___y        -1.442  1.989   -1.394  0.955   0.876   0.117

Vemos, que cada uno de los ejes se identifica con una de las variables y también las "cargas" de y en ese eje. Pero como los ejes muestran ahora las direcciones de las x, las cargas de y en la última fila son ahora también los coeficientes/pesos de "regresión", y los pesos de regresión son ahora

B = [-1.442  1.989   -1.394  0.955   0.876 ]

(Debido a las fuertes correlaciones en los grupos, las ponderaciones de la regresión son superiores a 1 y también se alternan los signos. Pero esto no tiene mucha importancia en esta explicación metódica)


[Actualización]

Relacionando PCA y regresión de este modo, se produce con gran fluidez otro ejemplo instructivo que podría mejorar la intuición. Se trata del problema de la multicolinealidad, que si se da en regresión es un problema para el investigador, pero si se produce en PCA sólo mejora la validez de estimación de componentes separados y las cargas de los ítems en dichos constructos (latentes).
La media, que quiero introducir aquí, es la "dirección principal" de los ítems multicolineales (que por supuesto es el primer componente principal) respectivamente los dos conjuntos de ítems independientes $x1$ y $x2$ . Podemos introducir variables latentes que marquen los pc de los dos conjuntos de elementos x. Esto se puede hacer prácticamente aplicando pc-rotación con criterio maximizador tomado sólo de los conjuntos:

[32] pc1 = rot(tri,"pca",1..2,1..5)  //rotating for pc of items 1..2 only
[33] pc1 = {pc1,marksp(pc1,{1,2})}   //add markers for that pc's 

PC1       pc1_1     pc1_2     c3        c4        c5        c6
--------------------------------------------------------------
x1_1      0.994    -0.109     0         0         0         0
x1_2      0.994     0.109     0         0         0         0
--------------------------------------------------------------
x2_1      0.562     0.571     0.599     0         0         0
x2_2      0.536     0.578     0.613     0.054     0         0
x2_3      0.521     0.516     0.657     0.123     0.125     0
--------------------------------------------------------------
y         0.722     0.575     0.316     0.151     0.11      0.116
===============================================================
pc1_1     1         0         0         0         0         0
pc1_2     0         1         0         0         0         0
===============================================================

Si estuviéramos mirando el sistema de $x1_1,x1_2$ y $y$ sólo que ya habíamos los valores beta para los pc's de ese $x1$ -elemento fijado como $b_{pc1_1}=0.722$ y $b_{pc1_2}=0.575$ - sin problemas debido a la (multi)colinealidad.

Lo mismo puede hacerse con el segundo conjunto de elementos independientes $x2_1,x2_2,x2_3$ :

[37] pc2 = rot(pc1,"pca",3..5,1..5)                                   
[38] pc2 = {pc2,marksp(pc2,{1,2,3})}                               

PC2       pc2_1     pc2_2     pc2_3     c4        c5        c6
--------------------------------------------------------------
x1_1      0.477    -0.124    -0.464     0.729     0.101     0
x1_2      0.599    -0.189    -0.389     0.636     0.221     0
--------------------------------------------------------------
x2_1      0.997    -0.078    -0.022     0         0         0
x2_2      0.999    -0.041     0.027     0         0         0
x2_3      0.993     0.119    -0.005     0         0         0
--------------------------------------------------------------
y         0.923    -0.029    -0.058     0.212     0.294     0.116
===============================================================
pc1_1     0.542    -0.157    -0.429     0.687     0.162     0
pc1_2     0.557    -0.300     0.343    -0.424     0.55      0
--------------------------------------------------------------
pc2_1     1         0         0         0         0         0
pc2_2     0         1         0         0         0         0
pc2_3     0         0         1         0         0         0
===============================================================

El valor beta para el primer PC del segundo conjunto de elementos (en un modelo sin el primer conjunto) fue el siguiente $b_{pc2_1}=0.923$ que es más que eso $b_{pc1_1}=0.722$ para el primer pc del primer conjunto de elementos independientes.

Ahora para ver las betas utilizando el modelo conjunto requiere de nuevo sólo la inversión de la submatriz de las cargas de todo el conjunto de 5 pc-marcadores y postmultiplicando las 5 primeras columnas con eso. Esto nos da las "cargas", si los 5 pcs se toman como ejes de un sistema de coordenadas. Obtenemos

[42] beta = pca1[*,1..5]* inv(pca1[7..11,1..5]) || pca1[*,6]        

beta      pc1_1     pc1_2     pc2_1     pc2_2     pc2_3     c6
--------------------------------------------------------------
x1_1      0.994    -0.109     0         0         0         0
x1_2      0.994     0.109     0         0         0         0
--------------------------------------------------------------
x2_1      0         0         0.997    -0.078    -0.022     0
x2_2      0         0         0.999    -0.041     0.027     0
x2_3      0         0         0.993     0.119    -0.005     0
--------------------------------------------------------------
y         0.540     0.375     0.421     0.169     0.045     0.116
===============================================================
pc1_1     1         0         0         0         0         0
pc1_2     0         1         0         0         0         0
--------------------------------------------------------------
pc2_1     0         0         1         0         0         0
pc2_2     0         0         0         1         0         0
pc2_3     0         0         0         0         1         0
===============================================================

Resumiendo:

beta      pc1_1     pc1_2  |   pc2_1     pc2_2     pc2_3   |  c6
---------------------------+-------------------------------+--------
y         0.540     0.375  |   0.421     0.169     0.045   |  0.116
===========================+===============================|========

En ese conjunta la "dirección principal" del primer conjunto de independientes tiene una ponderación beta de 0,540 y la "dirección principal" del segundo conjunto de 0,421 . El valor en $c6$ está aquí sólo para completar: su cuadrado $0.116^2$ es la varianza no explicada del elemento dependiente $y$ .

6voto

Eric Towers Puntos 8212

No. PCA devuelve mezclas de variables (típicamente dependientes) que más contribuyen a la varianza observada. La regresión lineal no mezcla variables y expresa las variables de salida como combinaciones lineales de las variables de entrada. (¿Combinaciones lineales? Sí. ¿Mezclas de variables de entrada y salida? No).

El ACP se calcula mediante descomposición de valores singulares . La regresión lineal no lo es. Consecuencias: la regresión lineal se comporta mal si dos o más variables de entrada están correlacionadas (es decir, el sistema es deficiente en cuanto al rango), y suele producir resultados que dependen sensiblemente del ruido. El ACP fusiona las variables (casi) indistinguibles y sigue dando resultados sanos. Esta fusión de variables fuertemente correlacionadas puede dar lugar a una reducción de la dimensionalidad aparente del sistema, mejorando en general el poder explicativo y la predicción.

El proceso de utilizar PCA para la regresión lineal se denomina Regresión por componentes principales .

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