He leído mucho sobre PCA, incluidos varios tutoriales y preguntas (como este , este , este y este ).
El problema geométrico que PCA está tratando de optimizar es claro para mí: PCA trata de encontrar el primer componente principal minimizando el error de reconstrucción (proyección), que maximiza simultáneamente la varianza de los datos proyectados.
Cuando leí eso por primera vez, inmediatamente pensé en algo como la regresión lineal; tal vez puedas resolverlo usando el gradiente de descenso si es necesario.
Sin embargo, entonces me volví loco cuando leí que el problema de optimización se resuelve utilizando álgebra lineal y encontrando vectores propios y valores propios. Simplemente no entiendo cómo entra en juego este uso del álgebra lineal.
Entonces mi pregunta es: ¿cómo puede la PCA pasar de un problema de optimización geométrica a un problema de álgebra lineal? ¿Alguien puede proporcionar una explicación intuitiva?
No estoy buscando una respuesta como esta que diga "Cuando resuelves el problema matemático de PCA, termina siendo equivalente a encontrar los valores propios y los vectores propios de la matriz de covarianza". Explique por qué los vectores propios resultan ser los componentes principales y por qué los valores propios resultan ser una varianza de los datos proyectados sobre ellos.
Soy ingeniero de software y no matemático, por cierto.
Nota: la figura anterior fue tomada y modificada de este tutorial de PCA .
fuente
optimization problem
Sí, el problema de PCA podría resolverse mediante enfoques de optimización (iterativos, convergentes), creo. Pero dado que tiene una solución de forma cerrada a través de matemáticas, ¿por qué no usar esa solución más simple y eficiente?provide an intuitive explanation
. Me pregunto por qué la respuesta intuitiva y clara de ameba, a la que me he vinculado, no le conviene. Usted pregunta por_why_ eigenvectors come out to be the principal components...
qué? ¡Por definición! Los vectores propios son las direcciones principales de una nube de datos.Respuestas:
Planteamiento del problema
Eso es correcto. Explico la conexión entre estas dos formulaciones en mi respuesta aquí (sin matemáticas) o aquí (con matemáticas).
(Por si esto no está claro: si es la matriz de datos centrada, entonces la proyección está dada por y su varianza es .)X X w 1n - 1( X w )⊤⋅ X w = w⊤⋅ ( 1n - 1X⊤X )⋅ w = w⊤C w
Por otro lado, un vector propio de es, por definición, cualquier vector tal que .C v C v =λ v
Resulta que la primera dirección principal está dada por el vector propio con el valor propio más grande. Esta es una declaración no trivial y sorprendente.
Pruebas
Si uno abre algún libro o tutorial sobre PCA, puede encontrar allí la siguiente prueba de casi una línea de la declaración anterior. Queremos maximizar bajo la restricción de que ; esto se puede hacer introduciendo un multiplicador de Lagrange y maximizando ; diferenciando, obtenemos , que es la ecuación del vector propio. Vemos que tiene que ser el mayor valor propio al sustituir esta solución en la función objetivo, que daw⊤C w ∥ w ∥ = w⊤w =1 w⊤C w -λ( w⊤w -1) C w -λ w =0 λ w⊤C w -λ( w⊤w -1)= w⊤C w =λ w⊤w =λ λ . En virtud del hecho de que esta función objetivo debe ser maximizada, debe ser el mayor valor propio, QED.λ
Esto tiende a ser poco intuitivo para la mayoría de las personas.
Una mejor prueba (ver, por ejemplo, esta clara respuesta de @cardinal ) dice que porque es una matriz simétrica, es diagonal en su base de vector propio. (Esto en realidad se llama teorema espectral ). Por lo tanto, podemos elegir una base ortogonal, a saber, la dada por los vectores propios, donde es diagonal y tiene valores propios en la diagonal. En esa base, simplifica a , o en otras palabras, la varianza está dada por la suma ponderada de los valores propios. Es casi inmediato que para maximizar esta expresión uno simplemente tomeC C λ i w ⊤ C w ∑ λ i w 2 i w = ( 1 , 0 , 0 , … , 0 ) λ 1 w ⊤ C wC λyo w⊤C w ∑ λyow2yo w =(1,0,0,…,0) , es decir, el primer vector propio, que produce la varianza (de hecho, desviarse de esta solución y "intercambiar" partes del valor propio más grande por las partes de las más pequeñas solo conducirá a una variación general más pequeña). Tenga en cuenta que el valor de no depende de la base. Cambiar a la base del vector propio equivale a una rotación, por lo que en 2D se puede imaginar simplemente girando un trozo de papel con el diagrama de dispersión; obviamente esto no puede cambiar ninguna variación.λ1 w⊤C w
Creo que este es un argumento muy intuitivo y muy útil, pero se basa en el teorema espectral. Entonces, el verdadero problema aquí creo es: ¿cuál es la intuición detrás del teorema espectral?
Teorema espectral
Tome una matriz simétrica . Tome su vector propio con el mayor valor propio . Convierta este vector propio en el primer vector base y elija otros vectores base al azar (de modo que todos sean ortonormales). ¿Cómo se verá en esta base?C w1 λ1 C
Tendrá en la esquina superior izquierda, porque en esta base y tiene que ser igual a .λ1 w1= ( 1 , 0 , 0 ... 0 ) C w1= ( C11, C21, ... Cp 1) λ1w1= ( λ1, 0 , 0 ... 0 )
Por el mismo argumento, tendrá ceros en la primera columna debajo de .λ1
Pero como es simétrico, también tendrá ceros en la primera fila después de . Entonces se verá así:λ1
donde espacio vacío significa que hay un bloque de algunos elementos allí. Como la matriz es simétrica, este bloque también será simétrico. Entonces podemos aplicarle exactamente el mismo argumento, usando efectivamente el segundo vector propio como el segundo vector base y obteniendo y en la diagonal. Esto puede continuar hasta que sea diagonal. Ese es esencialmente el teorema espectral. (Observe cómo funciona solo porque es simétrico).λ1 λ2 C C
Aquí hay una reformulación más abstracta de exactamente el mismo argumento.
Sabemos que , por lo que el primer vector propio define un subespacio unidimensional donde actúa como una multiplicación escalar. Tomemos ahora cualquier vector ortogonal a . Entonces es casi inmediato que también es ortogonal a . En efecto:C w1= λ1w1 C v w1 C v w1
Esto significa que actúa sobre todo el subespacio ortogonal restante a modo que se mantenga separado de . Esta es la propiedad crucial de las matrices simétricas. Entonces podemos encontrar el vector propio más grande allí, , y proceder de la misma manera, eventualmente construyendo una base ortonormal de vectores propios.C w1 w1 w2
fuente
prcomp(iris[,1:4], center=T, scale=T)
), veo vectores propios de longitud de unidad con un montón de flotadores como(0.521, -0.269, 0.580, 0.564)
. Sin embargo, en su respuesta bajo "Pruebas", escribe Es casi inmediato que para maximizar esta expresión uno simplemente debe tomar w = (1,0,0, ..., 0), es decir, el primer vector propio . ¿Por qué el vector propio en su prueba se ve tan bien formado así?Hay un resultado de 1936 por Eckart y Young ( https://ccrma.stanford.edu/~dattorro/eckart%26young.1936.pdf ), que establece lo siguiente
donde M (r) es el conjunto de matrices de rango r, lo que básicamente significa que los primeros componentes r de SVD de X dan la mejor aproximación de matriz de rango bajo de X y la mejor se define en términos de la norma de Frobenius al cuadrado: la suma del cuadrado elementos de una matriz.
Este es un resultado general para las matrices y, a primera vista, no tiene nada que ver con los conjuntos de datos o la reducción de dimensionalidad.
Sin embargo, si no piensa en como una matriz, sino que piensa en las columnas de la matriz representan vectores de puntos de datos, entonces es la aproximación con el error de representación mínimo en términos de diferencias de error al cuadrado.X X X^
fuente
Esta es mi opinión sobre el álgebra lineal detrás de PCA. En álgebra lineal, uno de los teoremas clave es el . Establece si S es una matriz simétrica n por n con coeficientes reales, entonces S tiene n vectores propios con todos los valores propios siendo reales. Eso significa que podemos escribir con D una matriz diagonal con entradas positivas. Eso es y no hay ningún daño en asumir . A es el cambio de matriz base. Es decir, si nuestra base original era , entonces con respecto a la base dada por S = A D A - 1 ) A ( x i ) | El | A ( x i ) | El | = λ iSpectral Theorem S=ADA−1 D=diag(λ1,λ2,…,λn) λ1≥λ2≥…≥λn x1,x2,…,xn A(x1),A(x2),…A(xn) , la acción de S es diagonal. Esto también significa que puede considerarse como una base ortogonal con Si nuestra matriz de covarianza fuera para n observaciones de n variables, estaríamos . La base proporcionada por es la base de PCA. Esto se desprende de los hechos de álgebra lineal. En esencia, es cierto porque una base de PCA es una base de vectores propios y hay al menos n vectores propios de una matriz cuadrada de tamaño n.
Por supuesto, la mayoría de las matrices de datos no son cuadradas. Si X es una matriz de datos con n observaciones de p variables, entonces X es de tamaño n por p. Asumiré que (más observaciones que variables) y queA(xi) ||A(xi)||=λi A(xi)
n>p rk(X)=p (todas las variables son linealmente independientes). Ninguna suposición es necesaria, pero ayudará con la intuición. El álgebra lineal tiene una generalización del teorema espectral llamada descomposición del valor singular. Para tal X, establece que con U, V matrices ortonormales (cuadradas) de tamaño nyp y una matriz diagonal real con solo no negativo entradas en la diagonal. Nuevamente, podemos reorganizar la base de V para que En términos de matriz, esto significa que si y si . ElX=UΣVt Σ=(sij) s11≥s22≥…spp>0 i ≤ p s i i = 0 i > n v i Σ V tX(vi)=siiui i≤p sii=0 i>n vi dar la descomposición de PCA. Más precisamente, es la descomposición de PCA. ¿Por qué? De nuevo, el álgebra lineal dice que solo puede haber vectores propios. La SVD proporciona nuevas variables (dadas por las columnas de V) que son ortogonales y tienen una norma decreciente. ΣVt
fuente
"que maximiza simultáneamente la varianza de los datos proyectados". ¿Has oído hablar del cociente de Rayleigh ? Tal vez esa sea una forma de ver esto. Es decir, el cociente rayleigh de la matriz de covarianza le proporciona la varianza de los datos proyectados. (y la página wiki explica por qué los vectores propios maximizan el cociente de Rayleigh)
fuente
@amoeba ofrece una formalización clara y prueba de:
Pero creo que hay una prueba intuitiva para:
Podemos interpretar w T Cw como un producto de punto entre el vector w y Cw, que se obtiene al pasar por la transformación C:
w T Cw = ‖w‖ * ‖Cw‖ * cos (w, Cw)
Como w tiene una longitud fija, para maximizar w T Cw, necesitamos:
Resulta que si consideramos que w es un vector propio de C con el valor propio más grande, podemos archivar ambos simultáneamente:
Como los vectores propios son ortogonales, junto con los otros vectores propios de C forman un conjunto de componentes principales para X.
prueba de 1
descomponer w en vectores propios primarios y secundarios ortogonales v1 y v2 , supongamos que su longitud es v1 y v2 respectivamente. queremos probar
(λ 1 w) 2 > ((λ 1 v1) 2 + (λ 2 v2) 2 )
desde λ 1 > λ 2 , tenemos
((λ 1 v1) 2 + (λ 2 v2) 2 )
<((λ 1 v1) 2 + (λ 1 v2) 2 )
= (λ 1 ) 2 * (v1 2 + v2 2 )
= (λ 1 ) 2 * w 2
fuente