Tengo un gran conjunto de datos y quiero realizar una reducción de dimensionalidad.
Ahora, en todas partes, leo que puedo usar PCA para esto. Sin embargo, todavía parece que no sé qué hacer después de calcular / realizar el PCA. En R esto se hace fácilmente con el comando princomp
.
¿Pero qué hacer después de calcular el PCA? Si decidí que quiero usar los primeros componentes principales, ¿cómo reduzco exactamente mi conjunto de datos?
Respuestas:
Creo que a lo que se refiere en su pregunta se refiere al truncamiento de datos utilizando un número menor de componentes principales (PC). Para tales operaciones, creo que la función
prcomp
es más ilustrativa ya que es más fácil visualizar la multiplicación de matrices utilizada en la reconstrucción.Primero, proporcione un conjunto de datos sintético,
Xt
realice la PCA (normalmente centraría las muestras para describir las PC relacionadas con una matriz de covarianza:En los resultados o
prcomp
, puede ver las PC (res$x
), los valores propios (res$sdev
) que proporcionan información sobre la magnitud de cada PC y las cargas (res$rotation
).Al cuadrar los valores propios, obtienes la varianza explicada por cada PC:
Finalmente, puede crear una versión truncada de sus datos utilizando solo las PC principales (importantes):
Puede ver que el resultado es una matriz de datos ligeramente más uniforme, con características de pequeña escala filtradas:
Y aquí hay un enfoque muy básico que puede hacer fuera de la función prcomp:
Ahora, decidir qué PC retener es una pregunta separada, una que me interesó hace un tiempo . Espero que ayude.
fuente
prcomp
hace por ti. Echa un vistazo ares$center
yres$scale
. En mi humilde opinión, es menos propenso a errores al usar estos (no hay diferencia accidental sobre centrar o no / escalar o no entre la llamada explícitascale
y laprcomp
llamada).what to do after calculating the PCA
ohow do I reduce my dataset exactly
? Dado que el OP ha llevado a cabo PCA en su muestra, su pregunta es qué hacer con ella y qué sucede con estas submuestras; no cómo hacer PCA. También podríamos proponer hacerloE <- eigen(cov(Sample)); A<- scale(scale=F, Sample) %*% E$vectors
para obtener otra forma de obtener las puntuaciones también (que en realidad es lo que hace princompstats:::princomp.default
).Estas otras respuestas son muy buenas y detalladas, pero me pregunto si realmente estás haciendo una pregunta mucho más básica: ¿qué haces una vez que tienes tus PC?
Cada PC simplemente se convierte en una nueva variable. Digamos que PC1 representa el 60% de la variación total y PC2 representa el 30%. Como eso representa el 90% de la variación total, simplemente podría tomar estas dos nuevas variables (PC) como una versión simplificada de sus variables originales. Esto significa adaptarlos a los modelos, si eso es lo que le interesa. Cuando llega el momento de interpretar sus resultados, lo hace en el contexto de las variables originales que están correlacionadas con cada PC.
Lo siento si he subestimado el alcance de la pregunta.
fuente
Prácticamente con PCA está utilizando las proyecciones de las PC (los "puntajes") como datos sustitutos para su muestra original. Usted hace todo su análisis de los puntajes, y luego reconstruye su muestra original nuevamente usando las PC para averiguar qué sucedió en su espacio original (eso es básicamente la Regresión del componente principal ). Claramente, si eres capaz de interpretar tus vectores propios ("cargas"), entonces estás en una posición aún mejor: puedes describir lo que le sucede a tu muestra en el modo de variación presentado por esa carga haciendo inferencia en esa carga directamente y No me importa la reconstrucción en absoluto. :)
En general, qué "después de calcular el PCA" depende del objetivo de su análisis. PCA simplemente le brinda una submuestra linealmente independiente de sus datos que es la óptima bajo un criterio de reconstrucción RSS. Puede usarlo para clasificación, regresión, o ambos, o como mencioné, es posible que desee reconocer modos ortogonales significativos de variaciones en su muestra.
Un comentario : creo que la mejor manera ingenua de decidir el número de componentes a retener es basar su estimación en algún umbral de variación de la muestra que le gustaría retener en su muestra de dimensionalidad reducida en lugar de solo un número arbitrario, por ejemplo. 3, 100, 200. Como explicó el usuario 4959, puede verificar esa variación acumulativa marcando el campo relevante de la lista debajo del
$loadings
campo en el objeto de lista producido porprincomp
.fuente
pls
princomp {stats}
Después de hacer el PCA, puede seleccionar los dos primeros componentes y trazar. Puede ver la variación de los componentes usando un diagrama de pantalla en R. También usando la función de resumen con cargas = T puede encontrar la variación de características con los componentes.
También puede consultar este http://www.statmethods.net/advstats/factor.html y http://statmath.wu.ac.at/~hornik/QFS1/principal_component-vignette.pdf
Trata de pensar lo que quieres. Puede interpretar muchas cosas del análisis de PCA.
Best Abhik
fuente