Me gustaría entender cómo puedo obtener el porcentaje de varianza de un conjunto de datos, no en el espacio de coordenadas proporcionado por PCA, sino en un conjunto ligeramente diferente de vectores (rotados).
set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))
Básicamente, sé que la varianza del conjunto de datos a lo largo de cada uno de los ejes rojos, dada por PCA, está representada por los valores propios. Pero, ¿cómo podría obtener las variaciones equivalentes, totalizando la misma cantidad, pero proyectando los dos ejes diferentes en verde, que son una rotación por pi / 10 de los ejes componentes principales. IE da dos vectores de unidades ortogonales desde el origen, ¿cómo puedo obtener la varianza de un conjunto de datos a lo largo de cada uno de estos ejes arbitrarios (pero ortogonales), de modo que toda la varianza se contabilice (es decir, la suma de "valores propios" sea igual a la de PCA).
fuente
Respuestas:
Si los vectores son ortogonales, puede simplemente tomar la varianza de la proyección escalar de los datos en cada vector. Digamos que tenemos una matriz de datos ( puntos x dimensiones) y un conjunto de vectores de columna ortonormales . Suponga que los datos están centrados. La varianza de los datos a lo largo de la dirección de cada vector viene dada por .X norte re { v1, . . . , vk} vyo Var ( Xvyo)
Si hay tantos vectores como dimensiones originales ( ), la suma de las variaciones de las proyecciones será igual a la suma de las variaciones a lo largo de las dimensiones originales. Pero, si hay menos vectores que las dimensiones originales ( ), la suma de las variaciones generalmente será menor que para PCA. Una forma de pensar en PCA es que maximiza esta misma cantidad (sujeto a la restricción de que los vectores son ortogonales).k = d k < d
También es posible que desee calcular (la fracción de varianza explicada), que a menudo se usa para medir qué tan bien un número determinado de dimensiones de PCA representa los datos. Supongamos que representa la suma de las variaciones a lo largo de cada dimensión original de los datos. Entonces:R2 S
Esta es solo la proporción de las variaciones sumadas de las proyecciones y las variaciones sumadas a lo largo de las dimensiones originales.
Otra forma de pensar sobre es que mide la bondad del ajuste si intentamos reconstruir los datos a partir de las proyecciones. Luego toma la forma familiar utilizada para otros modelos (por ejemplo, regresión). Digamos que el punto de datos ésimo es un vector fila . Almacenar cada uno de los vectores de la base a lo largo de las columnas de la matriz . La proyección de la ésimo punto de datos en todos los vectores en está dada por . Cuando hay menos vectores que las dimensiones originales ( i x ( i ) V i V p ( i ) = x ( i ) V k < d x ( i ) = p ( i ) V TR2 yo X( i ) V yo V pag( i )= x( i )V k < d ), podemos pensar en esto como mapear los datos linealmente en un espacio con dimensionalidad reducida. Aproximadamente podemos reconstruir el punto de datos de la representación bajo dimensional por la espalda de mapeo en el espacio de datos original: . El error de reconstrucción cuadrático medio es la distancia euclidiana cuadrática media entre cada punto de datos original y su reconstrucción:X^( i )= p( i )VT
La bondad de ajuste se define de la misma manera que para otros modelos (es decir, como uno menos la fracción de varianza inexplicada). Dado el error cuadrático medio del modelo ( ) y la varianza total de la cantidad modelada ( ), . En el contexto de nuestra reconstrucción de datos, el error cuadrático medio es (el error de reconstrucción). La varianza total es (la suma de las variaciones a lo largo de cada dimensión de los datos). Entonces: MSE Var total R 2 = 1 - MSE / Var total E SR2 MSE Vartotal R2=1−MSE/Vartotal E S
R 2S también es igual a la distancia euclidiana cuadrática media desde cada punto de datos a la media de todos los puntos de datos, por lo que también podemos pensar que compara el error de reconstrucción con el del 'peor modelo' que siempre devuelve el significa como la reconstrucción.R2
Las dos expresiones para son equivalentes. Como arriba, si hay tantos vectores como dimensiones originales ( ) entonces será uno. Pero, si , generalmente será menor que para PCA. Otra forma de pensar en PCA es que minimiza el error de reconstrucción al cuadrado. k = d R 2 k < d R 2R2 k=d R2 k<d R2
fuente
try[ing] to reconstruct the data from the projections