Recherche…


Réduction de la dimension avec l'analyse en composantes principales

L'analyse en composantes principales trouve des séquences de combinaisons linéaires des entités. La première combinaison linéaire maximise la variance des entités (soumise à une contrainte d'unité). Chacune des combinaisons linéaires suivantes maximise la variance des entités dans le sous-espace orthogonal à celles générées par les combinaisons linéaires précédentes.

Une technique commune de réduction de dimension consiste à utiliser uniquement les k premières combinaisons linéaires. Supposons que les entités soient une matrice X de n lignes et m colonnes. Les k premières combinaisons linéaires forment une matrice β k de m lignes et k colonnes. Le produit X β comporte n lignes et k colonnes. Ainsi, la matrice résultante β k peut être considérée comme une réduction de m à k dimensions, en conservant les parties à forte variance de la matrice d'origine X.

Dans scikit-learn , PCA est exécuté avec sklearn.decomposition.PCA . Par exemple, supposons que nous commençons par une matrice 100 X 7, construite de telle sorte que la variance ne soit contenue que dans les deux premières colonnes (en réduisant les 5 dernières colonnes):

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)))

Réalisons une réduction à 2 dimensions:

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

Maintenant vérifions les résultats. Tout d'abord, voici les combinaisons linéaires:

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]])

Notez que les deux premières composantes de chaque vecteur sont plusieurs fois plus grandes que les autres, ce qui montre que la PCA a reconnu que la variance se trouvait principalement dans les deux premières colonnes.

Pour vérifier le rapport de la variance expliquée par cette PCA, on peut examiner pca.explained_variance_ratio_ :

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow