Saltar al contenido

Conexión entre PCA y regresión lineal

Nuestro equipo de trabajo ha estado por horas buscando la respuesta a tus búsquedas, te dejamos la resolución de modo que esperamos que te resulte de gran apoyo.

Solución:

La diferencia entre PCA y regresión se puede interpretar como matemáticamente solo una multiplicación adicional con una matriz inversa …

Aquí hay una matriz de correlación 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 correlación se parece a

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

Esta es la matriz de cargas en su forma cholesky triangular 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 pca no distinguimos entre variables independientes y dependientes; por lo que podríamos hacer una rotación a la posición PCA, donde luego 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 ubicar 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, diciendo que miden casi lo mismo, en las variables xy un “grupo” separado menos nítido con solo la variable y que está correlacionada con ambos grupos pero que aún tiene una varianza individual (en el factor f3).
Este es el PCA clásico con rotación Quartimax / Varimax, el procedimiento de “pequeño jiffy”.

Ahora pasamos a la regresión. En regresión definimos una variable como dependiente, en nuestro caso la variable y. Nos interesa de qué manera y está compuesto por las variables independientes; Un punto de vista aún inherente a pca sería que encontramos el pca de las variables independientes solamente y nivelamos el factor f6, que muestra una parte de la varianza y que no está correlacionada, solo como se toma del factor de 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 af5) o individuales (f6).

La regresión pide ahora la composición de y no por los factores / coordenadas de los ejes sino por las coordenadas de las variables x si se toman como ejes.
Afortunadamente, solo necesitamos multiplicar la matriz de cargas actuales por la inversa de la submatriz x para obtener ejes definidos por 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 esos ejes. Pero debido a que los ejes muestran ahora las direcciones de la x, las cargas de y en la última fila ahora son también las ponderaciones / coeficientes de “regresión”, y las ponderaciones 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 regresión están por encima de 1 y también los signos se alternan. Pero esto no es de gran importancia aquí en esa explicación metódica)


[Update]


Relacionando PCA y regresión de esta manera, ocurre con mucha fluidez otro ejemplo instructivo que podría mejorar la intuición. Este es el problema de la multicolinealidad, que si ocurre en regresión es un problema para el investigador, pero si ocurre solo en PCA mejora la validez de la estimación de componentes separados y las cargas de los elementos en tales construcciones (latentes).
El medio, que quiero introducir aquí, es la “dirección principal” de los elementos multicolineales (que por supuesto es el primer componente principal) respectivamente los dos conjuntos de elementos independientes $ x1 $ y $ x2 $. Podemos introducir variables latentes que marcan los pc de los dos conjuntos de elementos x. Esto prácticamente se puede hacer aplicando la rotación de pc con el criterio de maximización tomado solo 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 $ solamente, ya teníamos los valores beta para las PC de ese elemento $ x1 $ establecido como $ b_ pc1_1 = 0.722 $ y $ b_ pc1_2 = 0.575 $ – ¡sin problemas debido a la (múltiple) colinealidad!

Lo mismo se puede hacer 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 la primera pc del segundo conjunto de elementos (en un modelo sin el primer conjunto) fue $ b_ pc2_1 = 0,923 $ que es más que $ b_ pc1_1 = 0,722 $ para la primera pc de el primer conjunto de elementos independientes.

Ahora, para ver las betas usando el modelo conjunto, nuevamente solo se requiere la inversión de la submatriz de las cargas del conjunto completo de 5 marcadores de pc y luego multiplicar las primeras 5 columnas con eso. Esto nos da las “cargas”, si las 5 piezas 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
===============================================================

En breve:

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 eso articulación modelar la “dirección principal” del primer conjunto de independientes tiene un peso beta de 0,540 y la “dirección principal” del segundo conjunto de 0,421. El valor en $ c6 $ está aquí solo para completar: su cuadrado $ 0.116 ^ 2 $ es la varianza inexplicable del elemento dependiente $ y $.

No. PCA devuelve mezclas de variables (típicamente dependientes) que más contribuyen a la varianza observada. La regresión lineal no mezcla variables mientras 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 PCA se calcula mediante la 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 tiene un rango deficiente), por lo general produce salidas sensiblemente dependientes del ruido. PCA fusiona las variables (casi) indistinguibles juntas y continúa dando resultados cuerdos. Esta fusión de variables fuertemente correlacionadas puede resultar en una reducción en la dimensionalidad aparente del sistema, generalmente mejorando el poder explicativo y la predicción.

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

Aquí tienes las reseñas y puntuaciones

Si te ha sido de utilidad nuestro post, nos gustaría que lo compartas con el resto juniors de esta forma contrubuyes a dar difusión a este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *