Par la pratique de l'analyse en profondeur PCA réduction de dimensionnalité

Vue d'ensemble

Cet article présente une méthode principale de réduction de dimension, PCA (analyse en composantes principales, analyse en composantes principales). la réduction de dimensionnalité pour répondre à trois questions:

  • la réduction de dimensionnalité peut atténuer la malédiction du problème de dimensionnalité;
  • la réduction de dimensionnalité permet la perte d'informations tout en réduisant au minimum les données compressées;
  • Que la structure Apprécié de données est difficile plusieurs centaines de dimensions, petite visualisation des données de dimension plus facile à comprendre.

Ici, du profil, étape calculée, la compréhension du rôle des applications de réduction de dimensionnalité PCA dans trois domaines.

profil PCA

Pour comprendre l'extraction de caractéristiques et de traiter des problèmes de vecteurs de caractéristiques de grande dimension, il est souvent facile de tomber dans la malédiction de la dimensionnalité. Avec l'augmentation des dimensions de l'ensemble de données, le nombre d'échantillons requis algorithme d'apprentissage augmente de façon exponentielle. Dans certaines applications, rencontré une telle grande quantité de données est très négatif et apprendre de grands ensembles de données nécessite plus de mémoire et de puissance de traitement. En outre, avec l'augmentation de la dimension, des données sparsity augmente. Les mêmes ensembles de données explorer axées sur l'exploration plus difficile que dans les mêmes données rares dans l'espace vectoriel de grande dimension.

analyse en composantes principales, également appelé Karhunen - Lufkin transformer (Karhunen-Loeve) , Il est une technique utilisée pour explorer la structure des données de grande dimension. PCA est généralement utilisé pour explorer et visualiser des ensembles de données de grande dimension. Peut aussi être utilisé pour la compression de données, pré-traitement de données. PCA peut être corrélée peut avoir synthétique variable dimensionnelle linéaire variable indépendante faible dimension, appelée composante principale (composants principaux). Les nouvelles données de faible dimension de collecte des variables de rétention des données brutes que possible.

Les données de projection de l'APC en une réduction de la dimension du sous-espace de faible dimension réalisés. Par exemple, les points de données en deux dimensions est de réduire les dimensions de la saillie dans une ligne, pour chaque échantillon ensemble de données peut être représentée par une valeur, pas de deux valeurs. ensemble de données en trois dimensions peut être réduite à deux dimensions, la variable est mis en correspondance à un plan. En général, l'ensemble de données peut être réduit sous-espace NN dimensions en kk par cartographie, dans lequel kn.

Si vous êtes un photographe de brochure d'outils de jardinage, vous photographiez une bouilloire. La bouilloire est en trois dimensions, mais l'image est à deux dimensions, afin de mieux démontrer pleinement la bouilloire au client, vous devez tirer quelques photos sous différents angles. La figure est que vous prenez de quatre directions Photos:

La première figure à l'arrière de la bouilloire peut être vu, mais pas l'avant. La deuxième carte est tourné en avant, vous pouvez voir le bec, cette image peut être le premier tableau fournit des informations manquantes, mais le pot pour le voir. De la vue de dessus en troisième position ne peut pas voir la hauteur du pot. La quatrième carte est ce que vous voulez vraiment, la hauteur de la bouilloire, la partie supérieure du bec et le pot sont clairement visibles.

PCA conception semblable à cela, il est possible de cartographier les ensembles de données de grande dimension à l'espace de faible dimension en même temps, autant que possible de conserver plusieurs variables. ensembles de données de l'APC rotation aligné avec son composant principal, la variable la plus retenus à la première composante principale. Supposons que nous ayons un ensemble de données comme indiqué ci-dessous:

Ensemble de données ressemble à une ellipse allongée à plat allant de l'origine dans le coin supérieur droit. Pour réduire les dimensions de l'ensemble des données, il faut pointer en une ligne tracée. La figure est deux lignes de l'ensemble de données peut être mis en correspondance, la ligne de correspondance où le changement maximal de l'échantillon?

De toute évidence, les échantillons sont mis en correspondance avec les changements de ligne en pointillés noirs est beaucoup plus grande que la carte pour changer les lignes en pointillés rouges. En fait, c'est la première composante principale de la ligne pointillée noire. Le second composant doit être orthogonale à la première composante principale, qui est la deuxième composante principale doit être statistiquement indépendant, il apparaît dans une direction perpendiculaire à la première composante principale, illustrée comme suit:

Chacun des composants derrière principale conservera autant des autres variables, la seule exigence est que chacun nécessite un composant principal et les composants principaux orthogonaux précédents. En supposant maintenant que l'ensemble de données est trois looks de nuage de points comme dimensions un disque en rotation le long d'un axe.

Ces points peuvent être faites par la rotation du disque, et transformé en une transformation à deux dimensions. Maintenant, ces points ressemblaient à un ovale, il n'y a pas de variables fondamentales sur la troisième dimension, il peut être ignoré. Lorsque la variance de l'ensemble de données sur les différentes dimensions de la répartition inégale , PCA est le plus utile. (Si elle est un ensemble de coquille en forme sphérique de données, PCA ne peut fonctionner efficacement à cause de la variance dans chaque direction sont égaux, pas perdu beaucoup de dimension de l'information ne peut être ignoré).

étape de calcul PCA

PCA est important de comprendre les concepts de base sont les trois suivants: La variance, covariance et de la matrice de covariance

variance (Variance) est une mesure du degré de dispersion d'un groupe de données. La variance est le carré de la différence entre chaque échantillon et la moyenne de l'échantillon et moyen:

covariance (Covariance) est une mesure de l'évolution de deux variables de degré de synchronisation, qui est une mesure du degré de dépendance linéaire de deux variables.

Si la covariance de deux variables est 0, les deux indépendants linéaire est considéré comme statistiquement significatif. Notez que deux variables indépendantes ne sont pas totalement indépendants, mais il n'y a pas de corrélation linéaire seulement. Il est calculé comme suit:

Si la covariance est supérieur à 0 indique une variable est une autre variable augmente va augmenter, à savoir une corrélation positive, la covariance est inférieure à 0 indique une augmentation de la variable est une autre variable diminue, à savoir négatif.

matrice de covariance (Matrice de covariance) à partir du jeu de données de vingt-deux composition variable de covariance. (I, j) (i, j) ième élément de la matrice est un ensemble de données et les éléments ii jj covariance. Par exemple, la matrice de covariance des données en trois dimensions comme suit:

Calculons la table matrice de covariance de données:

Les paquets numpy python calculer la moyenne et covariance:

importer numpy comme np

X = , , , >

imprimer (np.mean (X, axe = 0))

imprimer (np.cov (np.array (X) .T))

Moyenne de trois variables échantillons obtenus ont été 2.125,0.075 et -1,275; matrice de covariance:

vecteurs propres et valeurs propres

vecteur Ayant une taille (Magnitude) et l'orientation (direction) des concepts géométriques.

vecteurs propres (Eigenvector) est un vecteur non nul dérivé de la matrice satisfait la formule suivante:

Où v est le vecteur de caractéristique, A est une matrice carrée, est la valeur propre. Après une direction caractéristique de vectorisation reste inchangé, mais sa taille est changé plusieurs valeurs propres. C'est un vecteur caractéristique après la multiplication d'une matrice égale des vecteurs de caractéristique mise à l'échelle isométrique (mise à l'échelle). Eigen mot allemand signifiant « ... ou ... appartenance exclusive (appartenant ou propre à) », la matrice et les données vecteurs propres vecteur ensemble appartenant à la structure décrite.

Vecteurs et valeurs propres ne peuvent être dérivés de la place, et pas tous les valeurs propres de vecteur de caractéristiques et de la matrice. S'il y a une matrice de vecteurs propres et valeurs propres, il a une paire de chaque dimension de vecteurs de caractéristiques et valeurs propres. Le composant principal de la matrice est la matrice de covariance des vecteurs propres et des valeurs propres obtenues selon la taille de l'espèce correspondante. est le plus grand des valeurs propres première composante principale, la deuxième plus grande valeur propre est la deuxième composante principale, et ainsi de suite.

Le calcul de la matrice suivant des valeurs et vecteurs propres:

AA est multipliée par la formule qui précède vecteur propre doit être égale à la valeur caractéristique multipliée par des vecteurs propres. Nous avons établi l'équation caractéristique pour résoudre:

Comme on peut le voir à partir de l'équation caractéristique, la matrice unité et le produit de la matrice des valeurs propres de la matrice est déterminant de 0, à savoir:

Deux valeurs propres sont égales à -1. Maintenant solution de vecteur propre valeur caractéristique. Le = -1 en:

trop:

Donc, il y a:

Toute l'équation satisfait

vecteur non nul (prise

) Peut être utilisé comme vecteurs de caractéristiques:

PCA exige l'unité des vecteurs propres, à savoir la norme L2

1 est égal à des vecteurs caractéristiques.

Ainsi, l'unité sont les vecteurs propres:

Ainsi, l'unité sont les vecteurs propres:

Ici, vous pouvez vérifier le nombre de main du vecteur caractéristique est correct par numpy. fonction eig renvoie les valeurs propres et les vecteurs propres de tuples:

> > > importer numpy comme np

> > > w, v = np.linalg.eig (np.array (, >))

> > > print ( 'valeurs caractéristiques: {} \ n {}: vecteurs propres'. Format (w, v))

Sortie (différence ici est une valeur caractéristique, en raison de la précision de python de compilateur de données à virgule flottante dues):

Eigenvalue:

: 0,707106780,70710678 vecteurs propres 0.707106780,70710678

avec la réduction de la dimension PCA

Utilisons méthode PCA à des données en deux dimensions dans le tableau en bas à unidimensionnelle:

PCA première étape consiste à soustraire la moyenne de l'échantillon avec les données échantillon:

, On calcule ensuite les données principales composantes. Rappelons que Le composant principal de la matrice est que les vecteurs propres de la matrice de covariance obtenues par la valeur caractéristique correspondant à la taille de tri. Un composant principal peut être calculée par deux méthodes: La première méthode consiste à calculer la matrice de covariance de données. La matrice de covariance est une matrice carrée, on peut calculer les valeurs propres et vecteurs propres à l'aide de la méthode précédente. La deuxième méthode consiste à trouver la racine carrée des valeurs propres et des vecteurs propres de la matrice de covariance en utilisant une décomposition en valeurs singulières (décomposition en valeurs singulières) de la matrice de données. Nous avons d'abord introduit la première méthode, puis introduit PCA obtenir scikit-learn, qui est la deuxième méthode. Explication de la matrice de covariance desdits ensembles de données comme suit:

Avec le procédé expliqué précédemment, et 0.033981231,25057433 valeurs propres, vecteurs propres unités sont les suivants:

nous carte Voici les données au composant principal. La première composante principale est le vecteur propre correspondant à la plus grande valeur propre, donc nous devons construire une matrice de transformation, les vecteurs propres de chaque colonne est un composant principal. Si nous voulons déposer des données 5 dimensions en trois dimensions, alors nous le ferons avec une matrice de transformation de la matrice en 3 dimensions. Dans cet exemple, nous allons dans nos données en deux dimensions est mis en correspondance en une dimension, nous avons besoin que d'utiliser la première composante principale de la matrice caractéristique de transformation de vecteur. Enfin, nous utilisons la matrice de données droite multiplication matrice de transformation. Voici les premiers résultats de la cartographie des composants principaux:

matrice numpy est obtenue en appelant le paquet est suit comme:

importer numpy comme np

x = np.mat (,

>)

x = x.T

T = x - x.mean (axe = 0)

C = np.cov (x.T)

w, v = np.linalg.eig (C)

v_ = np.mat (v ) # correspondant à chaque valeur de caractéristique de chaque vecteur de colonne de la matrice de caractéristiques

v_ = v_.T # défaut vecteur ligne stockée, convertie en la forme d'un vecteur colonne formule

y = T * v_

impression (y)

L'utilisation PCA

La visualisation de données de grande dimension

Deux ou trois dimensions données plus facilement visualisées en mode découverte. Un des ensembles de données de grande dimension ne peuvent pas être représentation graphique, mais nous pouvons le mettre par une méthode de visualisation de données en deux dimensions ou en trois dimensions pour la réduction de dimensionnalité. Fisher1936 50 Données échantillon (données Iris): Setosa, Virginica, versicolor. Est une mesure de variables explicatives pétales (pétales) et sépales (sépales) longueur et la largeur, la réponse est une sorte de fleurs. Iris ensemble de données est souvent utilisé pour tester le modèle de classification, scikit-learn est aussi. Permettent de définir les données de l'iris vers le bas pour faciliter la visualisation des données en deux dimensions:

% En ligne Matplotlib

matplotlib.pyplot importation comme plt

de PCA d'importation sklearn.decomposition

de sklearn.datasets load_iris d'importation

Tout d'abord, nous importons l'ensemble de données de l'iris et estimateur PCA. Le nombre de paramètres à base de super-PCA en tant que composant principal, et l'autre comme l'estimateur, la matrice de données de retour de l'APC avec la réduction de la dimension fit_transform ():

data = load_iris ()

y = data.target

X = data.data

pca = PCA (n_components = 2)

reduced_X = pca.fit_transform (X)

Enfin, nous avons mis les graphismes dessinés:

red_x, red_y = ,

blue_x, blue_y = ,

green_x, green_y = ,

for i in range (len (reduced_X)):

si y  == 0:

red_x.append (reduced_X )

red_y.append (reduced_X )

Elif y  == 1:

blue_x.append (reduced_X )

blue_y.append (reduced_X )

autre:

green_x.append (reduced_X )

green_y.append (reduced_X )

plt.scatter (red_x, red_y, c = 'r', marqueur = 'x')

plt.scatter (blue_x, blue_y, c = 'b', marqueur = 'D')

plt.scatter (green_x, green_y, c = 'g', marqueur = '')

plt.show ()

Réduction des données dimensionnelles comme représenté sur la Fig. Chaque jeu de données avec trois classes différentes de symboles. A partir de ces données, la figure à deux dimensions, il est clair qu'il existe une classe de chevauchement avec les deux autres classes sont complètement séparées. Ce résultat peut nous aider à choisir un modèle de classification.

reconnaissance faciale

Maintenant, laissez-la reconnaissance faciale de l'utilisation PCA pour résoudre un problème. reconnaissance faciale est une tâche de classification supervisée pour des photographies reconnaissent quelqu'un. Dans cet exemple, nous utilisons le AT & T Notre base de données Cambridge Laboratories of Faces ensemble de données ( les données chaque jeu contient 40 individuels 10 photos personne. Les photos ont été prises dans différentes conditions d'éclairage, chaque photo look différent. Photographie en noir et blanc d'une dimension de 92 x 112 pixels. Bien que ces images ne sont pas grandes, mais l'agencement selon l'intensité de pixel pour chaque vecteur de caractéristique d'image a (92 x 112 =) 10304 dimension. Ces données de grande dimension formation peut prendre plusieurs échantillons afin d'éviter surajustement. Et nous taille de l'échantillon est pas grande, tout ce que nous calculons quelques-uns des principaux ingrédients utilisés PCA pour représenter ces images.

Nous pouvons mettre la force des photos de pixels de la matrice dans un vecteur, tous les vecteurs de formation des photos de construire une matrice. Chaque image est une combinaison linéaire des composantes principales de l'ensemble de données. Dans la théorie de la reconnaissance des visages, ce composant principal appelé Eigenfaces (eigenfaces). Eigenfaces peuvent être considérés comme faisant partie de la normalisation du visage. Chaque ensemble de données de visage peut être générée par une combinaison d'un visage sortie standard ou qui est la plus importante approximation d'une combinaison linéaire des eigenfaces.

de os à pied d'importation, chemin

importer numpy comme np

Mahotas importation comme mh

de train_test_split import sklearn.cross_validation

de cross_val_score import sklearn.cross_validation

de l'échelle des importations sklearn.preprocessing

de PCA d'importation sklearn.decomposition

de régression logistique d'importation sklearn.linear_model

de sklearn.metrics classification_report d'importation

X =

y =

Let photos de mise en tableau numpy, puis les convertir en matrice pixel vecteur:

pour chemin_rép, dir_names, file_names à pied ( 'C: / Users / EHL / Desktop / premier blog / att_faces /'):

#walk fonction () est le chemin absolu et le stockage de données, tout en faisant attention à la direction de la barre oblique.

pour fn file_names:

si fn == 'pgm':

IMAGE_FILENAME = path.join (dir_path, fn)

X.append (échelle (mh.imread (IMAGE_FILENAME, as_grey = True) .reshape (10304) .astype ( 'float32')))

y.append (dir_path)

X = np.array (X)

Nous avons ensuite recoupées avec la mise en place de formation et de test, avec l'ensemble de la formation sur PCA:

X_train, X_test, y_train, y_test = train_test_split (X, y)

pca = PCA (n_components = 150)

Nous mettons tous les échantillons jusqu'à 150 dimensions, et puis la formation d'un classificateur de régression logistique. Ensemble de données comprend 40 classes, scikit-learn politique sous-jacente automatiquement créé par l'un par rapport à l'ensemble classificateur binaire:

X_train_reduced = pca.fit_transform (X_train)

X_test_reduced = pca.transform (X_test)

print ( 'la dimension originale des données de formation est: {}'. Format (X_train.shape))

imprimer ( 'réduction de la dimension PCA après l'ensemble des données de formation est: {}'. Format (X_train_reduced.shape))

classificateur = régression logistique ()

exactitudes = cross_val_score (classificateur, X_train_reduced, y_train)

Dimensions de données du jeu de la formation d'origine sont les suivants: (300, 10304) après que les données de jeu de formation à la réduction de la dimension PCA: (300, 150)

Enfin, nous utilisons l'ensemble validation croisée et un test pour évaluer la performance du classificateur. classificateur indice d'évaluation complète moyenne (score F1) est 0,88, mais besoin de passer plus de temps de formation dans l'application d'exemple plus de formation peut être plus lente.

print ( 'précision validation croisée est: {} \ n {}. (Format np.mean (exactitudes), exactitudes))

classifier.fit (X_train_reduced, y_train)

prédictions = classifier.predict (X_test_reduced)

print (classification_report (y_test, prévisions))

Les résultats finaux:

résumé

Cet article décrit le problème de la réduction de la PCA dimensionnalité. données de grande dimension ne peuvent pas être facilement visible. Estimateur formation des ensembles de données de grande dimension, les dimensions aussi une catastrophe possible. Soulager ces problèmes par l'analyse en composantes principales, les variables pertinentes peuvent expliquer les ensembles de données de grande dimension en cartographiant les données dans un sous-espace de faible dimension, la réduction de dimensionnalité linéairement indépendante dans un ensemble de données de faible dimension. Enfin, avec l'expansion de l'APC à quatre dimensions des iris établies en données visuelles en deux dimensions, PCA et utilisé dans un système de reconnaissance faciale.

« Dépêchez-vous, frère », a déclaré les nouveaux membres anciens line-up gouvernement laissant les trois d'entre eux, ainsi que d'un nouveau membre de l'équipe féminine
Précédent
soleil blessure de Liu briller, maquillage complet et le plus souvent pas la même chose vraiment, vraiment prétendre être le vrai visage du nez
Prochain
YOLO apprentissage en profondeur compréhension approfondie de la méthode de détection de cible
Nous ne pouvons pas accepter! lettre Micro enfin conscience, le nombre de plate-forme publique sur la ligne fonctionnalités éblouissantes tranquillement, les utilisateurs Hi
Sur Xu Haiqiao « ma fille à la maison », a donné un bouquet de fleurs Wu Xin, Wu papa avait l'air très heureux sourire
Nanjing délinquants Hebei à cacher, tromper le public « Jiaotusanku » encore arrêté
mise à jour complète de la deuxième session de la foire de l'industrie du football, aider les praticiens à explorer 800 milliards d'espace sur le marché
Dans l'ère électrique nous avons besoin d'un Godzilla!
lourds combats: algorithmes de classification pratique et comment faire bon usage des outils Python
voiture concept Kia 21 écrans de téléphone grand écran dans le contrôle
mère Jacky Heung se vanter Hayden dans le programme, le père Guo a également dit six mots au piétaille, très intime
France pour promouvoir l'inscription « baguette », le riz gluant a plaidé
Nouveaux premier match de basket-ball masculine chinoise derrière la victoire, l'équipe nationale de basket-ball fonctionner un nouveau cycle d'affaires atteindra de nouveaux sommets
SanDisk forte U disque Publication: Vitesse d'écriture jusqu'à 380MB / SSD comparable de!