13 votos

Qué componentes de la PCA realmente representan el porcentaje de la varianza? Puede que suma más del 100%?

O'Reilly "la Máquina de Aprendizaje Para los Hackers", dice que cada componente principal representa un porcentaje de la varianza. He citado la parte pertinente de la siguiente página (en el capítulo 8, p.207). Hablando a otro experto, que de acuerdo es el porcentaje.

Sin embargo, el 24 de componentes de la suma a 133.2095%. ¿Cómo puede ser eso?

De haber convencido a nosotros mismos de que podemos usar el PCA, ¿cómo hacemos eso en R? De nuevo, este es un lugar en donde R brilla: la totalidad de la PCA se puede hacer en una sola línea de código. Utilizamos el princomp función de la PCA:

pca <- princomp(date.stock.matrix[,2:ncol(date.stock.matrix)])

Si acabamos de tipo pca en R, vamos a ver un resumen rápido de los componentes principales:

Call:
princomp(x = date.stock.matrix[, 2:ncol(date.stock.matrix)])
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
29.1001249 20.4403404 12.6726924 11.4636450 8.4963820 8.1969345 5.5438308
Comp.8 Comp.9 Comp.10 Comp.11 Comp.12 Comp.13 Comp.14
5.1300931 4.7786752 4.2575099 3.3050931 2.6197715 2.4986181 2.1746125
Comp.15 Comp.16 Comp.17 Comp.18 Comp.19 Comp.20 Comp.21
1.9469475 1.8706240 1.6984043 1.6344116 1.2327471 1.1280913 0.9877634
Comp.22 Comp.23 Comp.24
0.8583681 0.7390626 0.4347983
24 variables and 2366 observations.

En este resumen, la desviación estándar nos dicen cómo gran parte de la varianza de los datos set es explicada por los diferentes componentes principales. El primer componente, llamado Comp.1, representa el 29% de la varianza, mientras que el siguiente componente representa el 20%. Al final, el último componente, Comp.24, representa menos del 1% de la varianza. Esto sugiere que podemos aprender mucho acerca de nuestros datos por sólo mirar el primer director de componente.

[Código de datos y se puede encontrar en github.]

11voto

phloopy Puntos 4285

Deben suma a $100~\%.$

La varianza total de una $p$-variable variable aleatoria $X$ con matriz de covarianza $\Sigma$ se define como $${\rm tr}(\Sigma)=\sigma_{11}+\sigma_{22}+\cdots+\sigma_{pp}.$$

Ahora, la traza de una matriz simétrica es la suma de sus autovalores $\lambda_1\geq\lambda_2\geq\ldots\geq\lambda_p.$, con Lo que el total de la varianza es $${\rm tr}(\Sigma)=\lambda_1+\cdots+\lambda_p$$ si utilizamos $\lambda_i$ para denotar los valores propios de a $\Sigma$. Tenga en cuenta que $\lambda_p\geq 0$ ya que las matrices de covarianza son positivas semidefinite, de modo que la varianza total es no negativo.

Pero los componentes principales están dadas por $e_iX$ donde$e_i$$i$: ésimo vector propio (estandarizado para tener la longitud $1$), correspondiente al autovalor $\lambda_i$. Su varianza es $${\rm Var}(e_iX)=e_i'\Sigma e_i=\lambda_ie_i'e_i=\lambda_i$$ y por lo tanto la primera $k$ principales componentes que forman $$\Big(\frac{\lambda_1+\cdots+\lambda_k}{\lambda_1+\cdots+\lambda_p}\cdot 100\Big)~\%$$ de la varianza total. En particular, constituyen $100~\%$ de la varianza total de al $k=p$.

11voto

ebarrera Puntos 107

Uso summary.princomp a ver la "Proporción de la Varianza" y "la Proporción Acumulada".

pca <- princomp(date.stock.matrix[,2:ncol(date.stock.matrix)])
summary(pca)

4voto

JMW.APRN Puntos 21

Aquí hay algunas código R para complementar las anteriores respuestas (pca[["sdev"]] es generalmente escrito pca$sdev, pero causa misformatting en el siguiente fragmento).

# Generate a dummy dataset.
set.seed(123)
x <- matrix(rnorm(400, sd=3), ncol=4)
# Note that princomp performs an unscaled PCA.
pca1 <- princomp(x)
# Show the fraction variance of each PC.
pca1[["sdev"]]^2
cumsum(pca1[["sdev"]]^2)/sum(pca1[["sdev"]]^2)
# Perform a scaled PCA.
pca2 <- princomp(x, cor=TRUE)
pca2[["sdev"]]^2
cumsum(pca2[["sdev"]]^2)/sum(pca2[["sdev"]]^2)

Así que, como @Max puntos, trabajando con la varianza en lugar de la desviación estándar y no olvidar a dividir por el total de la varianza se soluciona el problema.

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