ACP : Analyse en Composantes Principales avec pyton
Introduction :
L’analyse en composantes principales (ACP),ou principal component analysis (PCA) en anglais, permet
d’analyser et de visualiser un jeu de données contenant des individus décrits par plusieurs variables
quantitatives.
C’est une méthode statistique qui permet d’explorer des données dites multivariées (données avec
plusieurs variables). Chaque variable pourrait être considérée comme une dimension différente. Si vous
avez plus de 3 variables dans votre jeu de données, il pourrait être très difficile de visualiser les données
dans une “hyper-espace” multidimensionnelle.
L’analyse en composantes principales est utilisée pour extraire et visualiser les informations importantes
contenues dans une table de données multivariées. L’ACP synthétise cette information en seulement
quelques nouvelles variables appelées composantes principales. Ces nouvelles variables correspondent
à une combinaison linéaire des variables originels. Le nombre de composantes principales est inférieur ou
égal au nombre de variables d’origine.
En d’autres termes, l’ACP réduit les dimensions d’une donnée multivariée à deux ou trois composantes
principales, qui peuvent être visualisées graphiquement, en perdant le moins possible d’information.
Le principe de l’ACP est de projeter les données sur des axes principales en cherchant à minimiser la
distance entre les points du nuage et leurs projetions. De cette façon on réduit la dimension de notre
dataset tout en préservant au maximum la variance de nos données.
L’information contenue dans le jeu de données correspondera à la variance ou l’inertie totale qu’il
contient. L’objectif de l’ACP est d’identifier les directions (i.e., axes principaux ou composantes
principales) le long desquelles la variation des données est maximale.
ACP : la pratique
Pour faire de l’ACP, nous allons utiliser le tableau de données décathlon qui contient les performances
réalisées par des athlètes aux compétitions olympiques de décathlon.
Vous pouvez charger le jeu de données depuis l'URL suivante
: [Link]
1. Présentation Des Données :
Le tableau de données contient 41 lignes et 13 colonnes.
Les colonnes 1 à 12 sont des variables continues: les dix premières colonnes correspondent aux
performances des athlètes pour les dix épreuves du décathlon et les colonnes 11 et 12 correspondent
respectivement au rang et au nombre de points obtenus. La dernière colonne est une variable qualitative
correspondant au nom de la compétition.
Nous allons faire une ACP des dix variables décrivant les performances à chacune des épreuves du
décathlon (100 mètres, saut en longueur, lancer de poids, saut en hauteur, 400 mètres, 110 mètres
haies, lancer de disque, saut à la perche, javelot, et 1500 mètres).
2. Objectifs De L’étude :
L'ACP permet de décrire un jeu de données, de le résumer, d'en réduire la dimensionnalité.
L'ACP réalisée sur les individus du tableau de données répond à différentes questions :
a) Etude des individus (i.e. des athlètes) : deux athlètes sont proches s'ils ont des résultats
similaires. On s'intéresse à la variabilité entre individus. Y a-t-il des similarités entre les
individus pour toutes les variables ? Peut-on établir des profils d'athlètes ? Peut-on opposer un
groupe d'individus à un autre ?
b) Etude des variables (i.e. des performances) : on étudie les liaisons linéaires entre les
variables. Les objectifs sont de résumer la matrice des corrélations et de chercher des
variables synthétiques: peut-on résumer les performances des athlètes par un petit nombre de
variables ?
c) Lien entre les deux études : peut-on caractériser des groupes d'individus par des variables ?
3. La Démarche :
a- Importer les bibliothèques nécessaires : Pandas et Numpy pour la manipulation des
données, Seaborn et Matplotlib pour la visualisation de ces dernières et finalement le
module Sikit-learn pour l’algorithme ACP en question.
b- Charger le jeu de données puis afficher sa dimension, le nombre d’observation (individus),
les nombres des variables et enfin les 5 premières lignes
c- Préparation des données :
On étudie les profils d'ahtlètes uniquement en fonction de leur performance. Les variables actives ne
seront donc que celles qui concernent les dix épreuves du décathlon.
Les autres variables (« Rank », « Points » et « Competition ») n'appartiennent pas aux profils d'athlètes
et utilisent une information déjà donnée par les autres variables (dans le cas de « Rank »et « Points »)
mais il est intéressant de les confronter aux composantes principales. Nous les utiliserons comme
variables illustratives. Pour cela :
c-1) Eliminer les colonnes (les variables) que nous n'utiliserons pas.
Dans ce tableau de données, les variables ne sont pas mesurées dans les mêmes unités. On doit les
réduire de façon à donner la même influence à chacune, Pour cela :
c-2) Nous devons explicitement centrer et réduire les variables pour réaliser une ACP normée avec l’algorithme
PCA. Nous utilisons la classe StandardScaler pour ce faire.
Nous instancions l’objet et nous l’appliquons sur la matrice X. Nous obtenons une matrice Z.
est la moyenne de la variable xj et son écart-type.
c-3) Vérifions, par acquit de conscience, les propriétés du nouvel ensemble de données. Les moyennes sont
maintenant nulles (aux erreurs de troncature près). Et les écarts-type unitaires.
d- Nous sommes maintenant prés pour lancer l’ACP de « scikit-learn »:
d-1) Calculer et afficher les composantes principales.
Remarque :
Le nombre de composantes (K) est par défaut égal au nombre de variables (K = p).
La fonction fit_transform() renvoie en sortie les coordonnées factorielles Fik que nous collectons
d-2) Calculer la variance totale exprimée par les K composantes principales
Note :
L'attribut explained_variance_ratio_ de la classe PCA() renvoie un tableau numpy unidimensionnel qui
contient les valeurs du pourcentage de variance expliqué par chacun des composants sélectionnés.
La première composante capte à elle seule environ 32,71% de la variabilité dans l'ensemble de données et la
deuxième composante capte environ 17,37% de la variabilité dans l'ensemble de données, etc.
d-3) Calculer la somme cumulative des totales variances
d-3) Visualiser le graphique Variances _Composantes.
e- Appliquer PCA en définissant 2 composantes
f- Créez un nuage de points 2d des données en utilisant les valeurs des deux composants
principales.
g- Créer un nuage de points 3D des données en utilisant les valeurs des trois composants
principaux.
4. Contribution de chaque variable aux composantes principales
Pour mieux comprendre ce que capturent ces composantes principales, nous pouvons utiliser acp.components_,
qui nous donne les coordonnées des composantes principales dans l'espace initial (celui à 10 variables). Nous
allons afficher, pour chacune des 10 performances, un point dont l'abscisse sera sa contribution à la première
PC et l'ordonnée sa contribution à la deuxième PC
Résumé
L'ACP nous a permis de :
représenter les données en deux dimensions ;
établir des profils des athlètes ;
mettre à jour des corrélations entre des variables.