Analyse des Composantes Principales en Python
Analyse des Composantes Principales en Python
L’analyse en composantes principales (ACP) est une technique exploratoire très populaire.
Selon les points de vue, on peut la considérer : comme une technique factorielle où l’on essaie
importantes représentées par des variables synthétiques appelées composantes ; comme une
technique de visualisation où l’on essaie de préserver les proximités entre les individus dans un
Le succès de l’ACP repose en très grande partie sur la richesse des représentations graphiques
qu’elle propose. Elle sont accompagnées d’outils d’aide à l’interprétation qui permettent de saisir
la teneur des composantes (facteurs, axes factoriels) mises en évidence. Les très nombreux
exemples illustratifs que l’on trouve ici ou là soulignent ses propriétés descriptives sur des jeux
de données de taille réduite, elles permettent de mettre en relation les résultats observés avec
Mais le champ d’application de l’ACP est plus large. Elle joue un rôle important comme outil de
défrichage des grandes bases de données, tant en nombre d’observations que de variables. En
réduisant la dimensionnalité avec une perte d’information contrôlée, elle peut constituer une
solution de prétraitement privilégiée avant l’utilisation des techniques de machine learning. Son
9
ACP 1
Lancia Beta 1297 82 429 169 1080 160
Peugeot 504 1796 79 449 169 1160 154
Renault 16 TL 1565 55 424 163 1010 140
Renault 30 2664 128 452 173 1320 180
Toyota Corolla 1166 55 399 157 815 140
Alfetta 1.66 1570 109 428 162 1060 175
Princess 1800 1798 82 445 172 1160 158
Datsun 200L 1998 115 469 169 1370 160
Taunus 2000 1993 98 438 170 1080 167
Rancho 1442 80 431 166 1129 144
Mazda 9295 1769 83 440 165 1095 165
Opel Rekord 1979 100 459 173 1120 173
Lada 1300 1294 68 404 161 955 140
Les variables sont : CYL (cylindrée en cm3), PUISS (puissance en chevaux din), LONG (longueur
en cm), LARG (largeur en cm), POIDS (poids en kg), VMAX (vitesse maximale en km/h).
Dans ce chapitre, nous notons 𝑋 = (𝑥𝑖𝑗 ) cette matrice composée des observations (i = 1, …, n)
et variables (j = 1, …, p) actives, dans le sens où elles vont participer aux calculs lors de la
Dans notre base, (𝑥12 = 79) correspond à la puissance (PUISS) de l’Alfasud TI.
Les questions qui viennent naturellement à l’esprit à la lecture de ce type de tableau sont :
− Quels sont les véhicules qui se ressemblent ? Qui s’opposent ? Sur quelles caractéristiques
− Quelles sont les relations entre les variables. A priori, surtout pour des véhicules de cette
époque où il n’y avait pas (très rarement) de turbo, la cylindrée et la puissance sont
− Pour les férus d’automobiles, nous savons qu’elles sont subdivisées en segments (citadines,
polyvalentes, familiales, routières, …). Est-ce qu’il est possible de discerner cette typologie
éventuellement ?
individus-variables : étudier la proximité entre les individus d’une part, analyser les liaisons
11
ACP 3
1.1.2 Analyse des proximités entre individus
Contentons-nous de traiter les variables CYL et PUISS dans un premier temps. Nous pouvons
#préparer le graphique
fig, ax = [Link](figsize=(10,10))
[Link]([Link],[Link],"wo")
[Link]([1000,3000,50,140])
ax.set_xlabel("CYL")
ax.set_ylabel("PUISS")
#faire afficher
[Link]()
12
ACP 4
Dans ce repère, nous pouvons distinguer plusieurs informations très facilement :
− Les deux variables (CYL, PUISS) sont fortement liées positivement. Quand la cylindrée
− L’Opel Rekord et la (Ford) Taunus 2000 présentent des caractéristiques similaires. Ces
− La Lada 1300 et la Simca 1300 présentent des propriétés strictement identiques, raison
pour laquelle ils se superposent dans le graphique. Quand on connaît un peu leur genèse,
− Les Renault 30 et Toyota Corolla en revanche sont complètement opposés (gros moteur
Remarque : Deux variables sont liées lorsque le nuage de points associé forme une pente,
positive ou négative. Dans ces différentes configurations ci-dessous (Figure 2) : (A) correspond
à une liaison positive ; (B), (C) et (D) correspondent à une absence de liaison, quand la variable
(A) (B)
(D)
(C)
Le graphique (CYL, PUISS) ne fait que révéler des informations contenues dans les données.
Nous aurions pu faire les mêmes constations en triant le tableau selon la cylindrée, mais de
13
ACP 5
Sous Python, nous utilisons la librairie « seaborn » pour réaliser un graphique potable en une
#librairie graphique
import seaborn as sns
#pairplot
[Link](D)
synthétiques, combinaisons linéaires des variables originelles, en nombre réduit (𝒒 ≪ 𝑝), tout
15
ACP 7
[Link] Principe de l’analyse en composantes principales (1)
Pour des raisons qui seront plus faciles à formuler dans l’étude des relations entre les variables
(section 1.1.3), nous centrons et réduisons les descripteurs. Pour (Xj), la variable transformée
𝑥𝑖𝑗 − 𝑥̅𝑗
𝑧𝑖𝑗 =
𝜎𝑗
dimension réduite (𝒒 ≪ 𝑝) qui préserve au mieux les distances entre les individus ou, c’est la
même chose, qui préserve au mieux la dispersion des données. Ce nouveau repère est décrit par
axes principaux, axes factoriels). Elles sont définies par des combinaisons linéaires des variables
𝐹𝑘 = 𝑎𝑘1 𝑧1 + ⋯ + 𝑎𝑘𝑝 𝑧𝑝
L’enjeu est d’estimer les valeurs des coefficients (𝑎𝑘𝑗 ) à partir des données.
Nous noterons qu’il est possible d’exprimer les facteurs à partir des variables originelles. Un
La succession de facteurs construits par l’ACP répond au cahier des charges suivant :
lorsqu’ils y sont projetés. La variance associée indique son pouvoir explicatif, elle correspond
à une fraction de l’inertie totale. La composante est centrée c.-à-d. elle est de moyenne
nulle.
21
ACP 13
2. La seconde composante F2 procède de la même manière, mais sur l’information résiduelle,
non-expliquée par F1. Elle est orthogonale à la première. Elle vient compléter l’information
des variances des deux premières composantes indique leur pouvoir de représentation
4. Nous avons restitué toute l’information disponible lorsque le nombre de facteurs (q)
considérés est égal au nombre de variables (p) de la base. La somme des variances des
La compression est d’autant meilleure qu’un nombre (q) faible de facteurs permet de reproduire
Pour l’exemple (CYL, PUISS) centrées et réduites, nous matérialisons les deux facteurs de l’ACP
22
ACP 14
#position des véhicules dans le repère factoriel
fig, ax = [Link](figsize=(10,10))
[Link](coord[:,0],coord[:,1],"wo")
[Link]([-4,+4,-4,+4])
[Link]([-4,+4],[0,0],color='silver',linestyle='--')
[Link]([0,0],[-4,+4],color='silver',linestyle='--')
ax.set_xlabel("Comp.1 (89.83%)")
ax.set_ylabel("Comp.2 (10.17%)")
#faire afficher
[Link]()
− C’est le même graphique que le précédent (Figure 5), mais après rotation. Nous avons la
− Il est d’usage de faire apparaître les proportions d’inerties restituées sur les axes pour
situer leurs importances relatives. Ces indications sont cruciales surtout lorsque les
logiciels procèdent à une mise à l’échelle automatique de manière à ce que les min et
max soient situés aux extrémités du graphique, laissant croire à une dispersion identique
en abscisse et ordonnée.
explicitement les mêmes limites en abscisse et ordonnée. Nous constatons ainsi pour
notre exemple que la dispersion est surtout perceptible sur la première composante qui
𝑛
1 2
𝜆𝑘 = ∑ 𝐹𝑖𝑘
𝑛
𝑖=1
Où Fik est la coordonnée de l’individu n°i sur la composante Fk. Rappelons que les moyennes des
facteurs sont nulles par construction puisque les données ont été centrées, d’où cette formule
simplifiée de la variance.
25
ACP 17
Figure 7 - "Heatmap" des corrélations croisées - Données "Autos"
Nous notons que les plus fortes corrélations ont lieu entre (PUISS, VMAX), et entre (LONG,
LARG, POIDS). Nous observons également que le niveau global des corrélations est élevé.
Le « heatmap » tient (un peu) du gadget sur (p = 6) variables. Mais sur une plus forte
peut se révéler décisif pour identifier rapidement les liaisons et/ou groupes de liaisons
principales. Elle a pour objectif toujours d’élaborer une succession de facteurs. Le premier est
construit de manière à maximiser la somme des carrés des corrélations avec les variables :
𝜆1 = ∑ 𝑟𝑗2 (𝐹1 )
𝑗=1
La seconde composante (F2) répond à la même spécification, mais travaille sur la partie
résiduelle, non-expliquée par la précédente. Elle est donc orthogonale à (F1). La troisième
composante, etc.
33
ACP 25
1.2 Organisations des calculs
Nous savons maintenant ce que nous souhaitons obtenir. Nous décryptons dans cette section
comment y parvenir à partir de nos données en mettant (un peu) les mains dans le cambouis des
calculs matriciels. Comprendre les mécanismes internes nous donnera une meilleure visibilité sur
Récapitulons. A partir d’un ensemble de données dont la quantité d’information totale est
− La variable (zj) représente la variable originelle (xj) centrée (ACP non-normée) ou centrée
− Le degré de représentativité des facteurs est matérialisé par la variance expliquée (𝜆𝑘 ) ;
− Le facteur (Fk) est construit à partir de l’information résiduelle des (k-1) précédents :
− En pratique, on se contente de ne retenir que sur les (q) premiers, avec (𝑞 ≪ 𝑝), qui
pouvons ainsi négliger les (p-q) facteurs restants. Cette forme de « compression » fait
tout l’intérêt de l’ACP. Si l’on considère tous les facteurs (q = p), nous disposons de toute
− Dans l’espace factoriel défini par les (q) premières composantes, nous devons pouvoir
reconstituer de manière satisfaisante les proximités entre les individus et les liaisons
37
ACP 29
1.2.1 Calculs (1) – Diagonalisation de la matrice des corrélations
à considérer le problème de l’ACP tel qu’il est posé dans l’analyse des relations des variables avec
les facteurs (section [Link]). Si l’on s’en tient au premier facteur, on cherche à estimer le vecteur
𝑎 = (𝑎1 , … , 𝑎𝑝 ) telle que la somme des carrés des corrélations des variables avec le facteur soit
maximale.
Dans le même temps, on souhaite que le vecteur (a) soit normé : ‖𝑎‖ = 𝑎𝑇 𝑎 = 1
max 𝑎𝑇 𝑅𝑎
{ 𝑎
𝑠. 𝑐.: 𝑎𝑇 𝑎 = 1
𝐿 = 𝑎𝑇 𝑅 𝑎 − 𝜆 (𝑎𝑇 𝑎 − 1)
En calculant la dérivée partielle par rapport à (𝑎), nous obtenons deux résultats importants :
1. (𝑅 𝑎 = 𝜆 𝑎), le vecteur solution (𝑎) est le premier vecteur propre de la matrice des
Exemple de calcul sous Python. Et, de manière générale, les vecteurs et valeurs propres de la
matrice R (en ACP normée) constituent les solutions de l’ACP : les vecteurs propres sont deux à
deux orthogonaux, ils fournissent directement les coefficients (ajk) définissant les composantes
principales (Fk) ; les valeurs propres (λk) traduisent la variance restituée par les facteurs.
La librairie « Numpy » regorge de fonctions qui font notre bonheur. Dans ce qui suit, nous
affichons la matrice des corrélations pour rappel, nous la diagonalisons, nous procédons à
38
ACP 30
1.3 Pratique de l’ACP avec « fanalysis » sous Python
Dans cette section, nous déroulons sous Python une étude type d’analyse en composantes
principales sur les données « Autos ». Les thèmes abordés ne sont pas toujours traités dans cet
ordre dans la pratique de l’ACP, mais ils sont plus ou moins incontournables pour exploiter
Nous utilisons le package « fanalysis » pour Python développé par Olivier Garcia, un de mes
anciens étudiants du Master SISE (2000). Une courte description de ses fonctionnalités est
disponible sur mon blog (« Analyses factorielles sous Python avec fanalysis », juin 2018). L’outil
a une double finalité : il permet de mener une étude descriptive répondant à la pratique usuelle
des méthodes factorielles ; il permet de les utiliser en tant que techniques de prétraitement
précédant les algorithmes de machine learning dans des mécanismes de pipeline (« Pipeline sous
Pour des raisons de lisibilité, nous recommençons à zéro dans cette section, avec le chargement
des données et la préparation des structures. Nous suivons ensuite la démarche d’analyse
principales »).
44
ACP 36
cor_', 'col_cos2_', 'col_labels', 'col_labels_', 'col_labels_short_', 'col_topanda
s', 'correlation_circle', 'eig_', 'eigen_vectors_', 'fit', 'fit_transform', 'get_p
arams', 'mapping', 'mapping_col', 'mapping_row', 'means_', 'model_', 'n_components
', 'n_components_', 'plot_col_contrib', 'plot_col_cos2', 'plot_eigenvalues', 'plot
_row_contrib', 'plot_row_cos2', 'row_contrib_', 'row_coord_', 'row_cos2_', 'row_la
bels', 'row_labels_', 'row_topandas', 'set_params', 'ss_col_coord_', 'stats', 'std
_', 'std_unit', 'transform']
L’objet possède une série de propriétés et de méthodes que nous exploiterons à l’envi tout au
Le choix du nombre de facteurs à retenir est très important en ACP (TUTO 3). L’enjeu est de
distinguer d’une part l’information pertinente (le « signal ») véhiculée par les axes que l’on
choisit de retenir ; et d’autre part, l’information résiduelle – le « bruit » issu des fluctuations
d’échantillonnage – traduite par les derniers facteurs que l’on choisit de négliger. Et c’est là que
le bât blesse. On nous dit généralement qu’il faut conserver les facteurs intéressants, pourvu
qu’ils soient interprétables. Difficile d’être plus approximatif. Pour un expert, ce n’est pas
vraiment un problème. Attention, l’expertise ne se limite pas à la méthode. Elle englobe une
bonne connaissance du domaine (savoir ce qui est possible d’obtenir ou pas) et des données
manipulées (pouvoir détecter rapidement les anomalies ou les évidences). Bref, il dispose de
Pour le néophyte, l’à peu près n’est pas gérable. C’est un peu le cas de mes étudiants. Ils
connaissent bien les statistiques. Ils sont en train d’apprendre les techniques factorielles. Mais
pour ce qui est des applications pratiques sur des fichiers de données, ils ne sont ni médecins,
ni spécialistes du marketing, etc. L’expertise métier leur fait défaut pour encadrer les résultats.
Ils ont besoin de repères numériques forts lorsqu’ils mènent une analyse. Et je me suis rendu
compte que la très grande majorité des étudiants se contentaient très souvent de la règle de
Kaiser-Guttman (valeur propre > 1 en ACP normée), et parfois de la règle du coude associée au
« scree plot » mettant en lumière la décroissance des valeurs propres (« éboulis » des valeurs
propres). Pourtant d’autres règles existent. Elles sont malheureusement peu connues, peu
46
ACP 38
Dans cette section, nous passons en revue quelques solutions simples à mettre en œuvre pour
impliquent plusieurs passages sur les données feront l’objet d’un développement spécifique dans
Ces approches « simples » s’appuient essentiellement sur l’étude des valeurs propres. Rappelons
que la valeur propre correspond à la fraction d’inertie que la composante retranscrit. Plus elle
est élevée, plus le facteur est important dans la lecture des résultats. L’enjeu justement est de
déceler à partir de quel stade l’information restituée peut être considérée négligeable. L’affaire
n’est pas facile. En effet, plusieurs éléments entrent en ligne de compte (Jackson, 1993) : le
le nombre d’observations et le nombre de variables ; le degré de liaison (la corrélation) entre les
Le ratio « n:p » est particulièrement important. Il détermine la stabilité des résultats. Certaines
références affirment qu’une ACP n’est vraiment viable que s’il est supérieur à 3 (Grossman et
al., 1991). Nous avons juste (18/6 = 3) dans notre fichier. Ouf ! A priori, nous pouvons travailler
en confiance.
La règle de Cattell (1966, 1977) repose sur l’étude de la courbe de décroissance des valeurs
propres (k) pour identifier le bon nombre de facteurs. Elle est valable pour les ACP normées et
non-normées. L’idée est de détecter les « coudes » (les « cassures ») signalant un changement
de structure. Cette approche est intéressante parce qu’elle est nuancée. Elle permet de dépasser
l’arbitraire purement numérique. Mais elle est compliquée à mettre en œuvre parce qu’elle est
justement soumise à l’arbitraire. La détection n’est pas toujours évidente. Il faut répondre à
plusieurs questions : Où est situé le coude ? Est-ce qu’il est unique ? Est-ce que nous l’incluons
En règle générale, le coude est très marqué lorsque nous traitons des variables fortement
corrélées. Lorsqu’elles le sont faiblement ou lorsqu’il y a des blocs de variables corrélées, plutôt
47
ACP 39
Figure 8 - Scree plot - Données "Autos"
Il y a un coude évident ici pour (k = 2). Est-ce qu’il faut l’inclure ou pas dans la sélection c.-à-d.
est-ce qu’il faut prendre (q = 1) ou (q = 2) facteurs finalement ? Pour les graphiques, (q = 2) est
incontournable. Mais de manière générale, la décision repose pour beaucoup sur la proportion
d’inertie portée par le facteur concerné. Ici, elle semble assez élevée (14.27%), on serait tenté de
Pour préciser la lecture, il semble intéressant de compléter le « scree plot » par un second
graphique décrivant l’évolution de l’inertie expliquée par les (q) premiers axes. Il s’agit ni plus ni
moins de la courbe des valeurs propres cumulées en pourcentage. Un « coude » devrait y être
visible également. Mais la partie subséquente doit présenter une pente moindre, indiquant ainsi
Nous réalisons ce second graphique pour les données « Autos » (Figure 9).
[Link]()
49
ACP 41
Figure 9 - Courbe de variance expliquée - Données "Autos"
gain est moindre certes, mais la pente reste conséquente. Il y a une seconde cassure en (q = 2),
On est parfois tenté d’utiliser explicitement la part de variance expliquée pour déterminer le
nombre de facteurs. La règle serait alors : « sélectionner suffisamment d’axes pour expliquer
au moins x% de l’inertie totale ». Cette stratégie est descendue en flammes par toutes les
références que j’ai pu consulter. Pour la simple raison qu’elle ne tient pas compte des
corrélations entre les variables. Dans notre exemple, mettons que l’on souhaite capter 95% de
50
ACP 42
Néanmoins, après coup, après avoir choisi le nombre d’axes à l’aide d’une des approches décrites
Règle de Kaiser-Guttman. La règle de Kaiser-Guttamn repose sur une idée simple. Dans une
ACP normée, la somme des valeurs propres étant égale au nombre de variables, leur moyenne
vaut 1. Nous considérons par conséquent qu’un axe est intéressant si sa valeur propre est
supérieure 1.
Il existe d’autres manières de considérer ce seuil : un axe est intéressant s’il contribue plus
qu’une des variables prise individuellement ; ou encore, si les variables étaient deux à deux
Pour les données « Autos », le seuil a été rajoutée dans le « scree plot » (Figure 8, ligne rouge
pointillée). Cette règle de sélection sert de repère à tous les praticiens de l’analyse en
tenir compte en aucune manière les caractéristiques des données, notamment ses dimensions
Règle de Karlis-Saporta-Spinaki. On pense généralement que le seuil 1 est trop permissif c.-
à-d. nous retenons plus d’axes factoriels qu’il n’en faut. Il n’est réellement fondé que si les
variables sont fortement corrélées, autrement il faudrait le relever. Une règle plus restrictive
consiste à le définir comme suit : moyenne des valeurs propres + 2 fois leur écart-type (Saporta,
2006 ; page 172). Elle rappelle la définition de la valeur critique d’un test unilatéral de conformité
𝑝−1
𝜆 >𝟏+2√
𝑛−1
51
ACP 43
[Link]()
Ainsi, la procédure des bâtons brisés nous annonce que seul le 1er facteur est réellement
Le test des bâtons brisés a plutôt bonne réputation. On lui reproche simplement de ne tenir
compte ni de « n » (le nombre d’observations) ni du ratio « n:p » dans la définition des valeurs
critiques (TUTO 3). Elle n’est valable que pour l’ACP normée.
Il n’y a pas de solution miracle pour l’identification du nombre de facteurs. Mis à part le test de
Bartlett qui répond à un cahier de charges très spécifique, les différentes techniques présentées
se valent et apportent des points de vue complémentaires dans notre pratique de l’ACP. Il n’y a
pas de vérités absolues en statistique exploratoire. Il y a seulement des pistes que nous devons
de nos données. L’expertise métier est essentielle pour valider les résultats. Il y a aussi une part
d’intuition qui tient à l’expérience du data scientist. Sur les données « Autos », il faut en réalité
sélectionner (q = 2) composantes… qui deviennent évidentes : soit après rotation des facteurs
(section 2.2), soit en travaillant sur les corrélations partielles (section 2.4).
55
ACP 47
secondes, nous constatons que c’est une fausse impression que l’on ne retrouve absolument
dans les nuages de points des variables prises deux à deux (Figure 3).
Pour une meilleure lisibilité, on privilégie une vue synthétique avec le « cercle des
corrélations ». Ce sont les « directions » qui importent, d’où les flèches dans la représentation
graphique. Elles permettront de comprendre les positions relatives des observations dans la
Clairement ici, la cylindrée joue un rôle central (c’est le cas de le dire) en étant corrélée avec les
autres variables.
Remarque : Nous sommes dans une situation simple dans notre exemple. Les (q = 2) premiers
facteurs suffisent pour décrire les données. Sinon, il faudrait considérer les représentations
Cosinus2. Le COS2 désigne la qualité de la représentation des variables (𝑥𝑗 ) sur une composante.
2
𝐶𝑂𝑆𝑗𝑘 = 𝑟𝑗2 (𝐹𝑘 )
57
ACP 49
Figure 12 - Carte des individus - Version 1 - Données "Autos"
a. l’écart entre la Simca 1300 et la Lancia Beta se joue plus sur l’ordonnée (Dim 2) que sur
l’abscisse (Dim 1) ;
Or, ces deux assertions s’avèrent fausses si l’on procède aux calculs à partir des coordonnées
factorielles. En effet (les coordonnées sont visibles dans la sortie Python ci-dessus) :
2
a. 𝑑 2 (𝑆𝑖𝑚𝑐𝑎, 𝐿𝑎𝑛𝑐𝑖𝑎) = (−1.12 − (−0.30)) + (0.67 − 0.20)2 = 0.66 + 0.23 = 0.89 ; l’écart se
b. 𝑑 2 (𝐴𝑢𝑑𝑖, 504) = (1.56 − 0.68)2 + (1.53 − 0.93)2 = 1.12 et 𝑑 2 (𝐷𝑎𝑡𝑠𝑢𝑛, 504) = (2.94 −
0.68)2 + (0.56 − 0.93)2 = 5.23 ; la Datsun s’avère nettement plus éloignée de la 504 que
61
ACP 53
C’est pour cette raison que je préconise systématiquement de fixer la même échelle en abscisse
et en ordonnée des graphiques factoriels. Les positions relatives sont alors ramenées à de plus
justes proportions, et reflètent plus fidèlement les écarts et leur nature (Figure 13).
for i in range(n):
[Link](acp.row_coord_[i,0],acp.row_coord_[i,1],[Link][i])
[Link]()
Cosinus2 (COS2). Les cosinus expriment la qualité de représentation des individus. Ils sont basés
sur le carré des coordonnées mais normalisées d’une manière spécifique. Pour les comprendre,
62
ACP 54
Rappelons que l’inertie totale du nuage de points s’écrit :
𝑛
1
𝐼𝑝 = ∑ 𝑑 2 (𝑖, 𝐺)
𝑛
𝑖=1
Nous travaillons sur (Z) qui est centrée, et éventuellement réduite, le barycentre et l’origine
𝑛 𝑛 𝑝
1 1
𝐼𝑝 = ∑ 𝑑𝑖2 = ∑ ∑ 𝑧𝑖𝑗
2
𝑛 𝑛
𝑖=1 𝑖=1 𝑗=1
La quantité (𝑑𝑖2) indique la part de l’individu dans l’inertie totale, dans l’espace des variables
Notons une équivalence très importante : nous pouvons reconstituer cette distance dans
𝑑𝑖2 2
= ∑ 𝐹𝑖𝑘
𝑘=1
Le cosinus² de l’individu n°i sur le facteur (Fk), qui désigne la qualité de représentation de
2
2
𝐹𝑖𝑘
𝐶𝑂𝑆𝑖𝑘 = 2
𝑑𝑖
Un individu est parfaitement représenté lorsque nous prenons en compte l’ensemble des (p)
𝑝
2
∑ 𝐶𝑂𝑆𝑖𝑘 =1
𝑘=1
En pratique, on s’intéressera à la somme cumulée sur les (q) premiers facteurs pour savoir si un
individu est bien représenté dans l’espace factoriel que l’on s’est choisi.
63
ACP 55
Opel Rekord 6.588764 0.070658
Lada 1300 9.219391 0.134007
L’outil propose un affichage graphique des (nb_values) contributions les plus importantes selon
les facteurs (num_axis) (Figure 14). Solution pratique lorsque la taille du jeu de données est
importante. Dans une étude réelle, il faudrait se poser des questions sur le rôle de la Renault 30.
C’est la seule routière du lot finalement, la seule équipée d’un moteur V6 de surcroît.
Remarque : Nous comprenons aisément au regard des formules que les individus situés aux
extrémités des facteurs sont les mieux représentés (COS2) et sont les plus influents (CTR).
Puisque l’analyse en composantes principales est duale par nature, il existe une relation entre
les coordonnées factorielles des individus (𝐹𝑖𝑘 ) et celles des variables [les corrélations, 𝑟𝑗 (𝐹𝑘 )] via
Pour obtenir les coordonnées de l’individu n°i sur le facteur (Fk) à partir des coordonnées des
𝑝
1
𝐹𝑖𝑘 = ∑ 𝑧𝑖𝑗 × 𝑟𝑗 (𝐹𝑘 )
√𝜆𝑘 𝑗=1
68
ACP 60
Ces relations légitiment la lecture conjointe des cartes des variables et des individus c.-à-d.
pour expliquer les positions relatives entre les individus, on s’intéresse aux directions exprimées
par les corrélations des variables avec les axes. Par exemple, la Renault 30 et la Toyota Corolla
s’opposent sur le premier axe (Figure 13) à cause du différentiel de cylindrée (Figure 11).
Biplot. Pour aller plus loin, certains outils proposent un graphique « biplot », assez séduisant au
demeurant, pour représenter simultanément les individus et les variables. Il ne doit pas nous
induire en erreur. Pour les individus, nous raisonnons en positions relatives dans le repère ; pour
les variables, nous raisonnons en directions. Mais les proximités entre individus et variables
n’ont aucun sens. Une fois cette précaution assimilée, nous représentons ci-dessous le
Annoncer par exemple à la lecture de ce graphique que la Renault 30 serait puissante (proche de
PUISS) mais légère (éloigné de POIDS) est erroné. Dire en revanche que le 1er facteur est défini
positivement par l’ensemble des variables, et que la Renault 30, située à son extrémité-est,
70
ACP 62
1.4 Reconstitution des données
L’ACP préserve au mieux les distances entre individus et les corrélations entre les variables dans
façon approximative - les valeurs initiales des données en se focalisant sur les formes
essentielles captées sur les composantes. Ce faisant, elle évacue le bruit résiduel contenu dans
les données. Cette fonctionnalité est souvent mise en avant dans le traitement d’images, lors
des opérations de compression avec perte, que l’on essaie de contrôler avec la détermination de
la taille de la dimensionnalité à retenir. Elle est moins mise en avant sur les données tabulaires
usuelles. Pourtant, je lui vois au moins une propriété très intéressante, un peu à la manière des
auto-encodeurs (« Auto-encodeur avec Keras sous Python », novembre 2019), elle contribue à
l’identification des observations atypiques par comparaison entre les valeurs observées et
Revenons sur quelques formules importantes pour décrypter le mécanisme. Les coordonnées
𝐹(𝑝) = 𝑍 𝑎(𝑝)
Où (Z) est la matrice des données centrées et réduites, de dimension (n, p) ; F(p) les coordonnées
factorielles sur l’ensemble des (p) facteurs (n, p) ; a(p) est la matrice des vecteurs propres (p,p),
Il est très facile de calculer les coordonnées dans l’espace originel à partir des coordonnées
𝑇
𝑍 = 𝐹(𝑝) 𝑎(𝑝)
Nous avons une approximation si l’on ne prend que les (q < p) premiers facteurs :
𝑍̂ = 𝐹(𝑞) 𝑎(𝑞)
𝑇
Sachant que les variables ont été centrées et réduits avec la formule :
71
ACP 63
Princess 1800 1798 82 445 172 1160 158
Datsun 200L 1998 115 469 169 1370 160
Taunus 2000 1993 98 438 170 1080 167
Rancho 1442 80 431 166 1129 144
Mazda 9295 1769 83 440 165 1095 165
Opel Rekord 1979 100 459 173 1120 173
Lada 1300 1294 68 404 161 955 140
Attardons-nous sur la Lancia Beta qui était mal représentée dans le premier plan factoriel avec
un COS2 de 11.54% (section 1.3.3). On sait pourquoi maintenant. Par rapport à ses caractéristiques
(vitesse, puissance, dimensions) qui la place plutôt parmi les berlines familiales de l’époque, elle
devrait présenter une cylindrée plus élevée (1575.8 cm3 estimée vs. 1297 cm3 observée).
La projection des individus supplémentaires (ou illustratifs selon la finalité poursuivie) est une
de nouveau individus par rapport à ceux (les individus actifs, l’échantillon d’apprentissage,
− Situer les positions des individus qui ont été collectés après coup.
− Identifier parmi ces individus ceux dont les caractéristiques diffèrent significativement
exemple, dans les années 70, voir comment se placent les véhicules du bloc de l’est aurait
pu être intéressant. Il y a déjà une Lada dans les individus actifs, mais on pourrait
analyser les caractéristiques des Skoda, Tatra, Dacia et autres Trabant (de l’époque) en
− Intégrer après coup les observations jugées trop atypiques ou influentes, qui étaient
74
ACP 66
Renault 30 des calculs par exemple, du fait de son influence très marquée sur les 2
Les coefficients des vecteurs propres (ajk) font office de paramètres dans la fonction de
projection permettant de calculer les coordonnées d’un individu supplémentaire (i*) sur le
facteur (Fk) :
Où (𝑧𝑖 ∗ 𝑗 ) est la valeur centrée et réduite de (𝑥𝑖 ∗ 𝑗 ) avec les paramètres (moyenne, écart-type)
𝑥𝑖 ∗𝑗 − 𝑥̅𝑗
𝑧𝑖 ∗𝑗 =
𝜎𝑗
Certains logiciels comme TANAGRA fournit ainsi les coefficients standardisés (ajk) et les
paramètres de centrage et réduction pour qu’il soit possible de réaliser le déploiement à l’aide
d’autres outils (je demande aux étudiants de le faire sous Excel pour qu’ils décryptent bien le
mécanisme).
Figure 16 - Coefficients et paramètres pour le déploiement sous TANAGRA - ACP - Données "Autos"
On peut même imaginer produire une fonction de projection avec des coefficients bruts (qui
s’appliquent directement sur les variables originelles, sans transformations préalables) pour
faciliter le déploiement.
Où
75
ACP 67
#points illutratifs
for i in range([Link][0]):
[Link](coordSup[i,0],coordSup[i,1],[Link][i],color="blue")
[Link]()
Oui, la « 304 S » est une petite sportive, a l’instar de l’Alfasud TI (première version). Quant à la
604, elle était bien une concurrente directe de la Renault 30. Ces résultats confortent la
Pour identifier les « nouveautés » c.-à-d. les individus supplémentaires dont les
77
ACP 69
Figure 18 - Ellipse de confiance - Données "Autos"
La Peugeot 604 est en dehors de l’ellipse de confiance pour le niveau de 95% que l’on s’est choisi.
Ce résultat n’est pas étonnant lorsqu’on revient sur les données. Elle possède les valeurs plus
élevées de cylindrée (à égalité avec la Renault 30), puissance, longueur, largeur (idem Audi 100),
poids et vitesse maximum (idem Renault 30). Elle est « hors norme » en ce sens.
Les variables illustratives ont pour vocation de renforcer l’interprétation des composantes. Elles
ne sont pas utilisées pour leur construction, elles interviennent seulement après coup pour
mieux comprendre et commenter les résultats. Pour l’exemple des données « Autos », nous
avons utilisé en variables actives les caractéristiques intrinsèques des véhicules (largeur, poids,
puissance, etc.) pour élaborer les facteurs. Nous nous appuyons ensuite sur des variables
80
ACP 72
Figure 20 - Position des modalités de la variable illustrative "FINITION" - ACP - Données "Autos"
Remarque : Nous aurions pu également colorier les étiquettes selon le groupe d’appartenance
défini par « FINITION ». Mais le positionnement des moyennes conditionnelles est plus en phase
Manifestement, les niveaux de FINITION se distingue fortement sur le 1er facteur, quasiment
pas sur le 2nd. Elle (la finition) est intimement liée à la notion de « gamme » de véhicules mis en
avant lors de la lecture des facteurs. Plus le véhicule monte en gamme, plus élevé est le niveau
de finition.
Hélas, les résultats sont rarement aussi évidents en pratique. Il nous faut disposer d’un
moyennes conditionnelles autour de la moyenne globale. Sachant que les facteurs sont centrés
86
ACP 78