0% ont trouvé ce document utile (0 vote)
15 vues82 pages

Analyse des Composantes Principales en Python

Transféré par

YoubOubodib
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues82 pages

Analyse des Composantes Principales en Python

Transféré par

YoubOubodib
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1 Analyse en composantes principales (ACP)

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

de résumer ou regrouper les descripteurs dans leurs dimensions les plus

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

espace de représentation réduit ; comme une technique de compression de l’information ; etc.

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

des connaissances du domaine. Nous ne dérogerons pas à cette règle.

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

construction du repère factoriel.

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

(variables) sont fondées ces ressemblances et dissemblances.

− 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

certainement positivement corrélées. Mais qu’en est-il des autres ?

− 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

naturelle d’une manière ou d’une autre ? Dans une représentation graphique

éventuellement ?

Il y a deux manières complémentaires d’appréhender l’information de ce type de tableau

individus-variables : étudier la proximité entre les individus d’une part, analyser les liaisons

entre les variables d’autre part.

11
ACP 3
1.1.2 Analyse des proximités entre individus

[Link] Représentation dans le plan (p = 2 variables)

Contentons-nous de traiter les variables CYL et PUISS dans un premier temps. Nous pouvons

représenter les observations dans le plan.

#importer la librairie graphique


import [Link] as plt

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

#ajouter les labels des véhicules


for v in [Link]:
[Link]([Link][v],[Link][v],v)

#faire afficher
[Link]()

Figure 1 - ACP - Données "Autos" - Nuage de points (CYL vs. PUISS)

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

augmente, la puissance croît également.

− L’Opel Rekord et la (Ford) Taunus 2000 présentent des caractéristiques similaires. Ces

véhicules sont en concurrence frontale sur le marché.

− 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,

on n’est pas vraiment étonné.

− Les Renault 30 et Toyota Corolla en revanche sont complètement opposés (gros moteur

puissant vs. petit moteur anémique).

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

en abscisse varie, celle en ordonnée reste constante en moyenne. On s’intéresse principalement

aux liaisons linéaires ici.

(A) (B)

(D)
(C)

Figure 2 - Types de liens entre deux variables quantitatives

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

manière moins avenante reconnaissons-le.

13
ACP 5
Sous Python, nous utilisons la librairie « seaborn » pour réaliser un graphique potable en une

ligne de commande (Figure 3).

#librairie graphique
import seaborn as sns

#pairplot
[Link](D)

Figure 3 - ACP - Données "Autos" - Pairplot

L’analyse en composantes principales vise à réduire la dimensionnalité en créant des variables

synthétiques, combinaisons linéaires des variables originelles, en nombre réduit (𝒒 ≪ 𝑝), tout

en préservant au mieux l’information. On comprend l’idée. Mais encore faut-il pouvoir :

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

est définie par

𝑥𝑖𝑗 − 𝑥̅𝑗
𝑧𝑖𝑗 =
𝜎𝑗

− Le centrage a pour conséquence de ramener le barycentre à l’origine c.-à-d. le vecteur

des moyennes est composé de valeurs nulles.

− Avec la réduction, l’inertie est égale au nombre (p) de variables.

Objectif de l’ACP : L’objectif de l’ACP est de construire un système de représentation de

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

une succession de (q) variables synthétiques appelées « composantes principales » (facteurs,

axes principaux, axes factoriels). Elles sont définies par des combinaisons linéaires des variables

(𝑧𝑗 ). Pour la composante n°k :

𝐹𝑘 = 𝑎𝑘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

terme constant apparaît dans ce cas.

𝐹𝑘 = 𝑏𝑘0 + 𝑏𝑘1 𝑥1 + ⋯ + 𝑎𝑘𝑝 𝑥𝑝

La succession de facteurs construits par l’ACP répond au cahier des charges suivant :

1. La première composante F1 est construite de manière à maximiser la dispersion des points

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

restituée. Sa variance indique toujours la qualité de représentation qu’elle porte. L’addition

des variances des deux premières composantes indique leur pouvoir de représentation

lorsqu’elles sont combinées.

3. La troisième vient compléter les deux premières. Etc.

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

facteurs est égale à l’inertie totale.

La compression est d’autant meilleure qu’un nombre (q) faible de facteurs permet de reproduire

une fraction importante de l’information initiale.

Pour l’exemple (CYL, PUISS) centrées et réduites, nous matérialisons les deux facteurs de l’ACP

(il ne peut y en avoir que 2 au maximum puisque p = 2) (Figure 5).

Figure 5 - Composantes principales - Données "Autos" (CYL, PUISS)

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

#ajouter les labels des véhicules


for i in range(n):
[Link](coord[i,0],coord[i,1],[Link][i])

#faire afficher
[Link]()

Plusieurs commentaires quant à ce graphique (Figure 6) :

− C’est le même graphique que le précédent (Figure 5), mais après rotation. Nous avons la

composante F1 en abscisse, F2 en ordonnée.

− 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.

− Une autre manière de se prémunir de ces distorsions intempestives est de fixer

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

restitue 89.83% de l’information disponible.

La variance restituée sur les facteurs est égale à :

𝑛
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.

Sur nos données,

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

dimensionnalité, organisé judicieusement à l’aide de l’ACP par exemple, ce type de graphique

peut se révéler décisif pour identifier rapidement les liaisons et/ou groupes de liaisons

importantes qui structurent les données.

[Link] Principe de l’analyse en composantes principales (2)

Ce nouveau prisme nous permet de poser autrement le problème d’analyse en composantes

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

Où 𝑟𝑗 (𝐹1 ) indique la corrélation de la variable n°j avec le facteur (F1).

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

la nature de la méthode et la teneur des résultats.

Récapitulons. A partir d’un ensemble de données dont la quantité d’information totale est

comptabilisée par l’inertie 𝐼𝑝 , l’objectif de l’ACP est de construire des facteurs :

𝐹1 = 𝑎11 𝑧1 + 𝑎21 𝑧2 + ⋯ + 𝑎𝑝1 𝑧𝑝



𝐹𝑘 = 𝑎1𝑘 𝑧1 + 𝑎2𝑘 𝑧2 + ⋯ + 𝑎𝑝𝑘 𝑧𝑝

