Buscar..


Reduciendo la dimensión con el análisis de componentes principales

El análisis de componentes principales encuentra secuencias de combinaciones lineales de las características. La primera combinación lineal maximiza la varianza de las características (sujeto a una restricción de unidad). Cada una de las siguientes combinaciones lineales maximiza la varianza de las características en el subespacio ortogonal a la que abarca las combinaciones lineales anteriores.

Una técnica de reducción de dimensión común es usar solo las k primeras de tales combinaciones lineales. Supongamos que las entidades son una matriz X de n filas y m columnas. Las primeras k combinaciones lineales forman una matriz β k de m filas yk columnas. El producto X β tiene n filas yk columnas. Por lo tanto, la matriz β k resultante puede considerarse una reducción de las dimensiones de m a k , reteniendo las partes de alta varianza de la matriz X original.

En scikit-learn , PCA se realiza con sklearn.decomposition.PCA . Por ejemplo, supongamos que comenzamos con una matriz de 100 X 7, construida de modo que la varianza esté contenida solo en las dos primeras columnas (reduciendo las cinco últimas columnas):

import numpy as np
np.random.seed(123) # we'll set a random seed so that our results are reproducible
X = np.hstack((np.random.randn(100, 2) + (10, 10), 0.001 * np.random.randn(100, 5)))

Realicemos una reducción a 2 dimensiones:

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)

Ahora vamos a ver los resultados. Primero, aquí están las combinaciones lineales:

pca.components_
# array([[ -2.84271217e-01,  -9.58743893e-01,  -8.25412629e-05,
#           1.96237855e-05,  -1.25862328e-05,   8.27127496e-05,
#          -9.46906600e-05],
#        [ -9.58743890e-01,   2.84271223e-01,  -7.33055823e-05,
#          -1.23188872e-04,  -1.82458739e-05,   5.50383246e-05,
#           1.96503690e-05]])

Observe que los dos primeros componentes de cada vector son varios órdenes de magnitud más grandes que los otros, lo que demuestra que la PCA reconoció que la varianza está contenida principalmente en las dos primeras columnas.

Para verificar la relación de la varianza explicada por este PCA, podemos examinar pca.explained_variance_ratio_ :

pca.explained_variance_ratio_
# array([ 0.57039059,  0.42960728])


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow