logo

Analyse en composantes principales (ACP)

À mesure que le nombre de caractéristiques ou de dimensions dans un ensemble de données augmente, la quantité de données requise pour obtenir un résultat statistiquement significatif augmente de façon exponentielle. Cela peut entraîner des problèmes tels qu'un surajustement, une augmentation du temps de calcul et une précision réduite des modèles d'apprentissage automatique. C'est ce qu'on appelle la malédiction des problèmes de dimensionnalité qui surviennent lors du travail avec des données de grande dimension.

À mesure que le nombre de dimensions augmente, le nombre de combinaisons possibles de caractéristiques augmente de façon exponentielle, ce qui rend difficile, sur le plan informatique, l'obtention d'un échantillon représentatif des données et il devient coûteux d'effectuer des tâches telles que le regroupement ou la classification, car cela devient coûteux. De plus, certains apprentissage automatique les algorithmes peuvent être sensibles au nombre de dimensions, nécessitant davantage de données pour atteindre le même niveau de précision que les données de dimension inférieure.

Pour aborder le malédiction de la dimensionnalité , Ingénierie des fonctionnalités des techniques sont utilisées qui incluent la sélection de fonctionnalités et l'extraction de fonctionnalités. Réduction de dimensionnalité est un type de technique d'extraction de fonctionnalités qui vise à réduire le nombre de fonctionnalités d'entrée tout en conservant autant d'informations d'origine que possible.



Dans cet article, nous aborderons l'une des techniques de réduction de dimensionnalité les plus populaires, à savoir l'analyse en composantes principales (ACP).

Qu'est-ce que l'analyse en composantes principales (ACP) ?

Analyse des composants principaux (PCA) a été introduite par le mathématicien Karl Pearson en 1901 . Cela fonctionne à condition que même si les données d'un espace de dimension supérieure sont mappées aux données d'un espace de dimension inférieure, la variance des données dans l'espace de dimension inférieure doit être maximale.

  • Analyse en composantes principales (ACP) est une procédure statistique qui utilise une transformation orthogonale qui convertit un ensemble de variables corrélées en un ensemble de variables non corrélées. L'ACP est l'outil le plus largement utilisé dans l'analyse exploratoire des données et dans l'apprentissage automatique pour les modèles prédictifs. De plus,
  • L'analyse en composantes principales (ACP) est une apprentissage non supervisé technique algorithmique utilisée pour examiner les interrelations entre un ensemble de variables. Elle est également connue sous le nom d’analyse factorielle générale dans laquelle la régression détermine une ligne de meilleur ajustement.
  • L'objectif principal de l'analyse en composantes principales (ACP) est de réduire la dimensionnalité d'un ensemble de données tout en préservant les modèles ou relations les plus importants entre les variables sans aucune connaissance préalable des variables cibles.

L'analyse en composantes principales (ACP) est utilisée pour réduire la dimensionnalité d'un ensemble de données en trouvant un nouvel ensemble de variables, plus petit que l'ensemble de variables d'origine, conservant la plupart des informations de l'échantillon et utile pour l'analyse. régression et classification de données.

Analyse des composants principaux

  1. L'analyse en composantes principales (ACP) est une technique de réduction de dimensionnalité qui identifie un ensemble d'axes orthogonaux, appelés composantes principales, qui capturent la variance maximale des données. Les composants principaux sont des combinaisons linéaires des variables d'origine de l'ensemble de données et sont classés par ordre décroissant d'importance. La variance totale capturée par toutes les composantes principales est égale à la variance totale de l'ensemble de données d'origine.
  2. La première composante principale capture la plus grande variation dans les données, mais la deuxième composante principale capture le maximum variance c'est orthogonal au premier composant principal, et ainsi de suite.
  3. L'analyse en composantes principales peut être utilisée à diverses fins, notamment la visualisation des données, la sélection de fonctionnalités et la compression des données. En visualisation de données, la PCA peut être utilisée pour tracer des données de grande dimension en deux ou trois dimensions, ce qui facilite leur interprétation. Lors de la sélection de fonctionnalités, la PCA peut être utilisée pour identifier les variables les plus importantes dans un ensemble de données. En compression de données, la PCA peut être utilisée pour réduire la taille d'un ensemble de données sans perdre d'informations importantes.
  4. Dans l'analyse en composantes principales, on suppose que les informations sont contenues dans la variance des caractéristiques, c'est-à-dire que plus la variation d'une caractéristique est élevée, plus ces caractéristiques contiennent d'informations.

Dans l’ensemble, la PCA est un outil puissant pour l’analyse des données et peut aider à simplifier des ensembles de données complexes, les rendant plus faciles à comprendre et à utiliser.

Explication étape par étape de l'ACP (analyse en composantes principales)

Étape 1 : normalisation

Premièrement, nous devons standardiser notre ensemble de données pour garantir que chaque variable a une moyenne de 0 et un écart type de 1.

Z = frac{X-mu}{sigma}

Ici,

  • muest la moyenne des caractéristiques indépendantes mu = left { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaest le écart-type de fonctionnalités indépendantes sigma = left { sigma_1, sigma_2, cdots, sigma_m 
ight }

Étape 2 : Calcul de la matrice de covariance

Covariance mesure la force de la variabilité conjointe entre deux ou plusieurs variables, indiquant dans quelle mesure elles changent les unes par rapport aux autres. Pour trouver la covariance, nous pouvons utiliser la formule :

cov(x1,x2) = frac{sum_{i=1}^{n}(x1_i-ar{x1})(x2_i-ar{x2})}{n-1}

commande Linux pour zip

La valeur de la covariance peut être positive, négative ou nulle.

  • Positif : à mesure que x1 augmente, x2 augmente également.
  • Négatif : à mesure que x1 augmente, x2 diminue également.
  • Zéros : aucune relation directe

Étape 3 : Calculer les valeurs propres et les vecteurs propres de la matrice de covariance pour identifier les composantes principales

Soit A une matrice carrée nXn et X un vecteur non nul pour lequel

AX = lambda X

pour certaines valeurs scalaires lambda. alors lambdaest connu sous le nom de valeur propre de la matrice A et X est connu sous le nom de vecteur propre de la matrice A pour la valeur propre correspondante.

On peut aussi l'écrire sous la forme :

arbre binaire en Java

egin{aligned} AX-lambda X &= 0  (A-lambda I)X &= 0 end{aligned}

où je suis la matrice identité de même forme que la matrice A. Et les conditions ci-dessus ne seront vraies que si (UNE - lambda I)sera non inversible (c'est-à-dire une matrice singulière). Cela signifie,

|A - lambda I| = 0

À partir de l’équation ci-dessus, nous pouvons trouver les valeurs propres lambda, et donc le vecteur propre correspondant peut être trouvé en utilisant l’équation AX = lambda X.

Comment fonctionne l’analyse en composantes principales (ACP) ?

Par conséquent, l’ACP utilise une transformation linéaire basée sur la préservation de la plus grande variance dans les données en utilisant le moins de dimensions. Cela implique les étapes suivantes :

Python3

import> pandas as pd> import> numpy as np> # Here we are using inbuilt dataset of scikit learn> from> sklearn.datasets>import> load_breast_cancer> # instantiating> cancer>=> load_breast_cancer(as_frame>=>True>)> # creating dataframe> df>=> cancer.frame> # checking shape> print>(>'Original Dataframe shape :'>,df.shape)> # Input features> X>=> df[cancer[>'feature_names'>]]> print>(>'Inputs Dataframe shape :'>, X.shape)>
>
>

Sortir :

Original Dataframe shape : (569, 31) Inputs Dataframe shape : (569, 30)>

Nous allons maintenant appliquer la première étape qui consiste à standardiser les données et pour cela, nous devrons d'abord calculer la moyenne et l'écart type de chaque entité dans l'espace des fonctionnalités.

Python3

# Mean> X_mean>=> X.mean()> # Standard deviation> X_std>=> X.std()> # Standardization> Z>=> (X>-> X_mean)>/> X_std>
>
>

Le covariance La matrice nous aide à visualiser la force de la dépendance de deux fonctionnalités l'une par rapport à l'autre dans l'espace des fonctionnalités.

Python3

# covariance> c>=> Z.cov()> # Plot the covariance matrix> import> matplotlib.pyplot as plt> import> seaborn as sns> sns.heatmap(c)> plt.show()>
>
>

Sortir :

Nous allons maintenant calculer le vecteurs propres et valeurs propres pour notre espace de fonctionnalités qui sont très utiles pour identifier les principaux composants de notre espace de fonctionnalités.

Python3

eigenvalues, eigenvectors>=> np.linalg.eig(c)> print>(>'Eigen values: '>, eigenvalues)> print>(>'Eigen values Shape:'>, eigenvalues.shape)> print>(>'Eigen Vector Shape:'>, eigenvectors.shape)>
>
>

Sortir :

Eigen values:  [1.32816077e+01 5.69135461e+00 2.81794898e+00 1.98064047e+00  1.64873055e+00 1.20735661e+00 6.75220114e-01 4.76617140e-01  4.16894812e-01 3.50693457e-01 2.93915696e-01 2.61161370e-01  2.41357496e-01 1.57009724e-01 9.41349650e-02 7.98628010e-02  5.93990378e-02 5.26187835e-02 4.94775918e-02 1.33044823e-04  7.48803097e-04 1.58933787e-03 6.90046388e-03 8.17763986e-03  1.54812714e-02 1.80550070e-02 2.43408378e-02 2.74394025e-02  3.11594025e-02 2.99728939e-02] Eigen values Shape: (30,) Eigen Vector Shape: (30, 30)>

Triez les valeurs propres par ordre décroissant et triez les vecteurs propres correspondants en conséquence.

Python3

# Index the eigenvalues in descending order> idx>=> eigenvalues.argsort()[::>->1>]> # Sort the eigenvalues in descending order> eigenvalues>=> eigenvalues[idx]> # sort the corresponding eigenvectors accordingly> eigenvectors>=> eigenvectors[:,idx]>
>
>

La variance expliquée est le terme qui nous donne une idée du montant de la variance totale qui a été conservée en sélectionnant les composantes principales au lieu de l'espace des fonctionnalités d'origine.

Python3

explained_var>=> np.cumsum(eigenvalues)>/> np.>sum>(eigenvalues)> explained_var>
>
>

Sortir :

array([0.44272026, 0.63243208, 0.72636371, 0.79238506, 0.84734274,  0.88758796, 0.9100953 , 0.92598254, 0.93987903, 0.95156881,  0.961366 , 0.97007138, 0.97811663, 0.98335029, 0.98648812,  0.98915022, 0.99113018, 0.99288414, 0.9945334 , 0.99557204,  0.99657114, 0.99748579, 0.99829715, 0.99889898, 0.99941502,  0.99968761, 0.99991763, 0.99997061, 0.99999557, 1. ])>

Déterminer le nombre de composants principaux

Ici, nous pouvons soit considérer le nombre de composantes principales de n'importe quelle valeur de notre choix, soit en limitant la variance expliquée. Ici, je considère une variance expliquée supérieure à 50 %. Vérifions combien de composants principaux entrent en jeu.

Python3

n_components>=> np.argmax(explained_var>>=> 0.50>)>+> 1> n_components>
>
>

Sortir :

2>

Projeter les données sur les composants principaux sélectionnés

  • Trouver la matrice de projection, c'est une matrice de vecteurs propres correspondant aux plus grandes valeurs propres de la matrice de covariance des données. il projette l'ensemble de données de grande dimension sur un sous-espace de dimension inférieure
  • Les vecteurs propres de la matrice de covariance des données sont appelés axes principaux des données, et la projection des instances de données sur ces axes principaux est appelée composantes principales.

Python3

# PCA component or unit matrix> u>=> eigenvectors[:,:n_components]> pca_component>=> pd.DataFrame(u,> >index>=> cancer[>'feature_names'>],> >columns>=> [>'PC1'>,>'PC2'>]> >)> # plotting heatmap> plt.figure(figsize>=>(>5>,>7>))> sns.heatmap(pca_component)> plt.title(>'PCA Component'>)> plt.show()>
>
>

Sortir :

  • Ensuite, nous projetons notre ensemble de données en utilisant la formule :

egin{aligned} Proj_{P_i}(u) &= frac{P_icdot u}u  &=P_icdot u end{aligned}

  • La réduction de dimensionnalité est alors obtenue en conservant uniquement les axes (dimensions) qui représentent la majeure partie de la variance et en supprimant tous les autres.

Trouver une projection dans PCA

Python3

# Matrix multiplication or dot Product> Z_pca>=> Z @ pca_component> # Rename the columns name> Z_pca.rename({>'PC1'>:>'PCA1'>,>'PC2'>:>'PCA2'>}, axis>=>1>, inplace>=>True>)> # Print the Pricipal Component values> print>(Z_pca)>
>
>

Sortir :

 PCA1 PCA2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Les vecteurs propres de la matrice de covariance des données sont appelés axes principaux des données, et la projection des instances de données sur ces axes principaux est appelée composantes principales. La réduction de dimensionnalité est alors obtenue en conservant uniquement les axes (dimensions) qui représentent la majeure partie de la variance et en supprimant tous les autres.

PCA utilisant Sklearn

Il existe différentes bibliothèques dans lesquelles tout le processus d'analyse des composantes principales a été automatisé en l'implémentant dans un package en tant que fonction et il suffit de transmettre le nombre de composantes principales que nous souhaitons avoir. Sklearn est l'une de ces bibliothèques qui peut être utilisée pour la PCA, comme indiqué ci-dessous.

Python3

# Importing PCA> from> sklearn.decomposition>import> PCA> # Let's say, components = 2> pca>=> PCA(n_components>=>2>)> pca.fit(Z)> x_pca>=> pca.transform(Z)> # Create the dataframe> df_pca1>=> pd.DataFrame(x_pca,> >columns>=>[>'PC{}'>.> >format>(i>+>1>)> >for> i>in> range>(n_components)])> print>(df_pca1)>
>
>

Sortir:

 PC1 PC2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Nous pouvons faire correspondre le résultat Z_pca ci-dessus car il s'agit exactement des mêmes valeurs.

Python3

# giving a larger plot> plt.figure(figsize>=>(>8>,>6>))> plt.scatter(x_pca[:,>0>], x_pca[:,>1>],> >c>=>cancer[>'target'>],> >cmap>=>'plasma'>)> # labeling x and y axes> plt.xlabel(>'First Principal Component'>)> plt.ylabel(>'Second Principal Component'>)> plt.show()>
>
>

Sortir:

Python3

# components> pca.components_>
>
>

Sortir :

array([[ 0.21890244, 0.10372458, 0.22753729, 0.22099499, 0.14258969,  0.23928535, 0.25840048, 0.26085376, 0.13816696, 0.06436335,  0.20597878, 0.01742803, 0.21132592, 0.20286964, 0.01453145,  0.17039345, 0.15358979, 0.1834174 , 0.04249842, 0.10256832,  0.22799663, 0.10446933, 0.23663968, 0.22487053, 0.12795256,  0.21009588, 0.22876753, 0.25088597, 0.12290456, 0.13178394],  [-0.23385713, -0.05970609, -0.21518136, -0.23107671, 0.18611302,  0.15189161, 0.06016536, -0.0347675 , 0.19034877, 0.36657547,  -0.10555215, 0.08997968, -0.08945723, -0.15229263, 0.20443045,  0.2327159 , 0.19720728, 0.13032156, 0.183848 , 0.28009203,  -0.21986638, -0.0454673 , -0.19987843, -0.21935186, 0.17230435,  0.14359317, 0.09796411, -0.00825724, 0.14188335, 0.27533947]])>

Avantages de l'analyse en composantes principales

  1. Réduction de dimensionnalité : L'analyse en composantes principales est une technique populaire utilisée pour réduction de dimensionnalité , qui est le processus de réduction du nombre de variables dans un ensemble de données. En réduisant le nombre de variables, la PCA simplifie l'analyse des données, améliore les performances et facilite la visualisation des données.
  2. Sélection de fonctionnalité : L'analyse en composantes principales peut être utilisée pour sélection de fonctionnalité , qui est le processus de sélection des variables les plus importantes dans un ensemble de données. Ceci est utile dans l’apprentissage automatique, où le nombre de variables peut être très important et où il est difficile d’identifier les variables les plus importantes.
  3. Visualisation de données : L'analyse en composantes principales peut être utilisée pour Multicolinéarité : L'analyse en composantes principales peut être utilisée pour traiter multicolinéarité , ce qui est un problème courant dans une analyse de régression où deux ou plusieurs variables indépendantes sont fortement corrélées. L'ACP peut aider à identifier la structure sous-jacente des données et à créer de nouvelles variables non corrélées qui peuvent être utilisées dans le modèle de régression.
  4. Réduction de bruit : L'analyse en composantes principales peut être utilisée pour réduire le bruit dans les données. En supprimant les composantes principales à faible variance, censées représenter du bruit, l'analyse en composantes principales peut améliorer le rapport signal/bruit et faciliter l'identification de la structure sous-jacente des données.
  5. Compression des données : L'analyse en composantes principales peut être utilisée pour la compression des données. En représentant les données à l'aide d'un plus petit nombre de composants principaux, qui capturent la plupart des variations des données, la PCA peut réduire les besoins de stockage et accélérer le traitement.
  6. Détection des valeurs aberrantes : L'analyse en composantes principales peut être utilisée pour la détection des valeurs aberrantes. Valeurs aberrantes sont des points de données qui sont significativement différents des autres points de données de l'ensemble de données. L'analyse en composantes principales peut identifier ces valeurs aberrantes en recherchant des points de données éloignés des autres points de l'espace des composantes principales.

Inconvénients de l’analyse en composantes principales

  1. Interprétation des principales composantes : Les composantes principales créées par l'analyse en composantes principales sont des combinaisons linéaires des variables d'origine, et il est souvent difficile de les interpréter en termes de variables d'origine. Cela peut rendre difficile l’explication des résultats de l’ACP à d’autres.
  2. Mise à l'échelle des données : L'analyse en composantes principales est sensible à l'échelle des données. Si les données ne sont pas correctement mises à l'échelle, la PCA risque de ne pas fonctionner correctement. Par conséquent, il est important de mettre à l’échelle les données avant d’appliquer l’analyse en composantes principales.
  3. Perte d'informations : L'analyse en composantes principales peut entraîner une perte d'informations. Même si l’analyse en composantes principales réduit le nombre de variables, elle peut également entraîner une perte d’informations. Le degré de perte d'informations dépend du nombre de composants principaux sélectionnés. Il est donc important de sélectionner avec soin le nombre de composants principaux à conserver.
  4. Relations non linéaires : L'analyse en composantes principales suppose que les relations entre les variables sont linéaires. Cependant, s'il existe des relations non linéaires entre les variables, l'analyse en composantes principales peut ne pas fonctionner correctement.
  5. Complexité informatique : Le calcul de l'analyse en composantes principales peut être coûteux en termes de calcul pour les grands ensembles de données. Cela est particulièrement vrai si le nombre de variables dans l'ensemble de données est important.
  6. Surapprentissage : L'Analyse en Composantes Principales peut parfois aboutir à surapprentissage , c'est-à-dire lorsque le modèle s'adapte trop bien aux données d'entraînement et fonctionne mal sur les nouvelles données. Cela peut se produire si trop de composants principaux sont utilisés ou si le modèle est entraîné sur un petit ensemble de données.

Foire aux questions (FAQ)

1. Qu’est-ce que l’analyse en composantes principales (ACP) ?

La PCA est une technique de réduction de dimensionnalité utilisée en statistiques et en apprentissage automatique pour transformer des données de grande dimension en une représentation de dimension inférieure, préservant ainsi les informations les plus importantes.

2. Comment fonctionne une PCA ?

Les composants principaux sont des combinaisons linéaires des caractéristiques originales que PCA trouve et utilise pour capturer le plus de variance dans les données. Ces composantes orthogonales sont classées selon l'ampleur de la variance qu'elles expliquent.

a le prochain java

3. Quand l’ACP doit-elle être appliquée ?

L'utilisation de la PCA est avantageuse lorsque vous travaillez avec des ensembles de données multicolinéaires ou de grande dimension. L'extraction de fonctionnalités, la réduction du bruit et le prétraitement des données en sont des utilisations importantes.

4. Comment les composantes principales sont-elles interprétées ?

Les nouveaux axes sont représentés dans l'espace des fonctionnalités par chaque composant principal. Un indicateur de l’importance d’une composante dans la capture de la variabilité des données est sa capacité à expliquer une variance plus importante.

5. Quelle est la signification des principaux composants ?

Les composantes principales représentent les directions dans lesquelles les données varient le plus. Les premiers composants capturent généralement la majorité de la variance des données, permettant une représentation plus concise.