{ 𝐹𝑝 = 𝑎1𝑝 𝑧1 + 𝑎2𝑝 𝑧2 + ⋯ + 𝑎𝑝𝑝 𝑧𝑝

− La variable (zj) représente la variable originelle (xj) centrée (ACP non-normée) ou centrée

et réduite (ACP normé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 :

o Les facteurs sont par conséquent d’importance décroissante ;

o Et ils sont deux à deux orthogonaux ;

− En pratique, on se contente de ne retenir que sur les (q) premiers, avec (𝑞 ≪ 𝑝), qui

portent une fraction suffisamment importante de l’information disponible. Nous

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

l’information initialement disponible.

− 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

entre les variables.

Comment obtenir les coefficients (𝑎𝑗𝑘 ) à partir des données ?

37
ACP 29
1.2.1 Calculs (1) – Diagonalisation de la matrice des corrélations

Pourquoi la diagonalisation de la matrice des corrélations ? La première approche consiste

à 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.

En termes matriciels, nous pouvons l’écrire : max 𝑎𝑇 𝑅 𝑎


𝑎

Dans le même temps, on souhaite que le vecteur (a) soit normé : ‖𝑎‖ = 𝑎𝑇 𝑎 = 1

Nous avons donc un problème d’optimisation sous contrainte :

max 𝑎𝑇 𝑅𝑎
{ 𝑎
𝑠. 𝑐.: 𝑎𝑇 𝑎 = 1

Nous passons par le lagrangien pour le résoudre :

𝐿 = 𝑎𝑇 𝑅 𝑎 − 𝜆 (𝑎𝑇 𝑎 − 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

corrélations R, (λ) est la valeur propre associée.

2. (𝜆 = 𝑎𝑇 𝑅 𝑎), (λ) correspond à la valeur propre.

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 à

quelques vérifications enfin.

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

pleinement les informations portées par les données.

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

Python – La méthode DISQUAL », juin 2018).

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

proposée par l’auteur de la librairie (« Package fanalysis – Analyse en Composantes

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

long de cette section.

1.3.1 Détermination du nombre de facteurs

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

tous les garde-fous nécessaires pour produire des résultats valables.

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

diffusées, et de ce fait peu utilisées.

46
ACP 38
Dans cette section, nous passons en revue quelques solutions simples à mettre en œuvre pour

identifier le nombre adéquat de facteurs de l’ACP. Les techniques de rééchantillonnage qui

impliquent plusieurs passages sur les données feront l’objet d’un développement spécifique dans

un autre chapitre (section 2.1).

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

nombre d’observations « n » ; le nombre de variables « p » de l’analyse ; le ratio « n:p »entre

le nombre d’observations et le nombre de variables ; le degré de liaison (la corrélation) entre les

variables ; l’existence éventuelle de blocs de variables corrélées dans le tableau de données.

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.

[Link] Procédures graphiques

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

ou pas dans la sélection ?

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

la sélectionner nonobstant les contraintes de représentations graphiques.

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

un apport négligeable des facteurs restants.

Nous réalisons ce second graphique pour les données « Autos » (Figure 9).

#proportion de variance expliquée


fig, ax = [Link](figsize=(5,5))
[Link](range(0,p+1),[Link](0,acp.eig_[2]),".-")
ax.set_xlabel("Nb. facteurs")
ax.set_ylabel("% de var. expliquée")
[Link]("Variance expliquée")

[Link]()

49
ACP 41
Figure 9 - Courbe de variance expliquée - Données "Autos"

Lorsque l’on passe de (q = 0) à (q = 1) facteur, le gain d’information est important, la pente de

la courbe est forte. Il y a une cassure à (q = 1). Pour le passage de (q = 1) à (q = 2) facteurs, le

gain est moindre certes, mais la pente reste conséquente. Il y a une seconde cassure en (q = 2),

et par la suite, la pente est de plus en plus horizontale.

A l’évidence, le choix se joue entre (q = 1) ou (q = 2). Ce graphique de l’évolution de la variance

expliquée en fonction du nombre de composantes combiné au « scree plot » se révèle souvent

décisif dans l’appréciation du nombre de facteurs à retenir.

[Link] Proportion d’inertie expliquée

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

l’information disponible, nous serions amenés à retenir (q = 3) facteurs. Tout en sachant

pertinemment que la variabilité est très faible à partir du 3ème.

50
ACP 42
Néanmoins, après coup, après avoir choisi le nombre d’axes à l’aide d’une des approches décrites

dans ce document, il est intéressant de pouvoir situer la quantité d’information – à l’aide de la

fraction d‘inertie expliquée - que restituent les facteurs sélectionnés.

[Link] Règles de Kaiser simples et améliorées

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

orthogonales, les valeurs propres issues de l’analyse seraient toutes égales à 1.

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

composantes principales. Elle a le mérite de la popularité. Mais elle a pour inconvénient de ne

tenir compte en aucune manière les caractéristiques des données, notamment ses dimensions

(nombre d’observations et de variables).

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é

à 5%, où la statistique suit asymptotiquement une loi normale.

La règle d’acceptation devient maintenant :

𝑝−1
𝜆 >𝟏+2√
𝑛−1

51
ACP 43
[Link]()

Figure 10 - Valeurs propres et seuils des bâtons brisés - Données "Autos"

Ainsi, la procédure des bâtons brisés nous annonce que seul le 1er facteur est réellement

pertinent pour décrire les données.

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.

[Link] Conclusion sur la détection du nombre de facteurs

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

étudier attentivement en le reliant aux caractéristiques (objectifs, contexte) de notre étude et

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

« carte des individus » (section 1.3.3).

#cercle des corrélations


acp.correlation_circle(num_x_axis=1,num_y_axis=2)

Figure 11 - Cercle des corrélations - Données "Autos"

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

factorielles par paires de composantes. La gymnastique est autrement plus complexe.

Cosinus2. Le COS2 désigne la qualité de la représentation des variables (𝑥𝑗 ) sur une composante.

Elle correspond au carré du coefficient de corrélation, elle est définie entre 0 et 1 :

2
𝐶𝑂𝑆𝑗𝑘 = 𝑟𝑗2 (𝐹𝑘 )

57
ACP 49
Figure 12 - Carte des individus - Version 1 - Données "Autos"

Sans ces indications, nous serions tentés de dire que :

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

b. la Peugeot 504 est à égale distance de l’Audi 100 et de la Datsun 200L.

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

fait plus sur le 1er facteur que sur le 2nd en réalité.

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

ne l’est l’Audi 100, on le perçoit visuellement uniquement si l’on a intégré que la

dispersion est plus forte sur le 1er facteur.

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

#graphique avec les échelles carrées


fig, ax = [Link](figsize=(10,10))
[Link](acp.row_coord_[:,0],acp.row_coord_[:,1],'wo')
[Link]([-5,+5,-5,+5])
[Link]([-5,+5],[0,0],color='silver',linestyle='--')
[Link]([0,0],[-5,+5],color='silver',linestyle='--')
ax.set_xlabel("Dim.1 (73.68%)")
ax.set_ylabel("Dim.2 (14.27%)")
[Link]("Carte des individus")

for i in range(n):
[Link](acp.row_coord_[i,0],acp.row_coord_[i,1],[Link][i])

[Link]()

Figure 13 - Carte des individus - Version 2 - Données "Autos"

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,

intéressons-nous tout d’abord au concept de distance à l’origine.

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

sont confondus, l’inertie devient :

𝑛 𝑛 𝑝
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

centrées et éventuellement réduites (zj) : c’est le carré de la distance à l’origine.

Notons une équivalence très importante : nous pouvons reconstituer cette distance dans

l’espace factoriel si nous prenons tous les (p) facteurs.

𝑑𝑖2 2
= ∑ 𝐹𝑖𝑘
𝑘=1

Le cosinus² de l’individu n°i sur le facteur (Fk), qui désigne la qualité de représentation de

l’individu, est défini par le rapport :

2
2
𝐹𝑖𝑘
𝐶𝑂𝑆𝑖𝑘 = 2
𝑑𝑖

Un individu est parfaitement représenté lorsque nous prenons en compte l’ensemble des (p)

composantes. Il vient la naturellement,

𝑝
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.

#affichage graphique - 1er facteur


acp.plot_row_contrib(num_axis=1,nb_values=5)

Figure 14 - 5 plus fortes contributions au premier facteur de l’ACP - Données "Autos"

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

1.3.4 Relation de transition

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

les formules dites de transition.

Pour obtenir les coordonnées de l’individu n°i sur le facteur (Fk) à partir des coordonnées des

variables, la transition s’écrit :

𝑝
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

graphique « biplot » produit par la fonction princomp() du logiciel R (Figure 15).

Figure 15 - Représentation "biplot" - Données "Autos"

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,

réunit les caractéristiques de (POIDS, VMAX, etc.) élevées, est correct.

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

un espace de représentation de dimension réduite. Elle permet également de reconstituer – de

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

« estimées », celles dont les caractéristiques diffèrent de la tendance générale.

Revenons sur quelques formules importantes pour décrypter le mécanisme. Les coordonnées

factorielles des individus est obtenu par le produit matriciel :

𝐹(𝑝) = 𝑍 𝑎(𝑝)

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

elle est orthogonale, son inverse est égale à sa transposée.

Il est très facile de calculer les coordonnées dans l’espace originel à partir des coordonnées

factorielles, si l’on prend tous les (p) facteurs :

𝑇
𝑍 = 𝐹(𝑝) 𝑎(𝑝)

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

1.5 Projection des individus supplémentaires

1.5.1 Principe et fonctions de projection

La projection des individus supplémentaires (ou illustratifs selon la finalité poursuivie) est une

fonctionnalité importante de l’analyse en composantes principales. L’objectif est de positionner

de nouveau individus par rapport à ceux (les individus actifs, l’échantillon d’apprentissage,

l’échantillon de référence) qui ont contribué à la construction du repère factoriel.

On peut voir plusieurs motivations à cette démarche :

− 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

de l’échantillon de référence. On parle de détection de nouveautés (novelty detection,

« Détection des anomalies sous Python », mars 2020).

− Positionner des individus appartenant à une population différente ou spécifique. Par

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

référence à ceux du fichier.

− Intégrer après coup les observations jugées trop atypiques ou influentes, qui étaient

susceptibles de fausser la construction du repère factoriel. On aurait pu écarter la

74
ACP 66
Renault 30 des calculs par exemple, du fait de son influence très marquée sur les 2

premiers facteurs, puis l’ajouter comme individu supplémentaire par la suite.

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

𝐹𝑖 ∗ 𝑘 = 𝑎1𝑘 𝑧𝑖 ∗1 + ⋯ + 𝑎𝑗𝑘 𝑧𝑖 ∗𝑗 + ⋯ + 𝑎𝑝𝑘 𝑧𝑖 ∗𝑝

Où (𝑧𝑖 ∗ 𝑗 ) est la valeur centrée et réduite de (𝑥𝑖 ∗ 𝑗 ) avec les paramètres (moyenne, écart-type)

calculés sur l’échantillon d’apprentissage.

𝑥𝑖 ∗𝑗 − 𝑥̅𝑗
𝑧𝑖 ∗𝑗 =
𝜎𝑗

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

Factor Score Coefficients

Attribute Mean Std-dev Axis_1 Axis_2


CYL 1631.66667 363.39449 0.42494 -0.12419
PUISS 84.61111 19.80219 0.42179 -0.41577
LONG 433.50000 21.48449 0.42146 0.41182
LARG 166.66667 5.16398 0.38692 0.44609
POIDS 1078.83333 133.09907 0.43051 0.24268
VMAX 158.27778 11.79833 0.35894 -0.61986

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.

𝐹𝑖 ∗ 𝑘 = 𝑏0𝑘 + 𝑏1𝑘 𝑥𝑖 ∗1 + ⋯ + 𝑏𝑗𝑘 𝑥𝑖 ∗𝑗 + ⋯ + 𝑏𝑝𝑘 𝑥𝑖 ∗𝑝

75
ACP 67
#points illutratifs
for i in range([Link][0]):
[Link](coordSup[i,0],coordSup[i,1],[Link][i],color="blue")

[Link]()

Figure 17 - Position des observations supplémentaires - Données "Autos"

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

légitimité des résultats de l’ACP menée sur les données « Autos ».

1.5.3 Ellipse de Hotelling

Pour identifier les « nouveautés » c.-à-d. les individus supplémentaires dont les

caractéristiques diffèrent sensiblement de l’échantillon de référence, nous pouvons utiliser

l’ellipse de Hotelling (Tenenhaus, 2007, pages 178 à 180).

Le T2 de Hotelling d’une observation n°i dans un repère de dimension (q) s’écrit :

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.

1.6 Traitement des variables illustratives

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

illustratives intégrant des considérations subjectives (prix, finition) ou calculées ex-post

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

avec les calculs ultérieurs.

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

indicateur numérique, qui possède l’avantage de pouvoir s’appliquer à un nombre éventuellement

important de variables illustratives qualitatives.

Rapport de corrélation. Le rapport de corrélation témoigne de la dispersion relative des

moyennes conditionnelles autour de la moyenne globale. Sachant que les facteurs sont centrés

86
ACP 78

Vous aimerez peut-être aussi