Vous êtes sur la page 1sur 144

II

Analyse des Données


MN
LA

A. LAMNII
A.

28 avril 2020
Table des matières
0.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1 Analyse en Composantes Principales (ACP) 5


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Centrage & Réduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.5 Distance entre deux individus . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.6 Inertie du nuage des individus . . . . . . . . . . . . . . . . . . . . . . 9
1.3.7 Covariance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

II
1.3.8 Corrélation et cosinus . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.9 Recherche des valeurs propres et des vecteurs propres . . . . . . . . . 10
MN
1.4 Exemple : ACP avec R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.13 Coordonnées, contributions et qualités des individus . . . . . . . . . . 20

2 Analyse Factorielle des Correspondances (AFC) 29


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
LA

2.2 Tableau de contingence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30


2.3 Tableau des fréquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.2 Tableau des fréquences lignes . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.5 Tableau des fréquences colonnes . . . . . . . . . . . . . . . . . . . . . 32
A.

2.3.8 Distances entre profils . . . . . . . . . . . . . . . . . . . . . . . . . . . 33


2.3.12 Principes généraux de l’AFC : Distance entre deux variables nominales 33
2.4 Principes généraux de l’AFC : Méthodologie . . . . . . . . . . . . . . . . . . . 34
2.4.2 Commande chisq.test . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5 Exemple : AFC avec R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.3 Double PCA et CA : comparaison . . . . . . . . . . . . . . . . . . . . . 59

3 Classification 63
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2 Classification supervisé et non supervisé . . . . . . . . . . . . . . . . . . . . . 64
3.2.2 Les mesures de proximité sur un ensemble . . . . . . . . . . . . . . . . 65
3.2.6 Ordre partiel sur les partitions . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.8 Principales méthodes d’apprentissage non-supervisée . . . . . . . . . . 66
3.2.9 Principales méthodes d’apprentissage supervisée . . . . . . . . . . . . 66
3.2.10 Comparaison avec l’analyse factorielle . . . . . . . . . . . . . . . . . . 67
3.2.13 Exemple avec R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

1
TABLE DES MATIÈRES

3.2.14 Arbres de classification . . . . . . . . . . . . . . . . . . . . . . . . . . . 77


3.2.15 Knn Normalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.16 Classification ascendante hiérarchique : CAH . . . . . . . . . . . . . . 85
3.2.17 Inertie & Méthode de Ward . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.18 CAH : pseudo-code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.20 CAH : Dendrogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2.21 CAH : Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.2.22 Fonction HCPC() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2.24 La fonction hclust() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.2.25 Algorithme des centres mobiles (k means) . . . . . . . . . . . . . . . . 101
3.2.26 Exemple de CHA vers k means . . . . . . . . . . . . . . . . . . . . . . 102

4 Transformée en ondelettes 110


4.1 Rappel : Séries et transformées de Fourier . . . . . . . . . . . . . . . . . . . . 110
4.2 Introduction aux Ondelettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

II
4.2.5 Exemple d’ondelettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.2.6 La translation et la dilatation . . . . . . . . . . . . . . . . . . . . . . . 116
MN
4.3 Transformée en ondelettes continue . . . . . . . . . . . . . . . . . . . . . . . . 118
4.3.1 Reconstruction et conservation de l’énergie . . . . . . . . . . . . . . . 118
4.3.2 Conditions pour parler d’analyse en ondelettes . . . . . . . . . . . . . 119
4.3.3 Transformée en ondelettes discrète . . . . . . . . . . . . . . . . . . . . 119
4.3.4 Les transformations dyadiques . . . . . . . . . . . . . . . . . . . . . . 119
LA

4.4 Définition des ondelettes : Définition d’Yves Meyer . . . . . . . . . . . . . . . 120


4.4.3 Analyse multirésolution : Fonctions d’échelle . . . . . . . . . . . . . . 121
4.4.4 Analyse multirésolution . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.4.6 Analyse multirésolution : Interprétation . . . . . . . . . . . . . . . . . 122
A.

4.4.7 Analyse multirésolution : Changement d’espace de représentation . . . 122


4.4.13 cwtft : Transformation continue en ondelettes (FFT) . . . . . . . . . . 130
4.4.14 Ondelettes et Singularités . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4.15 Débruitage avec ondelette . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.4.16 Ondelettes et traitement d’image . . . . . . . . . . . . . . . . . . . . . 136
4.4.17 Algorithmes de dé composition et de reconstruction . . . . . . . . . . . 137
4.4.20 Ondelette de Haar 2D : Cas des images . . . . . . . . . . . . . . . . . . 139

2
0.1. INTRODUCTION

0.1 Introduction
Il n’y a pas très longtemps, on ne pouvait pas traiter un tableau de 3000 lignes et 300
colonnes. L’apparition et le développement des ordinateurs a du coup levé cet obstacle de
calcul, et a permis la conservation et l’exploitation des grandes masses de données. Cette
amélioration continue de l’outil informatique a fortement contribué au développement et à
la vulgarisation de nombreuses méthodes statistiques, devenues maintenant d’usage assez
courant.
Les données se présentent généralement sous la forme d’un tableau rectangulaire, dont
les lignes correspondent à des individus ou unités statistiques et les colonnes à des variables
appelées caractères ou caractéristiques.

Les données sont des résultats d’expériences ou d’enquêtes mesurés, observés sur des in-
dividus.

II
Les valeurs des variables peuvent être :
— quantitatives ordinales (jugement humain, température) ;
MN
— quantitatives mesurables (poids d’un individu, revenu) ;
— qualitatives ordinales (classe d’âge, le rang) ;
— qualitatives nominales (sexe, situation matrimoniale).
Lorsque dans un tableau, toutes les variables choisies sont quantitatives, on peut établir
un tableau de données quantitatives ; c’est le cas par exemple où l’on observe sur un ensemble
LA

de sujets I, un certain nombre de mesures J : poids, taille, âge. Ce tableau est encore appelé
tableau de mesures.

Variable quantitative
A.

Une variable quantitative prend des valeurs entières ou réelles, elle est dite alors discrète
ou continue. Cette propriété ayant des incidences sur la nature de sa distribution et donc sur
les graphiques associés.

Variable quantitative
En statistique, une variable qualitative, une variable catégorielle, ou bien un facteur est
une variable qui prend pour valeur des modalités, des catégories ou bien des niveaux.
Par définition, les observations d’une variable qualitative ne sont pas des valeurs numériques,
mais des caractéristiques, appelées modalités. Lorsque ces modalités sont naturellement or-
données (par exemple, la mention au bac ou une classe d’âge), la variable est dite ordinale.

Dans le cas contraire (par exemple, la profession dans une population de personnes actives
ou la situation familiale) la variable est dite nominale.

3
0.1. INTRODUCTION

But du cours
— Comprendre les méthodes ;
— Savoir interpréter les tables et graphiques issus de ces méthodes ;
— Être capable de mener soi-même une telle étude.

II
MN
LA
A.

4
Chapitre 1

Analyse en Composantes Principales


(ACP)

1.1 Introduction
L’analyse en Composantes Principales (ACP) est un grand classique de l’analyse des don-
nées.
Lorsqu’on étudie simultanément un nombre important de variables quantitatives (>>> 4),
comment en faire des graphiques ? La difficulté vient de ce que les individus étudiés ne sont
plus représentés dans un plan, espace de dimension 2, mais dans un espace de dimension

II
plus importante (par exemple 4).
MN
L’objectif de l’Analyse en Composantes Principales (ACP) est de revenir à un espace de
dimension réduite (par exemple 2) en déformant le moins possible la réalité.

Il s’agit donc d’obtenir le résumé le plus pertinent possible des données initiales.
LA

C’est la matrice des variances-covariances (ou celle des corrélations) qui va permettre de
réaliser ce résumé pertinent, parce qu’on analyse essentiellement la dispersion des données
considérées.
C’est la matrice des variances-covariances (ou celle des corrélations) qui va permettre de
A.

réaliser ce résumé pertinent, parce qu’on analyse essentiellement la dispersion des données
considérées. De cette matrice, on va extraire, par un procédé mathématique adéquat, les
facteurs que l’on recherche, en petit nombre. Ils vont permettre de réaliser les graphiques
désirés dans cet espace de petite dimension (le nombre de facteurs retenus), en déformant le
moins possible la configuration globale des individus selon l’ensemble des variables initiales
(ainsi remplacées par les facteurs). C’est l’interprétation de ces graphiques qui permettra de
comprendre la structure des données analysées.

L’Analyse en composantes principales est une méthode de la famille de l’analyse des don-
néeset plus généralement de la statistique multivariée, qui consiste à transformer des va-
riables liées entre elles (dites "corrélées" en statistique) en nouvelles variables non corrélées
les unes des autres. Ces nouvelles variables sont nommées "composantes principales", ou
"axes".
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

5
1.2. OBJECTIFS

composantes principales, qui peuvent être visualisées graphiquement, en perdant le moins


possible d’information.

L’ACP permet au praticien de réduire l’information en un nombre de composantes plus


limité que le nombre initial de variables. Le choix des variables à inclure dans l’analyse et
le nombre de composantes à retenir sont deux étapes importantes dans l’analyse en compo-
santes principales.
De façon très résumé, en pratique l’ACP va rechercher l’axe dans lequel les observations
sont le plus dispersées.
— Objectifs
— Construction d’un espace factoriel
— Construction d’un espace factoriel
— Les étapes d’une ACP
— Interprétation

II
1.2 Objectifs
MN
— Apprendre à extraire de l’information provenant de tableaux de données quantitatives.
— S’applique à des tableaux à 2 dimensions croisant individus et variables
— Individus en ligne, variable en colonnes
— Pour deux individus, on essaie d’évaluer leur ressemblance : deux individus se res-
LA

semblent d’autant plus qu’ils possèdent des valeurs proches pour l’ensemble des va-
riables
— Pour deux variables, on évalue leur liaison à partir du coefficient de corrélation linéaire
— Bilan des relations entre individus
— Quels sont les individus qui se ressemblent ?
A.

— Peut-on mettre en évidence une typologie des individus ?


— Quelles variables sont corrélées entre elles ? Peut on mettre en évidence une typo-
logie des variables ?
— Résumer l’ensemble des variables par des variables synthétiques appelées composantes
principales

1.3 Notions de base


L’ACP, l’analyse en composantes principales, s’intéresse à des tableaux de données rectan-
gulaires avec en lignes des individus et en colonnes des variables qui sont de nature quanti-
tative.
Donc on peut considérer qu’on a n individus et p variables.

6
1.3. NOTIONS DE BASE

Définition 1.3.1 (Tableau de données en ACP)

1... j ... p
1
.. ..
. .
i ... xij . . .
.. ..
. .
n
n
1X
On définit la moyenne d’une variable par : x̄j = xij
n i=1
v
u n
u1 X
L’écart-type par : σj = t (x ij − x̄k )2
n i=1
La dispersion est forte si l’écart-type est supérieur à (1/2 moyenne).

II
— n individus décrits (en lignes)
— p variables quantitatives (en colonnes)
MN
— Tableau Xn×p = xij , des données brutes
— xij = valeur de la variable j pour l’individu i
— On cherche la meilleure ń image approchée ż du nuage en projection sur une droite ∆ ;
c’est celle qui respecte au mieux les distances (distance euclidienne canonique) entre
LA

tous les couples de points : le 1er axe factoriel F1.


— Puis on cherche orthogonalement la 2ème ....
— Le tableau X peut être analysé à travers ses lignes (les individus) ou à travers ses
colonnes (les variables)
A.

1.3.2 Centrage & Réduction


Centrer-réduire les données permet de donner le même poids à toutes les variables dans
le calcul de la distance entre deux individus.

Cette opération est importante si les ordres de grandeur des variables sont très différents.

7
1.3. NOTIONS DE BASE

Définition 1.3.3 (Centrage & Réduction)

1 ... j ... p
1 (x11 − x̄1 ) . . . (x1j − x̄j ) . . . (x1p − x̄p )
..
. (x21 − x̄1 ) . . . (x2j − x̄j ) . . . (x2p − x̄p )
Y = .. ..
i . . ... ...
.. .. ..
. . .
n (xn1 − x̄1 ) . . . (xnj − x̄j ) . . . (xnp − x̄p )

1 ... j ... p
1 (x11 − x̄1 ) /σ1 . . . (x1j − x̄j ) /σj . . . (x1p − x̄p ) /σp
..
. (x21 − x̄1 ) /σ1 . . . (x2j − x̄j ) /σj . . . (x2p − x̄p ) /σp
Z= .. ..
i . . ... ...
.. .. ..
. . .

II
n (xn1 − x̄1 ) /σ1 . . . (xnj − x̄j ) /σj
MN . . . (xnp − x̄p ) /σp

Remarque 1.3.4

Une variable centrée réduite a :


— une espérance nulle ;
— une variance égale à 1 ;
LA

— un écart type égal à 1.


On obtient :
— des données indépendantes de l’unité ou de l’échelle choisie ;
— des variables ayant même moyenne et même dispersion.
A.

1.3.5 Distance entre deux individus


On munit l’espace Rp d’une métrique M (matrice p × p symétrique définie positive).
— un produit scalaire : < x, y >M = xt My

— une norme : kxkM = < x, x >M
— une distance : dM (x, y) = kx − ykM
M est diagonale  
m1
 
M = .. 


. 

mp
— En ACP mj = 1
p
X
kxi k2M = mj x2ij
j=1

8
1.3. NOTIONS DE BASE

p
X
d2M (xi , xi′ ) = mj (xij − xi′ j )2
j=1

1.3.6 Inertie du nuage des individus


C’est une mesure de dispersion du nuage des n points-individus de Rp définie par :
p
X  
I(X) = mj var xj
j=1

Et si M = Ip (ACP) :
— L’inertie I(Y ) du nuage centré des individus est égale à la somme des variances des p
variables.
— L’inertie I(Z) du nuage centré-réduit des individus est égal à p.

II
1.3.7 Covariance
La covariance mesure la liaison entre deux variables j et j ′ :
MN
n   
1X ′
cij ′ = xij − x̄j xij ′ − x̄j
n i=1

— La covariance cij ′ est le produit scalaire entre les variables centrées :


LA


cij ′ =< yj , yj >N

— La matrice p×p de covariance notée C se calcule matriciellement à partir de la matrice


Y des données centrées :
A.

C = Yt NY

— Si la covariance est grande (en valeur absolue) alors les grandes valeurs de la variable
j sont associées aux grandes valeurs de la variable j ′ (en valeur absolue).

1.3.8 Corrélation et cosinus


La corrélation est une autre mesure de liaison entre deux variables j et j ′ qui prend ses
valeurs dans [−1, 1] : !
n ′!
1X xij − x̄j xij ′ − x̄j
rij ′ =
n i=1 sj sj ′
— La corrélation est le cosinus de l’angle entre les variables centrées :

< yj , yj >N  
j j′
r jj ′ = j = cos θ N y , y
ky kN ky′ kN

9
1.3. NOTIONS DE BASE

et le produit scalaire et le cosinus de l’angle entre les variables centrées-réduites :


 ′

rjj ′ =< zj , zj >N = cos θN zj , zj

— La matrice p×p de corrélations notée R se calcule matriciellement à partir de la matrice


Z des données centrées-réduites :

R = Zt NZ

1.3.9 Recherche des valeurs propres et des vecteurs propres


L’ACP consiste à calculer des variables transformées qui sont des combinaisons linéaires
des variables initiales de manière à rendre leur variance maximale.
L’ACP recherche d’abord la combinaison linéaire des variables de variance maximale. Cette
nouvelle variable (ou indice) est la première composante principale, elle définit le premier
axe principal, ensuite on cherche un axe orthogonal, donc une nouvelle variable n’ayant au-

II
cune corrélation avec la première et qui montre également la plus grande variance possible
et ainsi de suite, donc l’ACP transforme un ensemble de caractères plus ou moins corrélés en
MN
un nouvel ensemble de caractères non corrélés et d’importance décroissante appelés compo-
santes principales.
Mathématiquement le procédé consiste à rechercher les valeurs propres et les vecteurs propres
d’une matrice carrée.Pour que la transformation des coordonnées puisse s’appliquer correc-
tement, il faut que tous les caractères soient centrés.
LA

— Résoudre : Det(Y − λIp ) = 0 pour calculer les valeurs propres.


— Calcul des vecteurs propres. Résoudre : Y V = λV
— Les vecteurs propres forment la matrice de passage
— Les valeurs propres sont les covariance des nouvelles variables
A.

La recherche des composantes principales revient à calculer les valeurs propres et les
vecteurs propres de la matrice de corrélation.

Règle 1.3.10

— règle de Kaiser (= inertie moyenne) : On ne retient que les valeurs propres


P
supérieures à leur moyenne > p1 λk (ACP normée)
— Eboulis des valeurs propres : On représente la courbe décroissante des va-
leurs propres (en fonction de leur ordre
Le principe est de chercher un coude dans ce graphe, et on ne garde que les
valeurs propres avant ce point d ?inflexion.
— Parts d ?inertie : On retient les axes dont la part d ?inertie cumulée est supé-
rieure à un seuil fixé par l ?utilisateur (en général 66%).

10
1.3. NOTIONS DE BASE

Algorithme 1.3.11

— Centrer les données : {xi ∈ Rp }ni=1 −→ {xi = xi − x̄ ∈ Rp }ni=1 


— Calculer la matrice de covariance C = n1 X ⊤ X avec X ⊤ = x1 · · · xn
— Calculer la décomposition en valeurs propres {vj ∈ Rp , λj ∈ R}pj=1 de C.
— Ordonner les valeurs propres λj par ordre décroissant
— Nouvelle base de représentation des données :

V = (v1 , · · · , vd ) ∈ Rp×d

{v1 , · · · , vd } sont les d vecteurs propres associés aux d plus grandes λj .


— Projection de tous les points via V s ?obtient matriciellement : XV

II
MN
LA
A.

Traitements réalisés
1. Réaliser une ACP sur un fichier de données.
2. Afficher les valeurs propres. Construire le graphique séboulis des valeurs propres.
3. Construire le cercle de corrélations.
4. Projeter les observations dans le premier plan factoriel.
5. Positionner des variables illustratives quantitatives dans le cercle de scorrélations.
6. Positionner les modalités d’une variable illustrative catégorielle.
7. Positionner des observations illustratives.

11
1.4. EXEMPLE : ACP AVEC R

1.4 Exemple : ACP avec R


Dans cet exemple on va traiter les notes de 15 étudiants d’une classe en tronc commun
en huit matières : l’arabe, le français, l’anglais, la philosophie, les maths, la physique et la
chimie, les sciences de la vie et de la terre et l’éducation sportive.
Les résultats sont regroupés dans le tableau ci-dessous :

Etd Ar Fr Ang Phi Math PC SVT ES


c1 16.00 14.50 14.75 13.50 10.00 11.75 11.00 16.50
c2 11.50 14.00 13.00 10.00 16.00 17.50 15.75 15.50
c3 12.00 11.75 14.00 11.25 14.75 16.00 16.50 16.00
c4 13.50 12.00 15.00 12.50 15.00 14.50 14.75 15.00
c5 15.75 16.50 15.00 14.25 9.75 11.00 11.25 14.75
c6 11.75 10.75 13.00 12.75 15.00 14.50 16.00 15.50
c7 14.50 13.75 16.00 15.50 15.00 14.00 13.75 13.00

II
c8 12.50 10.00 11.00 13.00 13.50 12.75 15.00 14.00
c9 13.50 15.00 12.75 10.00 12.50 11.75 10.00 15.00
MN
c10 17.00 14.25 16.00 15.75 11.75 13.00 12.50 16.75
c11 15.50 16.00 14.75 13.25 12.00 12.50 12.75 13.75
c12 13.75 16.00 17.50 13.50 16.75 17.00 16.50 15.00
c13 14.00 11.75 14.50 12.50 13.00 11.75 14.00 16.25
c14 10.50 9.50 11.75 13.00 11.00 12.50 10.00 17.00
LA

c15 15.50 13.25 14.00 14.00 13.75 15.00 14.50 14.00

1. Présentation du tableau de l’exercice


2. Première mise en pratique de l’ACP.
A.

3. Présentation sommaire de R.
4. Importation des données.
5. Lancer une première analyse. Nous allons montrer comment :
— Trouver un espace de dimension faible (2 ou 3) qui permet d’observer la variation
de ses données ?
— Détecter soit des groupes d’individus homogènes ou quelques individus qui présen-
tant des observations abérantes par rapport au jeu de données ?
— Détecter les variables qui sont les plus corrélées entre elles ?

12
1.4. EXEMPLE : ACP AVEC R

1- Importer la table note.txt dans R


Code R 1.4.1

> note=read.table(’Bureau//AnDonn//note.txt’, header=TRUE, row.names=1)


> note
La fonction read.table() permet de lire un fichier dans un format tabulaire et de
créer une dataframe à partir de ce dernier.

Ar Fr Ang Phi Math PC SVT ES


c1 16.00 14.50 14.75 13.50 10.00 11.75 11.00 16.50
c2 11.50 14.00 13.00 10.00 16.00 17.50 15.75 15.50
c3 12.00 11.75 14.00 11.25 14.75 16.00 16.50 16.00
c4 13.50 12.00 15.00 12.50 15.00 14.50 14.75 15.00
c5 15.75 16.50 15.00 14.25 9.75 11.00 11.25 14.75
c6 11.75 10.75 13.00 12.75 15.00 14.50 16.00 15.50
c7 14.50 13.75 16.00 15.50 15.00 14.00 13.75 13.00
c8 12.50 10.00 11.00 13.00 13.50 12.75 15.00 14.00
c9 13.50 15.00 12.75 10.00 12.50 11.75 10.00 15.00
c10 17.00 14.25 16.00 15.75 11.75 13.00 12.50 16.75
c11 15.50 16.00 14.75 13.25 12.00 12.50 12.75 13.75

II
c12 13.75 16.00 17.50 13.50 16.75 17.00 16.50 15.00
c13 14.00 11.75 14.50 12.50 13.00 11.75 14.00 16.25
c14 10.50 9.50 11.75 13.00 11.00 12.50 10.00 17.00
c15 15.50 13.25 14.00 14.00 13.75 15.00 14.50 14.00
MN
2- Effectuer une analyse univariée : Calcul de la moyenne
Les fonctions sapply applique la même fonction sur tous les éléments d ?un vecteur ou
d ?une liste.
LA

Code R 1.4.2

> Moy.note=sapply(note, mean)


> Moy.note
> plot(Moy.note,pch=4,lwd=8, col=’red’)
A.

Ar Fr Ang Phi Math PC SVT ES


13.81667 13.26667 14.20000 12.98333 13.31667 13.70000 13.61667 15.20000

13
1.4. EXEMPLE : ACP AVEC R

3- Effectuer une analyse univariée : Calcul de l’écart-type


sd : standard déviation en anglais
Code R 1.4.3

> sd.note=sapply(note, sd) > sd.note


> plot(sd.note,pch=4,lwd=18, col=’red’)

Ar Fr Ang Phi Math PC SVT ES


1.902692 2.220977 1.703987 1.659568 2.134886 2.011574 2.261610 1.177164

Commentaire : Les variables Phi et ES sont très dispersées tandis que les autres variables
ont une dispersion moyenne et les variables Fr, Math sont proches de la moyenne. On peut
conclure qu’il y ait une dispersion importante du nuage.

II
MN
LA

4- Calcul de la matrice des corrélations


A.

Code R 1.4.4

> mat.cor=round(cor(note),2)
> mat.cor

Ar Fr Ang Phi Math PC SVT ES


Ar 1.00 0.67 0.62 0.63 -0.44 -0.39 -0.30 -0.19
Fr 0.67 1.00 0.65 0.15 -0.15 -0.04 -0.20 -0.28
Ang 0.62 0.65 1.00 0.51 0.16 0.19 0.16 -0.11
Phi 0.63 0.15 0.51 1.00 -0.27 -0.26 -0.13 -0.18
Math -0.44 -0.15 0.16 -0.27 1.00 0.87 0.85 -0.30
PC -0.39 -0.04 0.19 -0.26 0.87 1.00 0.80 -0.10
SVT -0.30 -0.20 0.16 -0.13 0.85 0.80 1.00 -0.22
ES -0.19 -0.28 -0.11 -0.18 -0.30 -0.10 -0.22 1.00

Commentaire : La plus part des variables sont corrélées entre elles.

14
1.4. EXEMPLE : ACP AVEC R

5- Calcul de la matrice des covariances


Code R 1.4.5

> mat.cov=round(cor(note),2)
> mat.cov

Ar Fr Ang Phi Math PC SVT ES


Ar 3.62 2.82 2.02 1.98 -1.78 -1.50 -1.29 -0.42
Fr 2.82 4.93 2.47 0.56 -0.71 -0.18 -1.03 -0.73
Ang 2.02 2.47 2.90 1.45 0.57 0.64 0.60 -0.22
Phi 1.98 0.56 1.45 2.75 -0.97 -0.86 -0.49 -0.36
Math -1.78 -0.71 0.57 -0.97 4.56 3.73 4.13 -0.76
PC -1.50 -0.18 0.64 -0.86 3.73 4.05 3.64 -0.23
SVT -1.29 -1.03 0.60 -0.49 4.13 3.64 5.11 -0.60

II
ES -0.42 -0.73 -0.22 -0.36 -0.76 -0.23 -0.60 1.39
MN
Code R 1.4.6 (Matrice des covariances)

cornote=round(cor(note),2)
cornote
library(corrplot)
LA

corrplot(cornote, type="upper", order="hclust", tl.col="black", tl.srt=45)

library(PerformanceAnalytics)
mydata <- note[, c(1,2,3,4,5,6,7,8)]
chart.Correlation(mydata, histogram=TRUE, pch=19)
A.

15
1.4. EXEMPLE : ACP AVEC R

II
6- Visualiser en trois dimensions
MN
On fait appel à la bibliothèque rgl

Code R 1.4.7

library(rgl)
rgl.open()
LA

rgl.spheres(note$Ar,note$Fr,note$Ang, radius = 0.1,color=colors)


x =c(0,1,0,0)
y= c(0,0,1,0)
z = c(0,0,0,1)
A.

labels = c(" " , colnames(note[,c(1,2,3)]))


i = c(1,2,1,3,1,4)
rgl.texts(x,y,z,labels)
rgl.lines(x[i], y[i], z[i])

16
1.4. EXEMPLE : ACP AVEC R

7- ACP
Fonction R : PCA() [FactoMineR].

Format simplifié :

PCA(X, scale.unit = TRUE, ncp = 5, graph = TRUE)


— X : jeu de données de type data frame. Les lignes sont des individus et les colonnes
sont des variables numériques
— scale.unit : une valeur logique. Si TRUE, les données sont standardisées/normalisées
avant l’analyse.
— ncp : nombre de dimensions conservées dans les résultats finaux.
— graph : une valeur logique. Si TRUE un graphique est affiché.

Code R 1.4.8

> library(FactoMineR)

II
> res.pca = PCA(note, graph = TRUE)
> print(res.pca)
MN
**Results for the Principal Component Analysis (PCA)**
The analysis was performed on 15 individuals, described by 8 variables
*The results are available in the following objects:
LA

name description
1 "$eig" "eigenvalues"
2 "$var" "results for the variables"
3 "$var$coord" "coord. for the variables"
4 "$var$cor" "correlations variables - dimensions"
5 "$var$cos2" "cos2 for the variables"
A.

6 "$var$contrib" "contributions of the variables"


7 "$ind" "results for the individuals"
8 "$ind$coord" "coord. for the individuals"
9 "$ind$cos2" "cos2 for the individuals"
10 "$ind$contrib" "contributions of the individuals"
11 "$call" "summary statistics"
12 "$call$centre" "mean of the variables"
13 "$call$ecart.type" "standard error of the variables"
14 "$call$row.w" "weights for the individuals"
15 "$call$col.w" "weights for the variables"

Commentaire : ! ! ? ?

17
1.4. EXEMPLE : ACP AVEC R

La fonction pairs()
La fonction pairs() produit une matrice de nuages ("scatterplot matrix, draftman’s plot)
et attend un matrice comme argument.

Code R 1.4.9

pairs(note,col=c(1:8))
library(GGally)
ggpairs(notec)

II
MN
LA
A.

Détermination de nombre d’axes à retenir


On utilise pour cela l’éboulis des valeurs propres.
Les fonctions suivantes, de factoextra, seront utilisées :
— get_eigenvalue(res.pca) : Extraction des valeurs propres / variances des composantes
principales
— fviz_eig(res.pca) : Visualisation des valeurs propres
— get_pca_ind(res.pca), get_pca_var(res.pca) : Extraction des résultats pour les indivi-
dus et les variables, respectivement.

18
1.4. EXEMPLE: ACP AVEC R

II
MN
Code R 1.4.10

> library("factoextra")
> eig.val = get_eigenvalue(res.pca)
LA

> eig.val

eigenvalue variance.percent cumulative.variance.percent


A.

Dim.1 3.24020101 40.5025127 40.50251


Dim.2 2.45497385 30.6871732 71.18969
Dim.3 0.92144722 11.5180902 82.70778
Dim.4 0.86994441 10.8743051 93.58208
Dim.5 0.23405417 2.9256771 96.50776
Dim.6 0.16575691 2.0719613 98.57972
Dim.7 0.08360959 1.0451199 99.62484
Dim.8 0.03001284 0.3751606 100.00000

On appelle inertie la quantité d’information contenue dans un tableau de données.


Une inertie nulle signifie que tous les individus sont presque identiques.

Code R 1.4.11

> inertie=eig.val[,2]
> inertie

19
1.4. EXEMPLE : ACP AVEC R

Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7 Dim.8


40.5025127 30.6871732 11.5180902 10.8743051 2.9256771 2.0719613 1.0451199 0.3751606

Dim1,..., Dim8 sont les composantes principales de l’ACP, les valeurs de la 1ere colonne
sont les valeurs propres associées aux vecteurs propres Dim1,..., Dim8.
Chaque valeur propre λs étant la variance de la séme composante principale.
La 2éme colonne représente le pourcentage de la variance c-a-d pour chaque composante s
son pourcentage de variance est λP
s ×100
λi
.
i

Code R 1.4.12

> fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

II
MN
LA
A.

Critère de Kaiser : on ne retient que les axes dont l’inertie est supérieure à l’inertie
moyenne I/p (un peu étroit).
Kaiser en ACP normée : I/p= 1 : On ne retiendra que les axes associés à des valeurs propre
supérieures à 1

Commentaire : On constate alors que la cassure (le coude) se commence à partir de la troi-
sième valeur propre ;

On ne retient alors que les deux premiers axes factoriels correspondants.

1.4.13 Coordonnées, contributions et qualités des individus


Les tableaux suivants résument les coordonnées, les contributions et la qualité des indivi-
dus de l’exemple précédent

20
1.4. EXEMPLE : ACP AVEC R

Code R 1.4.14

summary(res.pca)

Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7 Dim.8
Variance 3.240 2.455 0.921 0.870 0.234 0.166 0.084 0.030
% of var. 40.503 30.687 11.518 10.874 2.926 2.072 1.045 0.375
Cumulative % of var. 40.503 71.190 82.708 93.582 96.508 98.580 99.625 100.000

Les deux axes retenus expliquent 71.190% de la variance totale.

Individuals (the 10 first)


Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
c1 | 2.879 | -2.571 13.604 0.798 | -0.713 1.380 0.061 | 0.995 7.169 0.120 |

II
c2 | 3.498 | 3.056 19.220 0.763 | 0.108 0.032 0.001 | 0.528 2.014 0.023 |
c3 | 2.604 | 2.395 11.798 0.846 | -0.146 0.058 0.003 | 0.852 5.251 0.107 |
MN
c4 | 1.357 | 1.037 2.211 0.584 | 0.506 0.695 0.139 | 0.073 0.038 0.003 |
c5 | 3.239 | -3.098 19.750 0.915 | 0.179 0.087 0.003 | -0.354 0.906 0.012 |
c6 | 2.299 | 2.028 8.461 0.778 | -0.581 0.917 0.064 | -0.069 0.035 0.001 |
c7 | 2.878 | -0.411 0.348 0.020 | 2.141 12.446 0.553 | -1.396 14.095 0.235 |
c8 | 2.893 | 1.206 2.994 0.174 | -1.425 5.515 0.243 | -1.924 26.795 0.442 |
LA

c9 | 2.976 | -0.734 1.109 0.061 | -1.608 7.021 0.292 | -0.512 1.899 0.030 |
c10 | 3.195 | -2.392 11.774 0.561 | 0.800 1.737 0.063 | 1.494 16.144 0.219 |

Variables
A.

Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2


Ar | -0.800 19.767 0.640 | 0.492 9.872 0.242 | 0.018 0.036 0.000 |
Fr | -0.507 7.928 0.257 | 0.604 14.838 0.364 | 0.084 0.769 0.007 |
Ang | -0.321 3.180 0.103 | 0.833 28.297 0.695 | 0.364 14.413 0.133 |
Phi | -0.568 9.956 0.323 | 0.409 6.811 0.167 | -0.078 0.664 0.006 |
Math | 0.840 21.756 0.705 | 0.493 9.900 0.243 | -0.030 0.100 0.001 |
PC | 0.788 19.173 0.621 | 0.488 9.689 0.238 | 0.214 4.976 0.046 |
SVT | 0.768 18.209 0.590 | 0.502 10.271 0.252 | 0.017 0.032 0.000 |
ES | -0.031 0.030 0.001 | -0.503 10.324 0.253 | 0.853 79.011 0.728 |

21
1.4. EXEMPLE : ACP AVEC R

individus Axe 1 Contribution Cos2 Axe 2 Contribution Cos2


1 -2.571 13.604 0.798 -0.713 1.380 0.061
2 3.056 19.220 0.763 0.108 0.032 0.001
3 2.395 11.798 0.846 -0.146 0.058 0.003
4 1.037 2.211 0.584 0.506 0.695 0.139
5 -3.098 19.750 0.915 0.179 0.087 0.003
6 2.028 8.461 0.778 -0.581 0.917 0.064
7 -0.411 0.348 0.020 2.141 12.464 0.553
8 1.206 2.994 0.174 -1.425 5.515 0.243
9 -0.734 1.109 0.061 -1.608 7.021 0.292
10 -2.392 11.774 0.561 0.800 1.737 0.063
11 -1.593 5.223 0.491 0.889 2.146 0.153
12 1.284 3.394 0.125 3.161 27.142 0.759
13 -0.235 0.113 0.022 -0.824 1.843 0.266
14 0.031 0.002 0.000 -3.617 35.522 0.847
15 -0.002 0.000 0.000 1.129 3.458 0.421
Coordonnées des individus :
Les coordonnées des individus dans le repère des composantes principales sont données par
la table individus.
La coordonnée de l’individu i sur la composante s est Fs (i), par exemple F1 (c1) = −2.571

II
Contribution des individus :
On rappelle que la contribution d’un individu d’un individu i par la composante s est Contribs (i) =
MN
Fs (i)2
pλs
ou p est le nombre d’individus.
Plus la contribution est grande, plus la représentation est meilleure.

Qualité de représentation des individus :


LA

On rappelle que la qualité de représentation d’un individu i par la composante s est

Fs (i)2
QLTs (i) = P 2
= cos(θ)2
F
t t (i)
A.

ou θ est l’angle entre la droite (Oi) est l’axe s.


Plus la qualité est proche de 1, l’individu est proche de l’axe s.

Pour connaître la qualité de représentation d’un individu, on suit les règles énoncées dans
le tableau ci-contre :

Valeur de cos2 (θ) Signification


≈1 Très bonne représentation
≥ 0.5 Représentation acceptable
< 0.5 Mauvaise représentation
En sommant les cos2 et en adoptant les règles dans le tableau précédent on conclut que
tous les individus, à l’exception des individus 8, 9, 13 et 15, sont bien représentés dans le

22
1.4. EXEMPLE : ACP AVEC R

plan principal.

Les individus bien Les individus bien Les individus bien


Rep. dans l’axe 1 Rep. dans l’axe 2 Rep. dans le plan
1, 2, 3, 4, 5, 6, 10, 7, 12, 14, 1, 2, 3, 4, 5, 6, 7,
10, 11, 12, 14

Les individus qui participent le plus à la formation du premier axe sont ceux qui ont une
contribution supérieure à la moyenne c.-à-d. supérieure à 100
15
% = 6.66667 (res.pca$call)

Les individus contribuent Les individus contribuent


à la formation de l’axe 1 à la formation de l’axe 2
1, 2, 3, 5, 6, 10 7, 12, 14,

Code R 1.4.15

II
> fviz_contrib(res.pca, choice = "ind", axes = 1, top = 15)
> fviz_contrib(res.pca, choice = "ind", axes = 2, top = 15)
MN
LA
A.

Graphique des individus. Les individus similaires sont groupés ensemble.

Code R 1.4.16

> plot(res.pca, choix = "ind", autoLab = "yes")

Les individus qui contribuent le plus à la formation de l’axe 1 se caractérisent par des résul-
tats meilleurs dans l’une des deux disciplines et moyens dans l’autre.

23
1.4. EXEMPLE : ACP AVEC R

Or les individus qui contribuent à la formation de deuxième axe se caractérisent par des ré-
sultats homogènes dans toutes les matières, bonnes ou moyennes.

II
Pour l’axe 1 on constate que les points individus 1, 2, 3, 5 et 10 sont éloignés de l’origine
MN
ce qui justifie leur bonne qualité de représentation, ainsi ils sont très proches de cet axe ce
qui justifie leur importante contribution à la formation de cet axe.
De même pour l’axe 2 les individus 14, 7 et 12 sont très éloignés de l’origine donc ils ont
une bonne qualité de représentation dans cet axe, ils sont ainsi proches de cet axe chose qui
LA

signifie leur forte contribution à la formation de cet axe.


A.

Les deux individus 2 et 5 s’opposent par rapport au deuxième axe ce qui traduit que leurs
résultats des différentes matières le sont.
Les trois individus 1, 5 et 10 sont proches, ils ont alors une ressemblance réelle de point de
vue des variables, ces trois individus se caractérisent par des bons résultats aux disciplines
littéraires et moyens aux disciplines scientifiques, il en est de même pour le groupe {2, 3, 6}
mais celui-là a par contre des résultats meilleurs en math, PC et SVT et moyens en arabe,

24
1.4. EXEMPLE: ACP AVEC R

français et anglais.

La qualité de représentation des individus sur la carte de l’ACP s’appelle cos2 (cosinus
carré) . Vous pouvez accéder au cos2 comme suit :

Code R 1.4.17

head(res.pca$ind$coord, 4)
library("corrplot")
corrplot(res.pca$ind$cos2, is.corr=FALSE)

II
MN
LA

De même que pour les individus on n’interprète que les variables qui sont bien représen-
A.

tées.
Pour cela on étudie la qualité de représentation de chaque variable ainsi que leur contribution
à la formation des deux axes principaux, on a alors le tableau suivant fournie par L’ACP :

Code R 1.4.18

> summary(res.pca)

Variables
Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
Ar | -0.800 19.767 0.640 | 0.492 9.872 0.242 | 0.018 0.036 0.000 |
Fr | -0.507 7.928 0.257 | 0.604 14.838 0.364 | 0.084 0.769 0.007 |
Ang | -0.321 3.180 0.103 | 0.833 28.297 0.695 | 0.364 14.413 0.133 |
Phi | -0.568 9.956 0.323 | 0.409 6.811 0.167 | -0.078 0.664 0.006 |
Math | 0.840 21.756 0.705 | 0.493 9.900 0.243 | -0.030 0.100 0.001 |
PC | 0.788 19.173 0.621 | 0.488 9.689 0.238 | 0.214 4.976 0.046 |

25
1.4. EXEMPLE : ACP AVEC R

SVT | 0.768 18.209 0.590 | 0.502 10.271 0.252 | 0.017 0.032 0.000 |
ES | -0.031 0.030 0.001 | -0.503 10.324 0.253 | 0.853 79.011 0.728 |

On résume ces résultats dans les deux sous tableaux suivants :

Les variables bien Les variables bien Les variables bien


Rep. dans l’axe 1 Rep. dans l’axe 2 Rep. dans le plan
Ar, M ath, P C, SV T Ang Ar, F r, Ang, M ath, P C, SV T

Les variables qui contribuent le plus à la formation sont ceux qui ont une contribution supé-
rieure à la moyenne c.-à-d. supérieure à 1008
% = 12.5 (summary(res.pca$eig))

Les variables contribuent Les variables contribuent


à la formation de l’axe 1 à la formation de l’axe 2
Ar, M ath, P C, SV T Ang, (F r!)

II
Code R 1.4.19

> fviz_contrib(res.pca, choice = "var", axes = 1, top = 8)


MN
> fviz_contrib(res.pca, choice = "var", axes = 2, top = 8)
LA
A.

La qualité de représentation des variables sur la carte de l’ACP s’appelle cos2 (cosinus
carré) . Vous pouvez accéder au cos2 comme suit :

Code R 1.4.20

head(res.pca$ind$coord, 4)
library("corrplot")
corrplot(res.pca$var$cos2, is.corr=FALSE)

26
1.4. EXEMPLE : ACP AVEC R

II
MN
LA
A.

Le cercle de corrélation résume clairement les résultats décrits précédemment.

Code R 1.4.21

> plot(res.pca, choix = "var", autoLab = "yes")


ou bien
> fviz_pca_var(res.pca, col.var = "cos2",
+ gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
+ repel = TRUE # Évite le chevauchement de texte )

Le cercle des corrélations montre que les deux variables phi et ES (éducation sportive)
sont mal représentées dans le plans principales car ils sont éloignées du cercle et que toutes
les autres variables sont bien représentées dans ce plan.

On peut résumer les résultats de contributions des individus et des variables à la formation

27
1.4. EXEMPLE : ACP AVEC R

de ces axes dans le tableau suivant :

II
Contribution pour l’axe 1 Contribution pour l’axe 2
Lesvariables Ar, M ath, P C, SV T Ang
Lesindividus 1, 2, 3, 5, 10 7, 12, 14
MN
Chaque individus de l’ensemble { 1, 2, 3, 5, 10} a soit des résultats meilleures en arabe et moyennes en math , PC et SVT soit l’inverse, et
ils ont en générale des bons résultats en une discipline et moyenne à l’autre, par contre, les individus 7 12 14 ont des résultats homogènes
dans toutes les matières et la note d’anglais est la plus fortes pour le 7 et le 12 (resp. 16 et 17.5)
De ces constatation on peut dire que l’axe 1 correspond aux étudiants qui sont soit littéraires soit scientifique et l’axe 2 correspond à ceux
qui ont des scores presque identique dans tous les modules.
LA

Les trois variables Math, PC et SVT sont très corrélées entre elles, la corrélation étant positive ce qui justifie que les trois variables
agissent dans le même sens pour les individus c.-à-d. qu’une bonne note dans l’un de ces trois modules s’accompagne par des bonnes notes
aux deux autres et inversement.

L’examen de la matrice des corrélations ci-dessous nous indique que les deux disciplines littéraire et scientifique sont corrélées négati-
vement et les modules de même discipline sont corrélés positivement, ce qui signifie que les deux groupes de modules s’opposent pour les
A.

individus qui les décrivent.

Code R 1.4.22

> mat.cor=round(cor(note),2)
> mat.cor

Ar Fr Ang Phi Math PC SVT ES


Ar 1.00 0.67 0.62 0.63 -0.44 -0.39 -0.30 -0.19
Fr 0.67 1.00 0.65 0.15 -0.15 -0.04 -0.20 -0.28
Ang 0.62 0.65 1.00 0.51 0.16 0.19 0.16 -0.11
Phi 0.63 0.15 0.51 1.00 -0.27 -0.26 -0.13 -0.18
Math -0.44 -0.15 0.16 -0.27 1.00 0.87 0.85 -0.30
PC -0.39 -0.04 0.19 -0.26 0.87 1.00 0.80 -0.10
SVT -0.30 -0.20 0.16 -0.13 0.85 0.80 1.00 -0.22
ES -0.19 -0.28 -0.11 -0.18 -0.30 -0.10 -0.22 1.00

28
Chapitre 2

Analyse Factorielle des


Correspondances (AFC)

2.1 Introduction
L’analyse des correspondances (AFC ou ACM) étudie les proximités entre individus décrits
par deux ou plusieurs variables qualitatives ainsi que les proximités entre les modalités de
ces variables.
C’est une extension de l’analyse en composantes principales pour analyser l’association entre
deux variables qualitatives (ou catégorielles).

II
MN
Les données

Tableau de contingence = Croisement de deux variables qualitatives X et Y

But
LA

— Comprendre les concepts de l’AFC


— Connaître les principes de calcul
— Savoir interpréter les résultats
L’analyse factorielle peut être vu comme une ACP (Analyse en Composantes Principales)
A.

mais qui utilise une métrique χ2 pondérée.

Remarque 2.1.1 (Pourquoi parle-t-on de "Correspondances" ?)

— Variable numérique : Corrélation


— Variable nominale : Correspondances

Remarque 2.1.2 (Factorielle)

— Décomposition du tableau de contingence en une somme de tableaux qui


sont le produit de facteurs simples.

— L’AFC consiste à remplacer un tableau de nombres difficile à analyser par une série de
tableaux plus simples qui sont une bonne approximation de celui-ci.
— Les tableaux sont simples car ils sont exprimables sous forme de graphiques.
— Factorielle = mise en facteur du tableau initial.

29
2.2. TABLEAU DE CONTINGENCE

— Correspondance = corrélation pour des variables qualitatives.

II
MN
2.2 Tableau de contingence
L’AFC s’applique au tableau de contingence.

Définition 2.2.1
LA

— Tableau de contingence = tableau statistique permettant de présenter deux


séries statistiques simultanément et de manière croisée.
— Exemple : dans une entreprise de 200 salariés, on étudie les variables X=âge
A.

et Y=salaires.

30
2.3. TABLEAU DES FRÉQUENCES

Exemple 2.2.2

[800, 1000] [1000, 1200]


X = Age \Y = Salaire Total
(j = 1) (j = 2)
[20, 22[(i = 1) 14 6 20
[22, 24[(i = 2) 28 46 74
[24, 26[(i = 3) 20 86 106
Total 62 138 200

— X et Y sont des variables continues (regroupées en classes)


— On note I le nombre de modalités de X(ici I=3) et J le nombre de modalités
de Y(ici J=2).

[800, 1000] [1000, 1200]


X = Age \Y = Salaire Total
(j = 1) (j = 2)
[20, 22[(i = 1) 14 6 20

II
[22, 24[(i = 2) 28 46 74
[24, 26[(i = 3) 20 86 106
MN
Total 62 138 200

— i désigne l’indice d’une ligne et j désigne l’indice d’une colonne .


LA

— ni,j désigne l’effectif partiel. Exemple : n1,2 salariés sont âgés entre 20 et 22 ans et ont
un salaire compris entre 1000 et 1200
— ni,• l’effectif marginal de X (eff. total en lignes)
— n•,j l’effectif marginal de Y (eff. total en colonnes)
Exemple : n2,• = 74 salariés sont âgés entre 22 et 24 ans
A.

n•,1 = 62 salariés ont un salaire ente 800 et 1000


— n = n•,• effectif total.

2.3 Tableau des fréquences


Définition 2.3.1 (Fréquence)
nij Ef f ectif de lacellule(i,j)
fij = n•,•
= Ef f ectif total

31
2.3. TABLEAU DES FRÉQUENCES

1... j ...J
1
.. ..
. .
nij
i ... fij = n
... fi•
.. ..
. .
I
f•j

2.3.2 Tableau des fréquences lignes


Définition 2.3.3 (Fréquence lignes (ou coordonnées des profil-lignes))
nij fij Ef f ectif
f lij = ni•
= fi•
= Ef f ectif total de la ligne i

II
Définition 2.3.4 (coordonnées du profil-ligne moyen)
n•j
MN
f•j = n••

1... j ...J
1
LA

.. ..
. .
nij fij
i ... f lij = ni•
= fi•
...
.. ..
. .
I
A.

2.3.5 Tableau des fréquences colonnes


Définition 2.3.6 (Fréquence lignes (ou coordonnées des profil-colonne))
nij fij Ef f ectif
f cij = n•j
= f•j
= Ef f ectif total de la colonne j

Définition 2.3.7 (Coordonnées du profil-colonne moyen)


ni•
fi• = n••

32
2.3. TABLEAU DES FRÉQUENCES

1... j ...J
1
.. ..
. .
nij fij
i ... f cij = n•j
= f•j
...
.. ..
. .
I

2.3.8 Distances entre profils

Définition 2.3.9 (Distance entre deux lignes. Métrique du χ2 )

X (f l1j − f l2j )2
dχ2 (L1 , L2 ) =
j f•j

II
Définition 2.3.10 (Distance entre deux lignes. Métrique Euclidienne)
MN
X
dχ2 (L1 , L2 ) = (f l1j − f l2j )2
j
LA

Définition 2.3.11 (Taux de liaison)

Représente les écarts entre les valeurs théoriques en cas d’indépendance et les va-
leurs observées
fij − fi• f•j
tij =
A.

fi• f•j

2.3.12 Principes généraux de l’AFC : Distance entre deux variables no-


minales
Représente les écarts entre les valeurs théoriques en cas d’indépendance et les valeurs
observées

33
2.4. PRINCIPES GÉNÉRAUX DE L’AFC : MÉTHODOLOGIE

Définition 2.3.13

Distance entre deux lignes. Métrique du χ2

X (f l1j − f l2j )2
dχ2 (L1 , L2 ) =
j f•j

2
X (fij − fi• f•j )2
χ =
ij fi• f•j
Cette statistique vaut 0 ou proche 0 si les données observées vérifient le modèle
d’indépendance.

2.4 Principes généraux de l’AFC : Méthodologie

II
L’analyse factorielle des correspondances vise à rassembler en un nombre réduit de di-
mensions la plus grande partie de l’information initiale en s’attachant non pas aux valeurs
MN
absolues mais aux correspondances entre les variables, c’est-à-dire aux valeurs relatives.
Remarque 2.4.1

L’AFC offre la particularité (contrairement aux ACP) de fournir un espace de repré-


sentation commun aux variables et aux individus.
LA

Il s’agira d’analyser les deux nuages de points pondérés c’est à dire le nuage des
profil-lignes (les lignes de la matrice L) et le nuage des profil-colonnes (les colonnes
de la matrice C).
On va donc analyser les lignes et les colonnes de deux matrices différentes.
A.

Pour cela, il faut projeter "au mieux" :


— les profil-lignes
— les profil-colonnes

nij
— Matrice des fréquences (r lignes, s colonnes (r ≤ s) : fij = n•,•
— Matrice de liaison : Mij = f√
ij −fi• f•j
(Mij = √ fij )
fi• f•j fi• f•j
— V = M ′ M (matrice basse) ou M M ′ (matrice haute) et X ′ est la transposée de la
matrice X.
— Soit D, la diagonalisation de la matrice V . Recherche des valeur propres de V . Det(V −
λI) = 0
— Projection de M par D : Produit matricielle : AF C = M ′ D

2.4.2 Commande chisq.test


La commande chisq.test permet de réaliser l’ensemble des tests de χ2 .

34
2.5. EXEMPLE : AFC AVEC R

Cette commande renvoie des valeurs qui permettent de valider ou non l’hypothèse nulle
(cf. ci-dessus χ2 de conformité et d’indépendance).

Elle permet de récupérer des informations complémentaires à un test :


— X-squared : valeur du Chi-deux calculée, cette valeur rapportée manuellement sur une
table permet de savoir si on peut valider l’hypothèse nulle et avec quel risque de se
tromper.
— df : degrés de liberté : cette valeur est nécessaire avec X-squared pour retrouver la
distance critique sur la table de khi-deux.
— p-value : probabilité d’obtenir nos résultats observés. Plus cette valeur est petite, plus
l’hypothèse nulle doit être rejetée.
khi_test=chisq.test(tableau) : permet de récupérer récupérer les valeurs compilées dans
le test :
— #résultats attendus/théoriques
khi_test$expected

II
— # résultats observés
khi_test$observed
MN
— # différence entre résultats attendus et observés
khi_test$residual

2.5 Exemple : AFC avec R


LA

— Prix Nobel

L’analyse de l’AFC permet de répondre aux questions :


— Y a-t-il des pays qui se ressemblent, c’est-à-dire dans lesquels les résultats (en pourcen-
A.

tages) des différentes lignes sont voisins ? Y a-t-il au contraire des pays qui s’opposent
(résultats très différents) ?
— Y a-t-il des domaines qui se ressemblent, c’est-à-dire dans lesquels les résultats (en
pourcentages) des différentes colonnes sont voisins ? Y a-t-il au contraire des domaines
qui s’opposent (résultats très différents) ?

35
2.5. EXEMPLE : AFC AVEC R

1- Importer la table Nobel.txt dans R


library(ggplot2)
library(factoextra)
library(FactoMineR)
noble=read.table(’Bureau//AnDonn//Nobel.txt’, header=TRUE, row.names=1)
noble

Chimie Economie Litterature Medecine Paix Physique Mathematiques


Allemagne 24 1 8 18 5 24 1
Canada 4 3 2 4 1 4 1
France 8 3 11 12 10 9 11
GB 23 6 7 26 11 20 4
Italie 1 1 6 5 1 5 1
Japon 6 0 2 3 1 11 3
Russie 4 3 5 2 3 10 9

II
USA 51 43 8 70 19 66 13
Afrique 1 0 5 3 8 2 1
MN
Amerique 56 47 18 78 25 70 15
Asie 17 2 10 7 16 19 7
Europe 94 26 79 110 51 103 34
Oceanie 3 0 0 9 0 2 2
LA

Hypothèse nulle - hypothèse alternative


L’hypothèse nulle notée H0 est l’hypothèse que l’on désire contrôler : elle consiste à dire
qu’il n’existe pas de différence entre les paramètres comparés ou que la différence observée
A.

n’est pas significative et est due aux fluctuations d’échantillonnage.


Cette hypothèse est formulée dans le but d’être rejetée.
L’hypothèse alternative notée H1 est la "négation" de H0 , elle est équivalente à dire ńH0 est
fausse". La décision de rejeter H0 signifie que H1 est réalisée ou H1 est vraie.

2- Distance chisq.test
chisqNoble < − chisq.test (noble)
chisqNoble

Pearson’s Chi-squared test

data: noble
X-squared = 234.07, df = 72, p-value < 2.2e-16

Comme la p-value est très faible, on rejette l’hypothèse nulle. Les variables sont liées.

chisqNoble$observed

36
2.5. EXEMPLE : AFC AVEC R

chisqNoble$expected
chisqNoble$residuals

3- Graphique du tableaux de contingence


Le tableau de contingence peut être visualisé en utilisant les fonctions balloonplot() [pa-
ckage gplots] et mosaicplot() [package garphics] :
library("gplots")
# 1. convertir les données en tant que table
dt = as.table(as.matrix (noble))
# 2. Graphique
balloonplot(t (dt), main = "noble", xlab = "", ylab = "",
+ label = FALSE, show.margins = FALSE)
balloonplot(t (dt), dotsize=10)

II
MN
LA
A.

4- Exploration des données


mosaicplot(x, shade = TRUE) mosaicplot(t (dt), main="Titre",shade = TRUE)
L’examen de la sortie de mosaicplot() nous permet de repérer les couples de modalités
dont les effectifs sont en excès.

5- Calcul de la matrice des frequences F


F <- noble/sum(noble)
round(F*100,digit=2)

37
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

6- Vecteurs r et c des poids des lignes et des colonnes (distributions mar-


ginales)
r <- apply(F,1,sum)
round(r,digit=2)

38
2.5. EXEMPLE : AFC AVEC R

Allem Canada France GB Italie Japon Russie USA Afrique Amerique Asie Europe
0.05 0.01 0.04 0.06 0.01 0.02 0.02 0.18 0.01 0.20 0.05 0.32
c <- apply(F,2,sum)
round(c,digit=2)
Chimie Economie Litterature Medecine Paix Physique Mathematiques
0.19 0.09 0.11 0.23 0.10 0.23 0.07

II
MN
LA
A.

7- Matrice des profils-lignes L et colonnes C


La fonction sweep() permet d’appliquer des opérations sur l’ensemble d’une matrice, sur
les lignes ou sur les colonnes. Distributions conditionnelles en ligne

39
2.5. EXEMPLE : AFC AVEC R

L <- sweep(F,1,STAT=r,FUN="/")
round(L,digits=2)

Chimie Economie Litterature Medecine Paix Physique Mathematiques


Allemagne 0.30 0.01 0.10 0.22 0.06 0.30 0.01
Canada 0.21 0.16 0.11 0.21 0.05 0.21 0.05
France 0.12 0.05 0.17 0.19 0.16 0.14 0.17
GB 0.24 0.06 0.07 0.27 0.11 0.21 0.04
Italie 0.05 0.05 0.30 0.25 0.05 0.25 0.05
Japon 0.23 0.00 0.08 0.12 0.04 0.42 0.12
Russie 0.11 0.08 0.14 0.06 0.08 0.28 0.25
USA 0.19 0.16 0.03 0.26 0.07 0.24 0.05
Afrique 0.05 0.00 0.25 0.15 0.40 0.10 0.05
Amerique 0.18 0.15 0.06 0.25 0.08 0.23 0.05
Asie 0.22 0.03 0.13 0.09 0.21 0.24 0.09

II
Europe 0.19 0.05 0.16 0.22 0.10 0.21 0.07
Oceanie 0.19 0.00 0.00 0.56 0.00 0.12 0.12
MN
Distributions conditionnelles en colonne

C <- sweep(F,2,STAT=c,FUN="/")
round(C,digits=2)
Chimie Economie Litterature Medecine Paix Physique Mathematiques
LA

Allemagne 0.08 0.01 0.05 0.05 0.03 0.07 0.01


Canada 0.01 0.02 0.01 0.01 0.01 0.01 0.01
France 0.03 0.02 0.07 0.03 0.07 0.03 0.11
GB 0.08 0.04 0.04 0.07 0.07 0.06 0.04
A.

Italie 0.00 0.01 0.04 0.01 0.01 0.01 0.01


Japon 0.02 0.00 0.01 0.01 0.01 0.03 0.03
Russie 0.01 0.02 0.03 0.01 0.02 0.03 0.09
USA 0.17 0.32 0.05 0.20 0.13 0.19 0.13
Afrique 0.00 0.00 0.03 0.01 0.05 0.01 0.01
Amerique 0.19 0.35 0.11 0.22 0.17 0.20 0.15
Asie 0.06 0.01 0.06 0.02 0.11 0.06 0.07
Europe 0.32 0.19 0.49 0.32 0.34 0.30 0.33
Oceanie 0.01 0.00 0.00 0.03 0.00 0.01 0.02

40
2.5. EXEMPLE : AFC AVEC R

8- CA
Code R 2.5.1 (CA)

Fonction R : CA() [FactoMiner].


Format simplifié :
CA (X, ncp = 5, graph = TRUE)
— X : un data frame (tableau de contingence)
— ncp : nombre de dimensions à conserver dans les résultats finaux.
— graph : une valeur logique. Si TRUE le graphique est affiché.

library ("FactoMineR")
res.ca = CA (noble, ncp=2, graph = TRUE)
summary(res.ca)

II
Call:
CA(X = noble, ncp = 1, graph = TRUE)
MN
The chi square of independence between the two variables is equal to 234.0661
(p-value = 5.03391e-19 ).
LA

Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6
Variance 0.079 0.026 0.020 0.016 0.010 0.002
% of var. 51.670 17.349 13.211 10.191 6.344 1.235
Cumulative % of var. 51.670 69.019 82.230 92.421 98.765 100.000
A.

RowsError in if (nrow(res$row$coord) > nbelements) cat(paste(" (the ", nbelements, :


l’argument est de longueur nulle
De plus : Warning message:
In max(nchar(rownames(res[aux[1]][[1]]$coord))) :
aucun argument pour max ; -Inf est renvoyé
> res.ca = CA (noble, ncp=2, graph = TRUE)
> summary(res.ca)

Call:
CA(X = noble, ncp = 2, graph = TRUE)

The chi square of independence between the two variables is equal to 234.0661
(p-value = 5.03391e-19 ).

Eigenvalues

41
2.5. EXEMPLE : AFC AVEC R

Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6


Variance 0.079 0.026 0.020 0.016 0.010 0.002
% of var. 51.670 17.349 13.211 10.191 6.344 1.235
Cumulative % of var. 51.670 69.019 82.230 92.421 98.765 100.000

Rows (the 10 first)


Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
Allemagne | 10.819 | -0.012 0.009 0.001 | -0.398 31.555 0.773 |
Canada | 1.039 | -0.195 0.596 0.453 | 0.061 0.175 0.045 |
France | 13.497 | 0.447 10.579 0.618 | 0.300 14.191 0.279 |
GB | 3.204 | -0.053 0.228 0.056 | -0.157 5.896 0.488 |
Italie | 6.722 | 0.364 2.195 0.258 | -0.085 0.352 0.014 |
Japon | 6.873 | 0.113 0.277 0.032 | -0.054 0.185 0.007 |
Russie | 16.290 | 0.372 4.125 0.200 | 0.612 33.241 0.541 |
USA | 23.119 | -0.351 27.553 0.940 | 0.075 3.751 0.043 |

II
Afrique | 18.448 | 0.882 12.860 0.550 | 0.048 0.113 0.002 |
Amerique | 15.898 | -0.262 17.602 0.873 | 0.071 3.807 0.063 |
MN
Columns
Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
Chimie | 8.717 | -0.062 0.938 0.085 | -0.151 16.474 0.501 |
Economie | 35.687 | -0.529 31.254 0.691 | 0.287 27.309 0.203 |
LA

Litterature | 34.230 | 0.517 35.514 0.819 | -0.059 1.370 0.011 |


Medecine | 15.988 | -0.167 7.983 0.394 | -0.081 5.615 0.093 |
Paix | 24.578 | 0.341 14.509 0.466 | 0.059 1.277 0.014 |
Physique | 8.109 | -0.058 0.970 0.094 | -0.029 0.712 0.023 |
A.

Mathematiques | 25.375 | 0.324 8.832 0.275 | 0.434 47.242 0.493 |

Extraire et visualiser les valeurs propres/variances


Code R 2.5.2 (get_eig, fviz_eig() et fviz_screeplot)

— get_eig() (ou get_eigenvalue()) : Extraction des valeurs propres/variances


des composantes principales.
— fviz_eig() (ou fviz_screeplot()) : Graphique des valeurs propres/variances
des composantes principales.
— get_eig() : retourne un data.frame contenant 3 colonnes : les valeurs propres,
le pourcentage de variance et le pourcentage cumulé de variance retenu par
chaque dimension..
— fviz_screeplot : retourne un graphique de type ggplot2.

42
2.5. EXEMPLE : AFC AVEC R

II
MN
LA

Nous examinons les valeurs propres pour déterminer le nombre d’axes à considérer.
A.

Les valeurs propres et la proportion des variances retenues par les différents axes peuvent
être extraites en utilisant la fonction get_eigenvalue() [package factoextra].
Les valeurs propres sont grandes pour le premier axe et petites pour l’axe suivant.
library ("factoextra")
eig.val = get_eigenvalue (res.ca)
eig.val
eigenvalue variance.percent cumulative.variance.percent
Dim.1 0.078891963 51.669765 51.66976
Dim.2 0.026489705 17.349256 69.01902
Dim.3 0.020171440 13.211150 82.23017
Dim.4 0.015559814 10.190796 92.42097
Dim.5 0.009687010 6.344442 98.76541
Dim.6 0.001885035 1.234591 100.00000
Les dimensions sont ordonnées de manière décroissante et listées en fonction de la quan-
tité de variance expliquée.
La dim.1 explique la plus grande variance, suivie de la dim.2 ...

43
2.5. EXEMPLE : AFC AVEC R

Le pourcentage cumulé expliqué est obtenu en ajoutant les proportions successives de va-
riances expliquées pour obtenir le total courant.
Par exemple, 51.669765% + 17.349256% + 13.211150% = 82.23017%, Donc environ 82.23017%
de la variance totale est expliquée par les 3 premières dimensions.

Il n’y a pas de ńrègle générależ pour choisir le nombre de dimensions à conserver pour
l’interprétation des données.
Cela dépend de la question et du besoin du chercheur. Par exemple, si vous êtes satisfait avec
80% des variances totales expliquées, utilisez le nombre de dimensions nécessaires pour y
parvenir.
Notez qu’une analyse est bonne lorsque les premières dimensions représentent une grande
partie de la variabilité.

Une autre méthode pour déterminer le nombre de dimensions est de regarder le gra-
phique des valeurs propres (scree plot), ordonnées de la plus grande à la plus petite valeur.

II
Le nombre d’axes est déterminé par le point point, au-delà duquel les valeurs propres res-
tantes sont toutes relativement petites et de tailles comparables.
MN
fviz_screeplot (res.ca, addlabels = TRUE, ylim = c(0, 60))
LA
A.

Nos données contiennent 13 lignes et 7 colonnes.

Si les données étaient aléatoires, la valeur attendue de la valeur propre pour chaque axe
serait :
1 1
= = 8.3333% en termes de lignes.
nrow(noble) − 1 12

44
2.5. EXEMPLE : AFC AVEC R

De même, l’axe moyen devrait représenter

1 1
= = 16.6667% en termes de colonnes.
ncol(noble) − 1 6

On pourra faire l’interprétation axe par axe pour les lignes et pour les colonnes.
On commence par dresser des tables où on résume d’abord les lignes et ensuite les colonnes
qui ont des contributions supérieures à la moyenne de la formation de l’axe. res.ca$row$cos2[,1 :3]

Dim 1 Dim 2 Dim 3


Allemagne 0.000674513 0.772623401 1.512257e-01
Canada 0.453026475 0.044608583 3.831397e-05
France 0.618356796 0.278518174 1.289664e-04
GB 0.056116826 0.487524332 4.380200e-02
Italie 0.257548632 0.013872019 5.253957e-04
Japon 0.031781103 0.007146844 7.131498e-01

II
Russie 0.199758812 0.540537137 2.527436e-01
MN
USA 0.940201611 0.042982153 5.808895e-03
Afrique 0.549971110 0.001628815 4.093232e-01
Amerique 0.873499107 0.063439393 5.349969e-02
Asie 0.575871453 0.001712677 1.119165e-02
Europe 0.742380349 0.108412629 1.099680e-03
LA

Oceanie 0.074845234 0.023288520 7.253623e-02

res.ca$row$coord[,1 :3]

Dim 1 Dim 2 Dim 3


Allemagne -0.01175210 -0.39774460 -0.175967791
A.

Canada -0.19483745 0.06113922 0.001791799


France 0.44711471 0.30007248 -0.006457101
GB -0.05330332 -0.15711075 0.047092823
Italie 0.36428589 -0.08454396 -0.016453412
Japon 0.11348213 -0.05381460 -0.537567962
Russie 0.37224955 0.61234190 -0.418717707
USA -0.35130816 0.07511416 0.027613695
Afrique 0.88185449 0.04799134 0.760781914
Amerique -0.26247530 0.07073538 0.064958031
Asie 0.38755769 0.02113544 0.054028210
Europe 0.18065378 -0.06903571 -0.006952916
Oceanie -0.25761095 -0.14369882 -0.253606123

res.ca$row$contrib[,1 :3]

Dim 1 Dim 2 Dim 3


Allemagne 0.009249987 31.55544586 8.110961e+00

45
2.5. EXEMPLE : AFC AVEC R

Canada 0.596380680 0.17489365 1.972664e-04


France 10.578960118 14.19100068 8.629312e-03
GB 0.227879575 5.89609184 6.956682e-01
Italie 2.194521190 0.35202691 1.750906e-02
Japon 0.276855660 0.18541906 2.429747e+01
Russie 4.124733996 33.24077767 2.041109e+01
USA 27.552773545 3.75135474 6.657846e-01
Afrique 12.860235983 0.11343224 3.743444e+01
Amerique 17.601935961 3.80726081 4.216432e+00
Asie 9.687069448 0.08580213 7.363032e-01
Europe 13.411445894 5.83290160 7.769827e-02
Oceanie 0.877957963 0.81359282 3.327824e+00

Les figures suivantes montrent les lignes qui ont des contributions considérables :
La ligne qui a une contribution considérable est celle de barre dépassant la ligne rouge.

II
fviz_contrib(res.ca, choice = "row", axes = 1, top = 13)
fviz_contrib(res.ca, choice = "row", axes = 2, top = 13)
MN
fviz_contrib(res.ca, choice = "row", axes = 3, top = 13)
LA
A.

res.ca$col$cos2[,1 :3]

Dim 1 Dim 2 Dim 3


Chimie 0.08491276 0.50062877 0.09893239
Economie 0.69090736 0.20270851 0.05991589
Litterature 0.81850567 0.01059992 0.00349798
Medecine 0.39392226 0.09303537 0.02490908
Paix 0.46570973 0.01376662 0.36927001
Physique 0.09439806 0.02326266 0.39165109
Mathematiques 0.27458551 0.49317418 0.17343531

res.ca$col$coord[,1 :3]

46
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

Dim 1 Dim 2 Dim 3


Chimie -0.06233722 -0.15136269 -0.06728685
Economie -0.52914087 0.28661399 0.15582330
Litterature 0.51650205 -0.05877768 0.03376524
Medecine -0.16680745 -0.08106516 0.04194585
Paix 0.34089271 0.05861028 0.30355129
Physique -0.05832033 -0.02895130 -0.11879225
Mathematiques 0.32360346 0.43368511 -0.25718350

res.ca$col$contrib[,1 :3]

Dim 1 Dim 2 Dim 3


Chimie 0.9382158 16.474083 4.275276
Economie 31.2537017 27.309217 10.600333
Litterature 35.5136298 1.369719 0.593590
Medecine 7.9833549 5.615373 1.974369
Paix 14.5089991 1.277336 44.994771

47
2.5. EXEMPLE : AFC AVEC R

Physique 0.9702511 0.712092 15.744042


Mathematiques 8.8318477 47.242179 21.817618

Les figures suivantes montrent les colonnes qui ont des contributions considérables :
fviz_contrib(res.ca, choice = "col", axes = 1, top = 7)+
+ theme(axis.text.x = element_text(angle=45))
fviz_contrib(res.ca, choice = "col", axes = 2, top = 7)+
+ theme(axis.text.x = element_text(angle=45))
fviz_contrib(res.ca, choice = "col", axes = 3, top = 7)+
+ theme(axis.text.x = element_text(angle=45))

II
MN
LA
A.

On résume dans le tableau suivant les lignes et les colonnes qui contribuent à la formation
de l’axe 1 dont leurs qualités de représentation (cos2 (θ)) est proche de 1 en précisant le signe
donnant le sens de la contribution.

48
2.5. EXEMPLE : AFC AVEC R

Lignes Axe 1 Colonnes Axe 1


− +

II
USA France − +
Amerique Europe Economie Litterature
MN
Asie Paix
Afrique
L’axe 1, oppose le lignes ’France’, ’Europe’, ’Asie’ et ’Afrique’ aux lignes ’USA’ et ’Amerique’.
L’axe 1, oppose les colonnes ’Litterature’ et ’Paix’ à la colonne ’Economie’.
La synthèse entre l’analyse des lignes et des colonnes associe les pays ’France’, ’Europe’, ’Asie’
LA

et ’Afrique’ aux prix nobel ’Litterature’ et ’Paix’ et les pays ’USA’ et ’Amerique’ aux prix nobel
’Economie’. (voir figure)
On résume dans le tableau suivant les lignes et les colonnes qui contribuent à la formation
de l’axe 2 dont leurs qualités de représentation (cos2 (θ)) est proche de 1 en précisant le signe
A.

donnant le sens de la contribution.


Lignes Axe 2 Colonnes Axe 2
− +
− +
Allemagne Russie
Chimie Mathematiques
France
Economie
L’axe 2, oppose le lignes ’Russie’ et ’France’ au ligne ’Allemagne’
L’axe 2, oppose les colonnes ’Mathematiques’ et ’Economie’ à la colonne ’Chimie’.
La synthèse entre l’analyse des lignes et des colonnes associe les pays ’Russie’ et ’France’ aux
prix nobel ’Mathematiques’ et ’Economie’ et ’Allemagne’ aux prix nobel ’Chimie’. (voir figure)
On résume dans le tableau suivant les lignes et les colonnes qui contribuent à la formation
de l’axe 3 dont leurs qualités de représentation (cos2 (θ)) est proche de 1 en précisant le signe
donnant le sens de la contribution.
Lignes Axe 3 Colonnes Axe 3

49
2.5. EXEMPLE : AFC AVEC R

− +
Japon Afrique − +
Russie Mathematiques Paix
Allemagne Physique

L’axe 3, oppose le lignes ’Japon’, ’Russie’ et ’Allemagne’ au ligne ’Afrique’


L’axe 3, oppose les colonnes ’Mathematiques’ et ’Physique’ à la colonne ’Paix’.
La synthèse entre l’analyse des lignes et des colonnes associe les pays ’Japon’, ’Russie’ et ’Al-
lemagne’ aux prix nobel ’Mathematiques’ et ’Physique’ et ’Afrique’ aux prix nobel ’Paix’. (voir
figure).

fviz_ca_biplot (res.ca, axes = c(1, 2), map = "colgreen", arrow = c (TRUE, TRUE), repel
= TRUE)
fviz_ca_biplot (res.ca, axes = c(1, 3), map = "colgreen", arrow = c (TRUE, TRUE), repel =
TRUE)

II
fviz_ca_biplot (res.ca, axes = c(2, 3), map = "colgreen", arrow = c (TRUE, TRUE), repel =
MN
TRUE)
LA
A.

Dans le graphique (biplot), les points qui contribuent très peu à la solution sont proches
du centre du biplot et sont relativement peu importants pour l’interprétation.
corrplot(row$cos2[,1 :3], is.corr = TRUE)
corrplot(col$cos2[,1 :3], is.corr = TRUE)

# Description de la dimension 1 par les 4 premières lignes


> head(res.desc[[1]]$row, 4)
coord
USA -0.3513082
Amerique -0.2624753
Oceanie -0.2576110

50
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

51
2.5. EXEMPLE : AFC AVEC R

II
Canada -0.1948375
> # Description de la dimension 1 par les 4 premières colonnes
MN
> head(res.desc[[1]]$col, 4)
coord
Economie -0.52914087
Medecine -0.16680745
Chimie -0.06233722
LA

Physique -0.05832033

> # Description de la dimension 2 par les lignes


> res.desc[[2]]$row
A.

coord
Allemagne -0.39774460
GB -0.15711075
Oceanie -0.14369882
Italie -0.08454396
Europe -0.06903571
Japon -0.05381460
Asie 0.02113544
Afrique 0.04799134
Canada 0.06113922
Amerique 0.07073538
USA 0.07511416
France 0.30007248
Russie 0.61234190

> # Description de la dimension 1 par les colonnes


> res.desc[[2]]$col

52
2.5. EXEMPLE : AFC AVEC R

coord
Chimie -0.15136269
Medecine -0.08106516
Litterature -0.05877768
Physique -0.02895130
Paix 0.05861028
Economie 0.28661399
Mathematiques 0.43368511

3D
library(rgl) plot3d(res.ca$row$contrib[,1], res.ca$row$contrib[,2], res.ca$row$contrib[,3],
type="s",radius=1.8,col="red")

spheres3d(res.ca$col$contrib[,1], res.ca$col$contrib[,2], res.ca$col$contrib[,3],col="blue",radius


= 1.8)

II
MN
LA
A.

53
2.5. EXEMPLE : AFC AVEC R

9- Matrice des taux de liaisons


A=(r%*%t(c))^(1/2)
#T <- (F-r%*%t(c))/(r%*%t(c))
T <- round(F/A,digit=3)
T
Chimie Economie Litterature Medecine Paix Physique Mathematiques
Allemagne 0.156 0.010 0.070 0.107 0.045 0.144 0.011
Canada 0.054 0.059 0.036 0.049 0.019 0.049 0.023
France 0.059 0.032 0.108 0.081 0.102 0.061 0.136
GB 0.137 0.052 0.056 0.142 0.091 0.109 0.040
Italie 0.013 0.019 0.106 0.060 0.018 0.060 0.022
Japon 0.069 0.000 0.031 0.032 0.016 0.116 0.058
Russie 0.039 0.043 0.066 0.018 0.041 0.090 0.149
USA 0.182 0.225 0.038 0.229 0.094 0.216 0.078

II
Afrique 0.013 0.000 0.088 0.036 0.146 0.024 0.022
Amerique 0.186 0.230 0.081 0.238 0.116 0.214 0.084
MN
Asie 0.113 0.019 0.089 0.043 0.147 0.116 0.078
Europe 0.247 0.100 0.279 0.265 0.186 0.249 0.151
Oceanie 0.044 0.000 0.000 0.121 0.000 0.027 0.050
> dt = as.table(as.matrix (T))
LA
A.

summary(T)
Chimie Economie Litterature Medecine Paix Physique Mathematiques
Min. :0.0130 Min. :0.00000 Min. :0.00000 Min. :0.0180 Min. :0.00000 Min. :0.0240 Min. :0.01100
1st Qu.:0.0440 1st Qu.:0.01000 1st Qu.:0.03800 1st Qu.:0.0430 1st Qu.:0.01900 1st Qu.:0.0600 1st Qu.:0.02300
Median :0.0690 Median :0.03200 Median :0.07000 Median :0.0810 Median :0.09100 Median :0.1090 Median :0.05800
Mean :0.1009 Mean :0.06069 Mean :0.08062 Mean :0.1093 Mean :0.07854 Mean :0.1135 Mean :0.06938
3rd Qu.:0.1560 3rd Qu.:0.05900 3rd Qu.:0.08900 3rd Qu.:0.1420 3rd Qu.:0.11600 3rd Qu.:0.1440 3rd Qu.:0.08400
Max. :0.2470 Max. :0.23000 Max. :0.27900 Max. :0.2650 Max. :0.18600 Max. :0.2490 Max. :0.15100
> summary(t(T))
Allemagne Canada France GB Italie Japon Russie
Min. :0.01000 Min. :0.01900 Min. :0.03200 Min. :0.04000 Min. :0.01300 Min. :0.0000 Min. :0.01800 Mi
1st Qu.:0.02800 1st Qu.:0.02950 1st Qu.:0.06000 1st Qu.:0.05400 1st Qu.:0.01850 1st Qu.:0.0235 1st Qu.:0.04000 1s

54
2.5. EXEMPLE : AFC AVEC R

Median :0.07000 Median :0.04900 Median :0.08100 Median :0.09100 Median :0.02200 Median :0.0320 Median :0.04300 Me
Mean :0.07757 Mean :0.04129 Mean :0.08271 Mean :0.08957 Mean :0.04257 Mean :0.0460 Mean :0.06371 Me

II
3rd Qu.:0.12550 3rd Qu.:0.05150 3rd Qu.:0.10500 3rd Qu.:0.12300 3rd Qu.:0.06000 3rd Qu.:0.0635 3rd Qu.:0.07800 3r
Max. :0.15600 Max. :0.05900 Max. :0.13600 Max. :0.14200 Max. :0.10600 Max. :0.1160 Max. :0.14900 Ma
Amerique Asie Europe Oceanie
MN
Min. :0.0810 Min. :0.01900 Min. :0.1000 Min. :0.00000
1st Qu.:0.1000 1st Qu.:0.06050 1st Qu.:0.1685 1st Qu.:0.00000
Median :0.1860 Median :0.08900 Median :0.2470 Median :0.02700
Mean :0.1641 Mean :0.08643 Mean :0.2110 Mean :0.03457
3rd Qu.:0.2220 3rd Qu.:0.11450 3rd Qu.:0.2570 3rd Qu.:0.04700
Max. :0.2380 Max. :0.14700 Max. :0.2790 Max. :0.12100
LA

library(PerformanceAnalytics)
dt1= as.table(as.matrix (t(T)))
mydata <- dt[, c(1:7)]
mydata1 <- dt1[, c(1:13)]
A.

chart.Correlation(mydata, histogram=TRUE, pch=4)


chart.Correlation(mydata1, histogram=TRUE, pch=4)

55
2.5. EXEMPLE : AFC AVEC R

> library(FactoMineR)
> NdtPCA = PCA(T, graph = TRUE)
> print(NdtPCA)
**Results for the Principal Component Analysis (PCA)**
The analysis was performed on 13 individuals, described by 7 variables
*The results are available in the following objects:

name description
1 "$eig" "eigenvalues"
2 "$var" "results for the variables"
3 "$var$coord" "coord. for the variables"
4 "$var$cor" "correlations variables - dimensions"
5 "$var$cos2" "cos2 for the variables"
6 "$var$contrib" "contributions of the variables"
7 "$ind" "results for the individuals"

II
8 "$ind$coord" "coord. for the individuals"
9 "$ind$cos2" "cos2 for the individuals"
MN
10 "$ind$contrib" "contributions of the individuals"
11 "$call" "summary statistics"
12 "$call$centre" "mean of the variables"
13 "$call$ecart.type" "standard error of the variables"
14 "$call$row.w" "weights for the individuals"
LA

15 "$call$col.w" "weights for the variables"


> NdtPCA = PCA(t(T), graph = TRUE)
> print(NdtPCA)
**Results for the Principal Component Analysis (PCA)**
A.

The analysis was performed on 7 individuals, described by 13 variables


*The results are available in the following objects:

name description
1 "$eig" "eigenvalues"
2 "$var" "results for the variables"
3 "$var$coord" "coord. for the variables"
4 "$var$cor" "correlations variables - dimensions"
5 "$var$cos2" "cos2 for the variables"
6 "$var$contrib" "contributions of the variables"
7 "$ind" "results for the individuals"
8 "$ind$coord" "coord. for the individuals"
9 "$ind$cos2" "cos2 for the individuals"
10 "$ind$contrib" "contributions of the individuals"
11 "$call" "summary statistics"
12 "$call$centre" "mean of the variables"

56
2.5. EXEMPLE : AFC AVEC R

13 "$call$ecart.type" "standard error of the variables"


14 "$call$row.w" "weights for the individuals"
15 "$call$col.w" "weights for the variables"

II
MN
> CornbT=round(cor(T),2) # line
> CornbT
Chimie Economie Litterature Medecine Paix Physique Mathematiques
LA

Chimie 1.00 0.65 0.48 0.86 0.55 0.94 0.31


Economie 0.65 1.00 0.11 0.78 0.33 0.74 0.29
Litterature 0.48 0.11 1.00 0.42 0.69 0.48 0.51
Medecine 0.86 0.78 0.42 1.00 0.45 0.81 0.28
Paix 0.55 0.33 0.69 0.45 1.00 0.50 0.42
A.

Physique 0.94 0.74 0.48 0.81 0.50 1.00 0.41


Mathematiques 0.31 0.29 0.51 0.28 0.42 0.41 1.00

> CornbT=round(cor(t(T)),2) # colonne


> CornbT
Allemagne Canada France GB Italie Japon Russie USA Afrique Amerique Asie Europe Oceanie
Allemagne 1.00 0.45 -0.34 0.84 0.21 0.68 -0.32 0.41 -0.17 0.42 0.37 0.78 0.35
Canada 0.45 1.00 -0.89 0.40 0.02 0.12 -0.46 0.81 -0.72 0.84 -0.53 0.08 0.19
France -0.34 -0.89 1.00 -0.36 0.21 0.00 0.57 -0.82 0.49 -0.85 0.32 0.13 0.09
GB 0.84 0.40 -0.36 1.00 -0.05 0.34 -0.60 0.57 -0.07 0.59 0.23 0.61 0.59
Italie 0.21 0.02 0.21 -0.05 1.00 0.12 -0.02 -0.27 0.21 -0.18 -0.06 0.68 0.03
Japon 0.68 0.12 0.00 0.34 0.12 1.00 0.44 0.18 -0.33 0.10 0.43 0.44 0.18
Russie -0.32 -0.46 0.57 -0.60 -0.02 0.44 1.00 -0.44 -0.19 -0.55 0.12 -0.25 -0.14
USA 0.41 0.81 -0.82 0.57 -0.27 0.18 -0.44 1.00 -0.62 0.99 -0.41 -0.07 0.42
Afrique -0.17 -0.72 0.49 -0.07 0.21 -0.33 -0.19 -0.62 1.00 -0.56 0.61 0.21 -0.35
Amerique 0.42 0.84 -0.85 0.59 -0.18 0.10 -0.55 0.99 -0.56 1.00 -0.44 -0.01 0.40
Asie 0.37 -0.53 0.32 0.23 -0.06 0.43 0.12 -0.41 0.61 -0.44 1.00 0.36 -0.32
Europe 0.78 0.08 0.13 0.61 0.68 0.44 -0.25 -0.07 0.21 -0.01 0.36 1.00 0.35
Oceanie 0.35 0.19 0.09 0.59 0.03 0.18 -0.14 0.42 -0.35 0.40 -0.32 0.35 1.00

> library("factoextra")
> eig.val = get_eigenvalue(NdtPCA)

57
2.5. EXEMPLE : AFC AVEC R

> eig.val
eigenvalue variance.percent cumulative.variance.percent

II
Dim.1 4.25380193 60.7685990 60.76860
Dim.2 1.30728436 18.6754908 79.44409
Dim.3 0.65994198 9.4277425 88.87183
MN
Dim.4 0.38714323 5.5306176 94.40245
Dim.5 0.22588584 3.2269405 97.62939
Dim.6 0.14592346 2.0846208 99.71401
Dim.7 0.02001921 0.2859887 100.00000
> inertie=eig.val[,2]
> inertie
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
LA

60.7685990 18.6754908 9.4277425 5.5306176 3.2269405 2.0846208 0.2859887


> fviz_eig(NdtPCA, addlabels = TRUE, ylim = c(0, 60))
> fviz_contrib(NdtPCA, choice = "ind", axes = 1, top = 13)
> fviz_contrib(NdtPCA, choice = "ind", axes = 2, top = 13)
> plot(NdtPCA, choix = "ind", autoLab = "yes")
> fviz_contrib(NdtPCA, choice = "var", axes = 1, top = 7)
> fviz_contrib(NdtPCA, choice = "var", axes = 2, top = 7)
A.

> head(NdtPCA$ind$coord, 4)
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
Allemagne -0.2928395 -0.7752210 -1.11038451 -0.94763607 -0.5248827
Canada -1.8480760 -0.7532494 -0.08966275 0.04534612 0.2698616
France -0.2351848 1.5052489 0.93682698 0.31001907 0.2208324
GB 0.1164520 -0.5315559 -0.65468342 0.08801349 -0.1808102
> library("corrplot")
> corrplot(NdtPCA$var$cos2, is.corr=FALSE)
> fviz_pca_var(NdtPCA, col.var = "cos2",gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE)
> fviz_pca_ind(NdtPCA , geom =c("point","text"),habillage = 7)
> #avec le package factoextra#
> p=fviz_pca_biplot(NdtPCA,habillage = 2)
> fviz_pca_ind(NdtPCA, pointsize = "cos2", pointshape = 21, fill = "#E7B800", repel = TRUE, addEllipses = TRUE)

58
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

2.5.3 Double PCA et CA : comparaison

59
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

60
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

61
2.5. EXEMPLE : AFC AVEC R

II
MN
LA
A.

62
Chapitre 3

Classification

3.1 Introduction
Action de ranger par classes, par catégories des choses présentant des critères en commun.
Le but de la classification automatique est de découper l’ensemble des données étudiées en
un ou plusieurs sous-ensembles nommés classes, chaque sous-ensemble devant être le plus
homogène possible. Les membres d’une classe ressemblent plus aux autres membres de la
même classe qu’aux membres d’une autre classe. Deux types de classification peuvent être
relevés : d’une part la classification (partitionnement ou recouvrement) ń à plat ż et d’autre
part le partitionnement hiérarchique. Dans les deux cas, classifier revient à choisir une mesure

II
de la similarité/dissimilarité, un critère d’homogénéité, un algorithme, et parfois un nombre
de classes composant la partition (wikipedia).
MN
Qu’est-ce que la classification ?
— La classification automatique (cluster analysis ou clustering en anglais) cherche à ré-
partir un ensemble donné de N observations en groupes (catégories, classes, clusters)
LA

de façon à regrouper les observations similaires et à séparer les observations dissimi-


laires.
— La classification permet de mettre en évidence des regroupements sans connaissance
à priori sur les données traitées.
A.

But
— Classer en groupes (les plus homogènes possibles) des unités statistiques en partant
d’un ensemble de variables.
— Identifier des groupes d’individus ayant un comportement homogène.
Définition 3.1.1

— Classification : action de constituer ou construire des classes


— Classe : ensemble d’individus (ou d’objets) possédant des traits de caractères
communs (groupe, catégorie)

Hypothèse 3.1.2

On suppose qu’une structure de classes existe au sein de la population étudiée, le


but de l’analyse est de la mettre à jour, de l’identifier.

63
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Exemple 3.1.3 (Exemples d’application)

— Classification des consommateurs


— Classification de la clientèle d’une banque
— Classification des communes françaises
— Recherche d’information : regroupement de pages web
— ...

Représentation
La représentation synthétique peut être :
— une typologie,
— une partition,
— une hiérarchie de partitions (arbre hiérarchique),
— une hiérarchie de recouvrements (pyramide).

II
MN
3.2 Classification supervisé et non supervisé
La classification automatique consiste à regrouper divers objets (les individus) en sous-
ensembles d’objets (les classes). Elle peut être : supervisée et non supervisée :
LA

Classification Supervisé
— Essayer de prédire une information spécifique
— Disposer d’un modèle (training set) avec des étiquettes(labels)
— On peut mesurer la précision directement
A.

Classification non supervisé


— Essayer de comprendre les données
— Chercher une structure ou des modèles communs
— N’exige pas des données avec des labels
— L’évaluation est indirecte

Définition 3.2.1 (Classement)

À partir d’exemples d’objets répartis en groupes, construire un algorithme qui dé-


termine le groupe adapté pour un nouvel objet.

64
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Collision Français et Anglais

Français Anglais
Classification Clustering
Classement Classification

Opposition
— supervisé (classement) : groupes fixés, exemples d’objets de chaque groupe
— non supervisé (classification) : on ne connaît pas de groupe

Différence entre les deux types d’apprentissage

Classification Supervisé
— On dispose d’éléments déjà classés

II
— Exemple : articles en rubrique cuisine, sport, culture...
On veut classer un nouvel élément
MN
Attribuer un nom parmi cuisine, sport, culture...

Classification non supervisé


— On dispose d’éléments non classés
LA

— Exemple : une fleur


On veut les regrouper en classes
Si deux fleurs ont la même forme, elles sont en rapport avec une même plante corres-
pondante.
A.

3.2.2 Les mesures de proximité sur un ensemble


On appelle similarité ou dissimilarité, toute application à valeurs numériques qui permet
de mesurer le lien entre les individus d’un même ensemble ou entre les variables.

Définition 3.2.3

Un indice de similarité sur I est une application Sim : I × I → R+ ayant la pro-


priété : ∀x ∈ I, ∀y ∈ I avec x 6= y
— P (1) : Sim(x, y) = Sim(y, x)
— P (2) : Sim(x, x) = Sim(y, y) = Simmax > Sim(x, y)

65
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Définition 3.2.4

Un indice de dissimilarité sur I est une application Diss : I × I → R+ ayant la


propriété : ∀x ∈ I, ∀y ∈ I avec x 6= y
— P (3) : Diss(x, y) = Diss(y, x)
— P (4) : Diss(x, x) = 0

Définition 3.2.5 (Partition)

Une partition de D est un ensemble de parties de D tel que :


— aucune partie n’est vide.
— les parties sont disjointes deux à deux.
— l’union des parties est D.
En classification, les parties sont appelées les classes.

3.2.6 Ordre partiel sur les partitions


II
MN
Une partition est plus fine qu’une autre si chaque partie de la plus fine est incluse dans
une partie de la moins fine.

Définition 3.2.7 (Classification hiérarchique)


LA

Une classification hiérarchique de D est un ensemble de partitions totalement or-


données de D, dont la partition la plus fine est l’ensemble des singletons et la plus
grossière réduite à D tout entier.
A.

3.2.8 Principales méthodes d’apprentissage non-supervisée


— k-moyennes
— Regroupement hiérarchique (CAH)

3.2.9 Principales méthodes d’apprentissage supervisée


— Arbres de classification et de régression
— K-NN (en anglais "k nearest neighbors" : knn) "k plus proches voisins"

Dans quel cas utiliser la classification ?


— Grand volume de données
— Besoin de partitionner en sous-ensembles homogènes
— Dans de nombreux domaines : sciences humaines, médecine, marketing ...

66
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

3.2.10 Comparaison avec l’analyse factorielle

II
MN
LA
A.

67
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Algorithme 3.2.11 (K-NN)

On donne :
— X, un ensemble de données,
— K, le nombre des plus proches voisins de cet ensemble de données à retrouver,
— x l’ensemble de données à traiter,
— L’idée est de chercher x1 · · · xk les K plus proches voisins de x dans X et de
retourner.
— L’algorithme des k plus proches voisins est souvent utilisé dans les méthodes
d’apprentissage supervisé pour le raisonnement à partir de cas. La phase d’ap-
prentissage consiste à stocker les exemples de cas résolus. Le classement de
nouveaux cas s’opère en calculant la distance entre les critères de description
des données du cas à traiter et ceux des exemples de la mémoire d’apprentis-
sage.

II
Algorithme 3.2.12 (K-NN)
MN
# fonction qui va retourner la liste des k kvoisins
# les plus proches d’un élément du plus proche au plus lointain.
fonction k_plus_proches_voisins,
paramètres: liste des objets connus
nouvel objet
k: nombre de voisins
Pour tous les objets connus calculer la distance entre objet connu et nouvel objet
LA

ajouter dans une liste ’liste_distance’: la distance et le type de l’objet


(son étiquette) ranger liste_distance dans l’ordre croissant des distances
retourner la liste de 0 à k-1

## predire à quel groupe (étiquette) appartient nouvel objet


fonction predire,
paramètres: liste des objets connus
A.

nouvel objet
k: nombre de voisins
kppv = k_plus_proches_voisins(liste objets connus,nouvel objet, k)
initialiser compteur_etiquette à [0] * nombre d’étiquettes différentes
(liste donc de 0)
pour tous les éléments de kppv
pour i de 0 au nombre d’étiquettes-1
si étiquette de l’élément égal à étiquette[i]
ajouter 1 à compteur_etiquette[i]
renvoyer (etiquette[index_maxi(compteur_etiquette)])

3.2.13 Exemple avec R


Afin de travailler sur un exemple, nous allons utiliser un jeu de données relativement
connu dans le monde du machine learning : le jeu de données "iris".

En 1936, Edgar Anderson a collecté des données sur 3 espèces d’iris : "iris setosa", "iris
virginica" et "iris versicolor".

68
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Le jeu de données IRIS est constitué de 150 données. 150 fleurs (des iris) sont décrites par
5 variables. L’une d’elles est catégorielle et décrit le type d’iris (setosa, versicolor, virginica)
est la variable d’intérêt.

Les 4 autres, Sepal.Length, Sepal.Width, Petal.Length et Petal.Width sont les descripteurs


dont on espère qu’ils sont prédictifs de la variable d’intérêt.

II
(a) iris setosa (b) iris virginica (c) iris versicolor
MN
LA
A.

Pour chaque iris étudié, Anderson a mesuré (en cm) :


— la largeur des sépales
— la longueur des sépales
— la largeur des pétales
— la longueur des pétales
Pour chaque iris mesuré, Anderson a aussi noté l’espèce ("iris setosa", "iris virginica" ou
"iris versicolor")

69
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Données
# Chargement bibliothèque library(knitr)
library(class)
library(tidyverse)
library(GGally)
# Premières rangées
head(iris)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species


1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

Visualisation de 2 variables
II
MN
plot(iris\$Petal.Length, iris\$Petal.Width, pch=21, bg=c("red","green3","blue")
[unclass(iris\$Species)], main="Les données Iris de Edgar Anderson")\\
legend(x = "topleft", legend = levels(iris\$Species), col=c("red","green3","blue"),
pch = 19)
LA
A.

70
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Nous obtenons des "nuages" de points, on remarque ces points sont regroupés par espèces
d’iris (sauf pour "iris virginica" et "iris versicolor", les points ont un peu tendance à se mélan-
ger).

Imaginez maintenant qu’au cours d’une promenade vous trouviez un iris, n’étant pas un
spécialiste, il ne vous est pas vraiment possible de déterminer l’espèce.
Vous êtes capables de mesurer la longueur et la largeur des pétales de cet iris.
Partons du principe qu’un pétale fasse 0,5 cm de large et 2 cm de long.
Plaçons cette nouvelle donnée sur notre graphique :
points(2.0, 0.5, pch=10, col="black", cex=2)
il y a de fortes chances que votre iris soit de l’espèce "iris setosa" (voir figure). Il est possible

II
MN
LA
A.

de rencontrer des cas plus difficiles, par exemple : largeur du pétale = 0,75 cm ; longueur du
pétale = 2,5 cm.

Dans ce genre de cas, il peut être intéressant d’utiliser l’algorithme des "k plus proches
voisins" :
— on calcule la distance entre notre point (largeur du pétale = 0,75 cm ; longueur du
pétale = 2,5 cm) et chaque point issu du jeu de données "iris" (à chaque fois c’est un
calcul de distance entre 2 points tout ce qu’il y a de plus classique)
— on sélectionne uniquement les k distances les plus petites (les k plus proches voisins)
— parmi les k plus proches voisins, on détermine quelle est l’espèce majoritaire. On asso-

71
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

cie à notre "iris mystère" cette "espèce majoritaire parmi les k plus proches voisins"

II
MN
Classification : knn de R
LA

Usage
kNN(form, train, test, norm = T, norm.stats = NULL, ...)
Arguments
— form : Un objet la forme fonctionnelle du modèle de classification.
A.

— train : Les données à utiliser comme ensemble de formation.


— test : L’ensemble de données pour lequel nous voulons obtenir la classification k-NN,
c’est-à-dire l’ensemble de test.
— norm : Un booléen indiquant si les données d’entraînement doivent être préalablement
normalisées avant d’obtenir les prédictions k-NN (par défaut TRUE).
— norm.stats : Cet argument permet la normalisation des données. Par défaut scale().
Pour k=3
D’après l’algorithme des "k plus proches voisins", notre "iris mystère" appartient à l’espèce
"setosa".
library("class")
new_iris = c(Sepal.Length = 1.5, + Sepal.Width = 3.14, + Petal.Length = 2.5, + Petal.Width
= 0.75)
iris[151,] = c(new_iris,NA)
spec_new_iris = knn(train = iris[1 :150,1 :4], + test = iris[151,1 :4], + cl = iris[1 :150,5],
+ k = 3)

72
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

print(spec_new_iris)
[1] setosa
Levels : setosa versicolor virginica
On obtient le même résultat :
— train contient la partie du data frame utilisé pour l’apprentissage (les 150 iris de la
base, décrits par les 4 premières colonnes/variables)
— test contient les descripteurs de notre nouvel iris
— cl contient les valeurs de la variable d’intéret pour notre échantillon d’apprentissage
(Species)
— k est le nombre de voisins (le paramètre de l’algorithme, ici, 3)

Histogramme par facteur


Lors de l’analyse de jeux de données, vous serez amené à réaliser un histogramme par
facteur (c’est-à-dire, en fonction de différents niveaux d’une variable qualitative qui divise le

II
jeu de données en sous-groupes). Par exemple :

# Some minor changes in the data set


MN
iris2 <- iris %>%
rename(‘Sepal length‘=Sepal.Length,
‘Sepal width‘=Sepal.Width,
‘Petal length‘=Petal.Length,
‘Petal width‘=Petal.Width) %>%
LA

mutate(Species=fct_recode(Species, "Setosa"="setosa",
"Versicolor"="versicolor",
"Virginica"="virginica"))
# Histogram for each species
A.

iris2 %>%
gather(Attributes, Value, 1:4) %>%
ggplot(aes(x=Value, fill=Attributes)) +
geom_histogram(colour="black") +
facet_wrap(~Species) +
theme_bw() +
labs(x="Values", y="Frequency",
title="Iris data set",
subtitle="Histogram for each species") +
theme(legend.title=element_blank(),
legend.position="bottom")

Diagramme de densité pour chaque espèce


# Density plot for each species
iris2 %>%

73
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

gather(Attributes, value, 1:4) %>%


ggplot(aes(x=value, fill=Species)) +
geom_density(colour="black", alpha=0.5) +

II
facet_wrap(~Attributes, scales="free_x") +
labs(x="Values", y="Density",
MN
title="Iris data set",
subtitle="Density plot for each attribute") +
theme_bw() +
theme(legend.position="bottom",
legend.title=element_blank())
LA
A.

Le box-plot ou la fameuse boîte à moustache


Box-plot que l’on appelle aussi boîte à moustache pour sa forme originale. Ce graphique
tout simple permet de résumer une variable de manière simple et visuel, d’identifier les
valeurs extrêmes et de comprendre la répartition des observations. Nous vous proposons
quelques détails sur ce graphique afin de l’utiliser simplement.

74
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Tableau de données en ACP

Comment est construit un box-plot


Un box-plot est un graphique simple com-
posé d’un rectangle duquel deux droites
sortent afin de représenter certains élé-
ments des données.

— La valeur centrale du graphique est la médiane (il existe autant de valeur supérieures
qu’inférieures à cette valeur dans l’échantillon).
— Les bords du rectangle sont les quartiles (Pour le bord inférieur, un quart des observa-
tions ont des valeurs plus petites et trois quart ont des valeurs plus grandes, le bord
supérieur suit le même raisonnement).
— Les extrémités des moustaches sont calculées en utilisant 1.5 fois l’espace interquartile

II
(la distance entre le 1er et le 3ème quartile).
La boîte à moustache est une méthode rapide pour représenter et résumer le profil d’une
MN
variable continue.
On peut remarquer que 50% des observations se trouvent à l’intérieur de la boîte.
Les valeurs à l’extérieur des moustaches sont représentées par des points. On ne peut pas dire
que si une observation est à l’extérieur des moustaches alors elles est une valeur aberrante.
Par contre, cela indique qu’il faut étudier plus en détail cette observation.
LA

# Violin plot for each attribute


iris2 %>%
gather(Attributes, value, 1:4) %>%
A.

ggplot(aes(x=reorder(Attributes, value, FUN=median), y=value, fill=Attributes)) +


geom_violin(show.legend=FALSE) +
geom_boxplot(width=0.05, fill="white") +
labs(title="Iris data set",
subtitle="Violin plot for each attribute") +
theme_bw() +
theme(axis.title.y=element_blank(),
axis.title.x=element_blank())
# Boxplot for each attribute
iris2 %>%
gather(Attributes, value, 1:4) %>%
ggplot(aes(x=reorder(Attributes, value, FUN=median), y=value, fill=Attributes)) +
geom_boxplot(show.legend=FALSE) +
labs(title="Iris data set",
subtitle="Boxplot for each attribute") +
theme_bw() +

75
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

theme(axis.title.y=element_blank(),
axis.title.x=element_blank())

II
MN
LA
A.

Scatter plot and correlations


La comparaison de ces boîtes donne une idée assez claire de l’influence de petal length
sur les résultats.
Scatter plot and correlations

# Scatter plot and correlations


ggpairs(cbind(iris2, Cluster=as.factor(iris2$Species)),
columns=1:4, aes(colour=Cluster, alpha=0.5),
lower=list(continuous="points"),
axisLabels="none", switch="both") +
theme_bw()

76
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

3.2.14 Arbres de classification


Un arbre de décision est un arbre orienté dont :
— Les noeuds internes sont étiquetés par un test applicable à tout individu, généralement

II
sur un attribut de description.
— Les arcs contiennent les résultats du test.
MN
— Les feuilles sont étiquetés par une classe par défaut.
CART est une méthode non-paramétrique efficace, simple à implémenter et utilisable à la fois
en régression et en classification.
Le principe général de CART est de construire une règle de prédiction au moyen d’un parti-
LA

tionnement récursif et binaire de l’espace des données.


La partition ainsi obtenue peut être représentée sous la forme d’un arbre binaire facilement
interprétable.
La méthode CART construit un arbre binaire dont les noeuds sont des sous-échantillons des
données d’apprentissage.
A.

— Le noeud racine contient toutes les données d’apprentissage.


— A chaque étape un un noeud est divisé pour construire deux nouveaux noeuds les plus
homogènes possible au sens de la variable à expliquer.
— L’arbre maximal est obtenu lorsqu’aucun noeud ne peux plus être divisé. Un noeud
terminal (qui ne peut plus être divisé) est appelée une feuille.
— Chaque feuille est alors affectée à l’une des modalités de la variable à expliquer.

Exemple
library(rpart)
library(rpart.plot)
arbre.classif<-rpart(Species ~ . ,iris)
rpart.plot(arbre.classif)

library("partykit")
#bodyfat_rpart <- rpart(iris$Species ~ .,data = iris,control =

77
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
rpart.control(minsplit = 10,cp=0.01))
#bodyfat_rpart <- rpart(iris$Petal.Length ~ .,data = iris,control =
rpart.control(minsplit = 10,cp=0.01))
LA

bodyfat_rpart <- rpart(iris$Sepal.Width ~ .,data = iris,control =


rpart.control(minsplit = 10,cp=0.01))
printcp(bodyfat_rpart)
plot(as.party(bodyfat_rpart), tp_args = list(id = FALSE))
A.

78
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

3.2.15 Knn Normalisation


Pour les algorithmes de classification comme KNN, nous mesurons les distances entre les
paires d’échantillons et ces distances sont également influencées par les unités de mesure.
Par exemple : supposons que nous appliquons KNN à un ensemble de données comportant 3
fonctionnalités : la première de 1 à 10, la seconde de 1 à 20 et la dernière de 1 à 1 000.

79
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
Dans ce cas, la plupart des clusters seront générés sur la base de la dernière fonctionnalité
car la différence entre 1 à 10 et 1-20 est plus petite par rapport à 1-1000. Pour éviter cette
classification manquante, nous devons normaliser les variables d’entité.
LA

Tout algorithme où la distance joue un rôle vital pour la prédiction ou la classification,


nous devons normaliser la variable.

dataNorm <- iris


A.

dataNorm[, -5] <- scale(iris[, -5])


# créer des objets aléatoires qui peuvent
# être reproduits prochain test
set.seed(1234)

Arbre CART après normalisation


arbre.classif<-rpart(Species ~ . ,dataNorm)
rpart.plot(arbre.classif)

KnnTestPrediction_k1
setosa versicolor virginica
setosa 14 0 0
versicolor 0 13 2
virginica 0 3 10

KnnTestPrediction_k1

80
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

setosa versicolor virginica


setosa 14 0 0
versicolor 0 13 2
virginica 0 3 10

> # Classification accuracy of KnnTestPrediction_k1, 2, 3, 4


> sum(KnnTestPrediction_k1==testData$Species)/length(testData$Species)*100
[1] 95.45455
> sum(KnnTestPrediction_k2==testData$Species)/length(testData$Species)*100
[1] 90.90909
> sum(KnnTestPrediction_k3==testData$Species)/length(testData$Species)*100
[1] 97.72727
> sum(KnnTestPrediction_k4==testData$Species)/length(testData$Species)*100
[1] 97.72727

Pour voir graphiquement les valeurs de k qui donnent une meilleurs classification, nous

II
traçons l’exactitude en fonction de k.
MN
# Empty variables
KnnTestPrediction <- list()
accuracy <- numeric()
# From k=1 to k=100...
for(k in 1:100){
LA

# KnnTestPrediction for each k


KnnTestPrediction[[k]] <- knn(trainData[,-5], testData[,-5],
trainData$Species, k, prob=TRUE)
A.

# Accuracy for each k


accuracy[k] <- sum(KnnTestPrediction[[k]]==testData$Species)
/length(testData$Species)*100
}

# Accuracy vs Choice of k
plot(accuracy, type="b", col="dodgerblue", cex=1, pch=20,
xlab="k, number of neighbors", ylab="Classification accuracy",
main="Accuracy vs Neighbors")

# Add lines indicating k with best accuracy


abline(v=which(accuracy==max(accuracy)), col="darkorange", lwd=1.5)

# Add line for max accuracy seen


abline(h=max(accuracy), col="grey", lty=2)

# Add line for min accuracy seen

81
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

abline(h=min(accuracy), col="grey", lty=2)

Séparons nos données en un jeu d’entraînement et un jeu de test. Le jeu de test contiendra
30% des données.

# 70% train and 30% test


ind <- sample(2, nrow(dataNorm),
+ replace=TRUE, prob=c(0.7, 0.3))
trainData <- dataNorm[ind==1,]
testData <- dataNorm[ind==2,]

Prédire la classe des mesures suivantes en utilisant l’algorithme k-nn pour k=3

> A=dataNorm[88,c(1,2,3,4)]
> A
Sepal.Length Sepal.Width Petal.Length Petal.Width

II
88 0.5514857 -1.737536 0.3636779 0.1320673
MN
> KnnTestPred_A
[1] versicolor
attr(,"prob")
[1] 0.75
Levels: setosa versicolor virginica
LA

Meilleurs k possible
# Execution of k-NN with k=1
A.

KnnTestPrediction_k1 <- knn(trainData[,-5], testData[,-5],


trainData$Species, k=1, prob=TRUE)
# Execution of k-NN with k=2
KnnTestPrediction_k2 <- knn(trainData[,-5], testData[,-5],
trainData$Species, k=2, prob=TRUE)

# Execution of k-NN with k=3


KnnTestPrediction_k3 <- knn(trainData[,-5], testData[,-5],
trainData$Species, k=3, prob=TRUE)

# Execution of k-NN with k=4


KnnTestPrediction_k4 <- knn(trainData[,-5], testData[,-5],
trainData$Species, k=4, prob=TRUE)
# Confusion matrix of KnnTestPrediction_k1
table(testData$Species, KnnTestPrediction_k1)
table(testData$Species, KnnTestPrediction_k2)

82
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

KnnTestPrediction_k1
setosa versicolor virginica
setosa 14 0 0
versicolor 0 13 2
virginica 0 3 10

KnnTestPrediction_k1
setosa versicolor virginica
setosa 14 0 0
versicolor 0 13 2
virginica 0 3 10

> # Classification accuracy of KnnTestPrediction_k1, 2, 3, 4


> sum(KnnTestPrediction_k1==testData$Species)/length(testData$Species)*100
[1] 95.45455
> sum(KnnTestPrediction_k2==testData$Species)/length(testData$Species)*100

II
[1] 90.90909
> sum(KnnTestPrediction_k3==testData$Species)/length(testData$Species)*100
MN
[1] 97.72727
> sum(KnnTestPrediction_k4==testData$Species)/length(testData$Species)*100
[1] 97.72727

Pour voir graphiquement les valeurs de k qui donnent une meilleurs classification, nous tra-
LA

çons l’exactitude en fonction de k.

# Empty variables
KnnTestPrediction <- list()
A.

accuracy <- numeric()


# From k=1 to k=100...
for(k in 1:100){
# KnnTestPrediction for each k
KnnTestPrediction[[k]] <- knn(trainData[,-5], testData[,-5],
trainData$Species, k, prob=TRUE)

# Accuracy for each k


accuracy[k] <- sum(KnnTestPrediction[[k]]==testData$Species)
/length(testData$Species)*100
}

# Accuracy vs Choice of k
plot(accuracy, type="b", col="dodgerblue", cex=1, pch=20,
xlab="k, number of neighbors", ylab="Classification accuracy",
main="Accuracy vs Neighbors")

83
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

# Add lines indicating k with best accuracy


abline(v=which(accuracy==max(accuracy)), col="darkorange", lwd=1.5)

# Add line for max accuracy seen


abline(h=max(accuracy), col="grey", lty=2)

# Add line for min accuracy seen


abline(h=min(accuracy), col="grey", lty=2)

II
MN
LA
A.

84
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

3.2.16 Classification ascendante hiérarchique : CAH


La classification ascendante hiérarchique ou CAH (angl. hierarchical cluster analysis ou
HCA) est une méthode d’aide à la classification à partir d’une matrice de distance inter-
individus.

Propriétés principales
— regroupement des individus puis des groupes les plus semblables
— le nombre de groupes n’est pas fixé
— suggestion sur la classi
abilité des données mais pas d’affectation directe dans les k groupes
— visualisation sous la forme d’un dendrogramme

Présentation de l’algorithme

II
4 grandes étapes
— Préparation des données
MN
— Choix de l’indice de dissimilarité entre les individus
— Choix de l’indice d’agrégation
— Choix de la partition finale

Choix de l’indice de dissimilarité entre les individus


LA

— Le choix de la mesure de distance entre individus dépend des données étudiées et des
objectifs.
— Exemples :
A.

— Distance Euclidienne : le type de distance le plus couramment utilisé. Il s’agit d’une


distance géométrique
q dans un espace multidimensionnel :
d(A, B) = (xa − xb ) + (ya − yb )2
2

— Distance Euclidienne au carré : Permet de "sur-pondérer" les objets atypiques (éloi-


gnés), en élevant la distance euclidienne au carré : d(A, B) = (xa − xb )2 +(ya − yb )2
— Distance du City-block (Manhattan) : cette distance est simplement la somme des
différences entre les dimension : d(A, B) = |xa − xb | + |ya − yb |

Les critères d’agrégation


1. Le critère du saut minimal
La distance entre 2 classes C1 et C2 est définie par la plus courte distance séparant un
individu de C1 et un individu de C2 .

D (C1 , C2 ) = min ({d(x, y)}, x ∈ C1 , y ∈ C2 )

85
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

2. Le critère du saut maximal


La distance entre 2 classes C1 et C2 est définie par la plus grande distance séparant un
individu de C1 et un individu de C2 .

D (C1 , C2 ) = max ({d(x, y)}, x ∈ C1 , y ∈ C2 )

3. Le critère de Ward
Ce critère ne s ?applique que si on est muni d’un espace euclidien.
La dissimilarité entre 2 individus doit être égale à la moitié du carré de la distance
euclidienne.

3.2.17 Inertie & Méthode de Ward


Si G = {ei : i = {1 : n}} est un groupe d’individus, de centre de gravité g partitionné en k
classes d’effectifs n1 , n2 , . . . , nk qu’on appellera G1 , G2 , . . . , Gk qui ont pour centres de gravité
g1 , g2 , . . . , gk alors :

II
n
1X
— l’inertie totale du nuage est égale à : It = d (ei , g)2
n i=1
MN
k
1X
— l’inertie interclasse est égale à : Ie = ni × d (gi , g)2
n i=1
k Xni
1X
— l’inertie intra-classe est égale à : Ia = d (ej , gi )2
n i=1 j=1
La méthode de Ward consiste à regrouper les classes de façon que l’augmentation de l’inertie
LA

interclasse soit maximum (de façon que l’augmentation de l’inertie intraclasse soit minimum).

3.2.18 CAH : pseudo-code


— Entrées :
A.

— individus : liste d’individus


— nbClasses : nombre de classes que l’on veut finalement obtenir
— Sortie :
— classes : liste de classes initialement vide, une classe est vue comme une liste d’in-
dividus

86
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Algorithme 3.2.19 (CAH)

Pour i=1 à individus.longueur Faire


classes.ajouter(nouvelle classe(individu[i]));
Fin Pour
Tant Que classes.longueur > nbClasses Faire
// Calcul des dissimilarités entre classes dans une matrice
matDissim = nouvelle matrice(classes.longueur,classes.longueur);
Pour i=1 à classes.longueur Faire
Pour j=i+1 à classes.longueur Faire
matDissim[i][j] = dissim(classes[i],classes[j]);
Fin Pour
Fin Pour
// Recherche du minimum des dissimilarités
Soit (i,j) tel que matDissim[i][j] = min(matDissim[k][l])

II
avec 1<=k<=classes.longueur et k+1<=l<=classes.longueur;
// Fusion de classes[i] et classes[j]
MN
Pour tout element dans classes[j] Faire
classes[i].ajouter(element);
Fin pour
supprimer(classes[j]);
Fin Tant Que
LA

3.2.20 CAH : Dendrogramme


— Arbre binaire présentant les agrégations successives, jusqu’à réunion en une classe
A.

unique. La hauteur d’une branche est proportionnelle à la distance entre les objets
regroupés. Pour la distance de Ward, la distance est simplement la perte de variance
interclasses.
— Plus l’arbre est coupé bas, plus la classification est fine
— Une hauteur découpe est pertinente si elle se trouve entre deux noeuds dont les dis-
tances sont relativement élevées.

En pratique :
— une partition triviale au plus bas de la hiérarchie : chacun objet forme une classe
— à chaque niveau (passage à une partition moins fine) : fusion de classes
— une partition triviale au plus haut de la hiérarchie : tous les objets dans une seule
classe

87
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

Dendrogramme : Un dendrogramme (du


grec ancien dendron "arbre") est un dia-
gramme fréquemment utilisé pour illus-
trer l’arrangement de groupes générés par
un regroupement hiérarchique.

3.2.21 CAH : Exemple


— Le but de cet exemple est de réaliser la CAH sur 29 observations sur des fromages par
la méthode de Ward décrits par leurs propriétés nutritives (ex. protéines, lipides, etc. ;
9 variables).
— L’objectif est d’identifier des groupes de fromages homogènes, partageant des caracté-

II
ristiques similaires.
MN
Chargement et description des données
library("FactoMineR")
library("ggplot2")
library("factoextra")
LA

fromage=read.table(’Bureau//AnDonn//fromage.txt’, header=TRUE, row.names=1)


print(head(fromage))
fromage
print(summary(fromage))
A.

pairs(fromage)

Nous constatons par exemple que ń lipides ż est fortement corrélé avec "calories" et "choles-
térol" ... (voir figure).

88
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
Centrage et réduction des données
Le principal avantage de la centration-réduction est de rendre comparables des variables
LA

qui ne le seraient pas directement parce qu’elles ont des moyennes et ou des variances trop
différentes.

Pour éviter que l’échelle des variables n’influe sur les résultats.
A.

fromage.cr <- scale(fromage,center=T,scale=T)

Pour regrouper les individus qui se ressemblent (et bien séparer ceux qui ne se ressemblent
pas), "critère de ressemblance".

d.fromage <- dist(fromage.cr)


d.fromage

89
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

3.2.22 Fonction HCPC()


Algorithme 3.2.23 (Algorithme de la méthode HCPC)

1. Effectuez une ACP, AFC, ACM, AFDM ou AFM en fonction du type de don-
nées. Choisissez le nombre de dimensions à retenir en spécifiant l’argument
ncp. La valeur par défaut est 5.
2. Appliquez la classification hiérarchique sur le résultat de l’étape 1.
3. Choisissez le nombre de groupes en fonction du dendrogramme obtenu à
l’étape 2. Un partitionnement initial est effectué.
4. Effectuez le k-means pour améliorer le partitionnement initiale obtenu à
l’étape 3.

L’extension FactoMineR fournit une fonction HCPC permettant de réaliser une classifica-

II
tion hiérarchique à partir du résultats d’une analyse factorielle réalisée avec la même exten-
sion (voir la section dédiée du chapitre sur l’ACM).
MN
HCPC réalise à la fois le calcul de la matrice des distances, du dendrogramme et le partition-
nement de la population en classes.
Par défaut, l’arbre est affiché à l’écran et l’arbre sera coupé selon la partition ayant la plus
grande perte relative d’inertie (comme avec best.cutree). Utilisez graph=FALSE pour ne pas
LA

afficher le graphique et l’argument nb.clust pour indiquer le nombre de classes désirées.

Contenu du résultat de la fonction HCPC()


A.

HCPC (res, nb.clust = 0, graph = TRUE)


— res : Résultat d’une analyse factorielle ou un data frame.
— nb.clust : Le nombre de clusters (groupes) à générer.
— graph : si TRUE, les graphiques sont affichés
Cas de variables continues
Faire une ACP
Appliquer la classification hiérarchique sur le résultat de l’ACP

library(FactoMineR)
# 1. ACP
res.pca <- PCA(USArrests, ncp = 3, graph = TRUE)
# 2. HCPC
res.hcpc <- HCPC(res.pca, graph = TRUE)
# 3. Visualiser le dendrogramme généré par la classification.
# Fonction R: fviz_dend()

90
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

— data.clust : Données d’origine avec une colonne supplémentaire appelée clust conte-
nant les groupes.
— desc.var : les variables décrivant les groupes
— desc.ind : les individus les plus typiques de chaque groupes
— desc.axes : les axes décrivant les groupes

91
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

head(res.hcpc$data.clust, 5)
calor. sod. calc. lipid. retinol folates proteines choles. magnes. clust
CarredelEst 0.151 1.319 -1.559 0.263 -0.660 1.474 0.119 -0.162 -0.615 3
Babybel 0.151 0.256 0.331 0.115 -0.159 -0.563 0.349 -0.162 0.003 3
Beaufort 1.098 -0.902 1.015 1.124 -0.524 -1.007 0.924 1.607 1.239 4
Bleu 0.456 1.158 0.349 0.583 -1.260 1.235 0.004 0.545 0.003 3
Camembert -0.392 0.956 0.415 -0.573 1.466 1.995 0.464 -0.516 -0.615 2

res.hcpc$desc.var$quanti
$‘1‘
v.test Mean in category Overall mean sd in category Overall sd p.value
magnesium -2.990908 -1.388494 7.549038e-17 0.1448404 0.9826074 2.781491e-03
sodium -3.277039 -1.521327 8.637727e-17 0.2545298 0.9826074 1.049018e-03
proteines -4.013916 -1.863414 1.327363e-16 0.2846583 0.9826074 5.971949e-05
cholesterol -4.296288 -1.994502 -1.837611e-16 0.2723716 0.9826074 1.736817e-05
calories -4.646911 -2.157274 -8.776804e-17 0.3113926 0.9826074 3.369421e-06
lipides -4.738523 -2.199804 -8.207037e-17 0.3654534 0.9826074 2.152815e-06

$‘2‘
v.test Mean in category Overall mean sd in category Overall sd p.value

II
retinol 4.228946 1.963239 1.674905e-17 0.9314525 0.9826074 2.347889e-05
folates 3.865861 1.794681 -6.221077e-17 0.2013602 0.9826074 1.106978e-04
MN
$‘3‘
v.test Mean in category Overall mean sd in category Overall sd p.value
sodium 3.406384 0.6111009 8.637727e-17 0.6798035 0.9826074 0.0006582959
retinol -2.059766 -0.3695195 1.674905e-17 0.4979629 0.9826074 0.0394208810

$‘4‘
v.test Mean in category Overall mean sd in category Overall sd p.value
LA

magnesium 3.775052 1.3724996 7.549038e-17 0.6304424 0.9826074 0.0001599744


proteines 3.331928 1.2113925 1.327363e-16 0.5159917 0.9826074 0.0008624664
calcium 2.925064 1.0634685 4.570099e-17 0.7027137 0.9826074 0.0034438556
cholesterol 2.799316 1.0177503 -1.837611e-16 0.6017446 0.9826074 0.0051210958
calories 2.452780 0.8917597 -8.776804e-17 0.2901705 0.9826074 0.0141757125
lipides 1.965031 0.7144282 -8.207037e-17 0.3811001 0.9826074 0.0494106974
A.

folates -2.250840 -0.8183401 -6.221077e-17 0.1563121 0.9826074 0.0243957036

res.hcpc$desc.axes$quanti
$‘1‘
v.test Mean in category Overall mean sd in category Overall sd p.value
Dim.2 -2.556153 -1.640127 9.810160e-17 0.8610474 1.358094 1.058366e-02
Dim.1 -4.223309 -4.483544 1.052798e-17 0.2174935 2.247023 2.407416e-05

$‘2‘
v.test Mean in category Overall mean sd in category Overall sd p.value
Dim.2 3.530279 2.265164 9.810160e-17 0.2656446 1.3580937 0.0004151222
Dim.3 2.766746 1.217700 -3.373738e-17 0.5135161 0.9315583 0.0056618834

$‘3‘
v.test Mean in category Overall mean sd in category Overall sd p.value
Dim.3 -4.35853 -0.7412923 -3.373738e-17 0.4282785 0.9315583 1.309387e-05

$‘4‘
v.test Mean in category Overall mean sd in category Overall sd p.value
Dim.1 3.080089 2.5608265 1.052798e-17 0.6186832 2.2470233 0.002069386
Dim.3 2.792348 0.9624738 -3.373738e-17 0.4573145 0.9315583 0.005232699

Les résultats indiquent que les individus dans les groupes :

92
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

— 1 et 4 ont des coordonnées élevées sur l’axes 1.


— 1 et 2 ont des coordonnées élevées sur l’axes 2.
— 2, 3 et 4 ont des coordonnées élevées sur l’axes 3.

res.hcpc$desc.ind$para

Pour chaque groupe, les 5 meilleurs individus les plus proches du centre du cluster sont
affichés. Ces individus sont appelés paragones. La distance entre chaque individu et le centre
du groupe est fournie.

Cluster: 1
Fr.frais20nat. Fr.frais40nat. Petitsuisse40 Yaotlaitt.nat.
0.3713450 0.7728515 0.8220029 1.4356469
-------------------------------------------------------------
Cluster: 2
Chaource Camembert Chabichou Fr.chmolle

II
0.5117528 0.6351719 1.1457658 2.0707189
-------------------------------------------------------------
MN
Cluster: 3
Tome Pyrenees Reblochon Babybel Morbier
0.4299936 0.5201860 0.6057267 0.7009267 0.8360276
-------------------------------------------------------------
LA

Cluster: 4
Beaufort Comte Parmesan Emmental Edam
0.5939427 0.6529028 0.9127630 0.9765425 1.1009528

Inter cluster et gains


A.

plot(res.hcpc, choice = "bar")


plot(res.hcpc, choice = "map")

CAH : frequency
library(rmarkdown)
library(frequency)
freq(res.hcpc$data.clust$clust)

x label Freq Percent Valid Percent Cumulative Percent


2 Valid 1 4 13.8 13.8 13.8
3 2 4 13.8 13.8 27.6
4 3 15 51.7 51.7 79.3
5 4 6 20.7 20.7 100.0
51 Total 29 100.0 100.0

93
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

1 Missing <blank> 0 0.0


6 <NA> 0 0.0
8 Total 29 100.0

Le graphique ci-dessous est le dengrogramme. Il représente de manière claire la façon


dont l’algorithme procède pour regrouper les individus puis les sous-groupes.
Visualiser le dendrogramme généré par la classification. Fonction R : fviz_dend()

94
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

fviz_dend(res.hcpc,
cex = 0.6, # Taille du text
palette = "jco", # Palette de couleur ?ggpubr::ggpar
rect = TRUE, rect_fill = TRUE, # Rectangle autour des groupes
rect_border = "jco", # Couleur du rectangle
labels_track_height = 0.8 # Augment l’espace pour le texte
)

II
MN
LA
A.

Le dendrogramme "suggère" un découpage en 4 groupes. On note qu’une classe de fro-


mages, les "fromages frais" (tout à gauche), se démarque fortement des autres au point qu’on
aurait pu envisager aussi un découpage en 2 groupes seulement.

fviz_cluster()
La fonction fviz_cluster() permet de visualiser le résultat dans un diagramme de disper-
sion.
Le regroupement peut être un outil très utile pour l’analyse des données dans le cadre non-
supervisé.

fviz_cluster(res.hcpc,
repel = TRUE, # Evite le chevauchement des textes
show.clust.cent = TRUE, # Montre le centre des clusters
palette = "jco", # Palette de couleurs, voir ?ggpubr::ggpar
ggtheme = theme_minimal(),
main = "Factor map")

95
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

fviz_cluster(res.hcpc, repel = TRUE, geom = "point",


show.clust.cent = TRUE, ellipse.type = "euclid",
palette = "trololo", ggtheme = theme_minimal(),star.plot = TRUE,
main = "Factor map")

II
MN
LA

On pourra représenter le dendrogramme avec plot et l’argument choice="tree".

plot(res.hcpc, choice = "tree")


A.

— fromages frais.
— fromages à pâte molle.
— fromages durs.
— fromages fourre-tout.
Graphique 3D combinant la classification hiérarchique et le plan des facteurs

plot(res.hcpc, choice = "3D.map")

3.2.24 La fonction hclust()


La fonction hclust() dans stats est la plus simple d’utilisation. Elle contient les approches
agglomératives ascendantes classiques et ne nécessite pas le chargement d’une bibliothèque
additionnell.

hclust() exige en entrée une matrice de distancesOn calcule d’abord la matrice des dis-
tances euclidiennes avec dist().

96
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

library("FactoMineR")
library("ggplot2")
library("factoextra")
fromage.cr <- scale(fromage,center=T,scale=T)
#matrice des distances entre individus
d.fromage <- dist(fromage.cr)

97
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
d.fromage

#CAH - critère de Ward


#method = ń ward.D2 ż correspond au vrai critère de Ward
LA

#utilisant le carré de la distance


cah.ward <- hclust(d.fromage,method="ward.D2")
#affichage dendrogramme
#Le dendrogramme obtenu peut être affiché simplement avec plot
A.

plot(cah.ward)

#dendrogramme avec matérialisation des groupes


rect.hclust(cah.ward,k=4)
#découpage en 4 groupes
groupes.cah <- cutree(cah.ward,k=4)
#liste des groupes
print(sort(groupes.cah))

Découper le dendrogramme
Pour obtenir une partition de la population nous utilisons représentons les sauts d’inertie
du dendrogramme selon le nombre de classes retenues.

inertie <- sort(cah.ward$height, decreasing = TRUE)


plot(inertie[1:15], type = "s", xlab = "Nombre de classes", ylab = "Inertie")

98
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

On voit 4 sauts assez nets à 2, 3, 4 et 5 classes (voir figure)

points(c(2, 3, 4, 5), inertie[c(2, 3, 4, 5)], col = c("green3", "red3",


"blue3","magenta"), cex = 2, lwd = 3)

La fonction rect.hclust permet de visualiser les différentes partitions directement sur le


dendrogramme.

99
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

plot(cah.ward, labels = FALSE, main = "Partition en 2, 3, 4 ou 5 classes",


xlab = "", ylab = "", sub = "", axes = FALSE, hang = -1)
rect.hclust(cah.ward, 2, border = "green3")
rect.hclust(cah.ward, 3, border = "red3")
rect.hclust(cah.ward, 4, border = "blue3")
rect.hclust(cah.ward, 5, border = "magenta")

100
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
Un moyen d’examiner la qualité de la topologie obtenue est de calculer les distances
d’arbre, puis la corrélation appelée corrélation cophénétique entre les distances d’arbre et les
distances euclidiennes initiales. Plus cette corrélation est élevée, meilleure est la représenta-
tion obtenue.
LA

d=cophenetic(cah.ward)
cor(d,d.fromage)
A.

[1] 0.8597509

3.2.25 Algorithme des centres mobiles (k means)


L’algorithme des centres mobiles vise à classer une population Γ en k classes.
Cela se fait de manière automatique ; il n’y a pas de lien hiérarchique dans les regroupements
contrairement à l’algorithme CAH.
Il est le mieux adapté aux très grands tableaux de données.
L’algorithme des centres mobiles avec la méthode de Lloyd (la plus standard) est décrit ci-
dessous :
— On choisit k points au hasard. Ces points sont appelés centres.
— On calcule le tableau de distances entre tous les individus et les k centres.
— On forme k groupes de la manière suivante : chaque groupe est constitué d’un centre
et des individus les plus proches de ce centre que d’un autre. On obtient une partition
P1 de Γ.
— On calcule le centre de gravité de chacun des k sous-nuages de points formés par les
groupes. Ces k centres de gravité sont nos nouveaux k centres.

101
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

— On calcule le tableau de distances entre tous les individus et les nouveaux k centres.
— On forme alorsk groupes, chaque groupe étant constitué d’un centre et des individus
les plus proches de ce centre que d’un autre. On a une nouvelle partition P2 de Γ.
— On itère la procédure précédente jusqu’à ce que deux itérations conduisent à la même
partition.

3.2.26 Exemple de CHA vers k means


L’algorithme de classification hiérarchique ascendante en utilisant le saut minimal sur les
point suivant :

x y
A 1.0 1.0
B 1.0 1.8
C 1.5 1.0
D 4.0 6.0

II
E 5.0 5.0
F 4.0 2.0
MN
G 5.0 2.2
H 5.0 1.0
I 5.5 6.5

x<-c(1,1,1.5,4,5,4,5,5,5.5)
LA

y<-c(1,1.8,1,6,5,2,2.2,1,6.5)
nom<-c(’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’)
plot(x, y, pch = 15, cex=1, col="blue", bg="red", lwd=1)
text(x+0.1,y+0.1,nom) # affichage des noms des points
A.

L <- data.frame(x, y,row.names=c(’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’))


L
d.L <- dist(L)
d.L

Distance minimum

A B C D E F G H
B 0.8000000
C 0.5000000 0.9433981
D 5.8309519 5.1613952 5.5901699
E 5.6568542 5.1224994 5.3150729 1.4142136
F 3.1622777 3.0066593 2.6925824 4.0000000 3.1622777
G 4.1761226 4.0199502 3.7000000 3.9293765 2.8000000 1.0198039
H 4.0000000 4.0792156 3.5000000 5.0990195 4.0000000 1.4142136 1.2000000
I 7.1063352 6.5069194 6.8007353 1.5811388 1.5811388 4.7434165 4.3289722 5.5226805

102
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
(a) Les données. (b) Étape 1 (c) Étape 2
MN
LA

(d) Étape 3 (e) Étape 4 (f) Étape 5


A.

(g) Étape 6 (h) Étape 7 (i) Étape 8

103
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

# 1. ACP
res.pca <- PCA(L, ncp = 3, graph = FALSE)
# 2. HCPC
res.hcpc <- HCPC(res.pca, graph = TRUE)

Indice de silhouette Pour tout i ∈ {1, · · · , n}, on appelle indice de silhouette associé à
l’individu wi le réel :
bi − ai
S(i) =
max(ai , bi )

— ai est la moyenne des distances entre wi et les individus de son groupe,
— bi est la moyenne des distances entre wi et les individus du groupe le plus proche de
celui auquel il appartient.

104
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
On a S(i) ∈] − 1, 1[.
Plus S(i) est proche de 1, plus l’appartenance de wi a son groupe est justifiée.
MN
library(cluster)
ag = agnes(d.L, method = "average")
ag3 = cutree(ag, 3)
si = silhouette(ag3, d.L)
LA

plot(si, col = c("red", "green", "blue"))

La fonction hclust()dans stats est la plus simple d’utilisation. Elle contient les approches
agglomératives ascendantes classiques et ne nécessite pas le chargement d’une bibliothèque
additionnell. hclust() exige en entrée une matrice de distancesOn calcule d’abord la matrice
A.

des distances euclidiennes avec dist()

hc <- hclust(dist(d.L), "ave")


dend1 <- as.dendrogram(hc)
str(dend1)
--[dendrogram w/ 2 branches and 9 members at h = 11.1]
|--[dendrogram w/ 2 branches and 3 members at h = 3.79]
| |--leaf "I"
| ‘--[dendrogram w/ 2 branches and 2 members at h = 2.7]
| |--leaf "D"
| ‘--leaf "E"
‘--[dendrogram w/ 2 branches and 6 members at h = 8.05]
|--[dendrogram w/ 2 branches and 3 members at h = 1.63]
| |--leaf "B"
| ‘--[dendrogram w/ 2 branches and 2 members at h = 1.22]
| |--leaf "A"
| ‘--leaf "C"
‘--[dendrogram w/ 2 branches and 3 members at h = 2.86]
|--leaf "H"
‘--[dendrogram w/ 2 branches and 2 members at h = 2.35]
|--leaf "F"
‘--leaf "G"

105
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

(a) (b) (c) (d)

II
MN
LA

plot(dend1)
A.

## "triangle" type and show inner nodes:


plot(dend1, nodePar = list(pch = c(1,NA), cex = 0.8,
lab.cex = 0.8), type = "t", center = TRUE)
plot(dend1, edgePar = list(col = 1:2, lty = 2:3),
dLeaf = 1, edge.root = TRUE)
plot(dend1, nodePar = list(pch = 2:1, cex = .4*2:1,
col = 2:3), horiz = TRUE)

set.seed(12345)
library(cluster)
pc_cluster <-kmeans(L, 3)
pc_cluster

K-means clustering with 3 clusters of sizes 3, 3, 3


Cluster means:
x y

106
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

107
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
1 1.166667 1.266667
2 4.833333 5.833333
MN
3 4.666667 1.733333

Clustering vector:
A B C D E F G H I
1 1 1 2 2 3 3 3 2
LA

Within cluster sum of squares by cluster:


[1] 0.5933333 2.3333333 1.4933333
(between_SS / total_SS = 93.5 %)
A.

Available components:
[1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss" "size"
[8] "iter" "ifault"

plot(L, col = pc_cluster$cluster, pch = 1, lwd = 3, xlab =


"X1", ylab = "X2")
points(pc_cluster$centers, col = 1:3, pch = 9, lwd = 3)

library(animation)
library(cluster)
kmeans.ani(L, 3)
saveGIF({kmeans.ani(L, 3)})

fanny_L<-fanny(L,3)
fviz_silhouette(fanny_L, palette =
"jco", ggtheme = theme_minimal())

108
3.2. CLASSIFICATION SUPERVISÉ ET NON SUPERVISÉ

II
MN
LA
A.

109
Chapitre 4

Transformée en ondelettes

4.1 Rappel : Séries et transformées de Fourier


Cas des fonctions périodiques : Séries de Fourier

Soit y = f (t) une fonction périodique de période T1 , de pulsation ω1 = T1
et de fréquence
v1 = T11
Dans certaines conditions peu restrictives en physique, f peut s’écrire :

a0 +∞
X
f (t) = + (an cos(nw1 t) + bn sin(nw1 t))
2 n=1

II
La pulsation ω1 s’appelle la pulsation fondamentale.
Les pulsations ωn = nω1 s’appellent les harmoniques de rang n.
MN
Les coefficients an et bn sont les coefficients de Fourier de la fonction f .
Calcul et interprétation des coefficients de Fourier
Z t0 +T1
a0 1
= f (t)dt
2 T1 t0
LA

représente la valeur moyenne de f sur une période T1 (t0 est quelconque)


Z t0 +T1 Z t0 +T1
an 1 bn 1
= f (t)cos(nw1 t)dt, = f (t)sin(nw1 t)dt
2 T1 t0 2 T1 t0

Les coefficients an et bn quantifient la participation de l’harmonique de rang n à la fonction f ; autre-


A.

ment dit, dès qu’un coefficient de rang n est non nul, cela signifie qu’une partie de la fonction f vibre
à la pulsation wn .
— Si f est paire, la partie impaire du développement est nulle : bn = 0
— Si f est impaire, la partie paire du développement est nulle : an = 0

110
4.1. RAPPEL : SÉRIES ET TRANSFORMÉES DE FOURIER

Exemple f (t) = cos(t)3

La fonction est paire et de valeur moyenne nulle, donc a0 = 0 et ∀ n bn = 0.

II
On peut calculer les coefficients an à l’aide de la formule, mais dans cet exemple on peut linéariser f
en utilisant la formule d’Euler : cos(t)3 = 14 (3cos(t) + cos(3t))
MN
3 1
a1 = , a2 = 0, a3 = , a4 = 0.
4 4

Spectre de Fourier d’une fonction périodique


La décomposition en séries de Fourier de la fonction f peut aussi s’écrire :
LA

a0 +∞
X
f (t) = + cn cos(nw1 t + φn )
2 n=1

avec q
A.

an bn
cn = a2n + b2n , cos(φn ) = p , sin(φn ) = − p 2
a2n + b2n an + b2n
cn est l’amplitude de l’harmonique de rang n et φn est sa phase.

Le spectre de Fourier de la fonction f est le diagramme obtenu en portant sur un axe horizontal gradué
en multiples de la pulsation fondamentale ω1 des segments de longueur proportionnelle à l’amplitude
cn de l’harmonique considérée.

Le spectre montre immédiatement l’importance relative des différentes harmoniques.

Spectre de la fonction f (t) = cos(t)3


On peut aussi écrire :
X
f (t) = cn e2jπnf0 t
n∈Z
avec Z t0 +T0
1 1
f0 = , cn = f (t)e−2jπnf0 t dt
T0 T0 t0

111
4.1. RAPPEL : SÉRIES ET TRANSFORMÉES DE FOURIER

Reconstruction d’un signal carré à partir des séries de Fourier


Le but de cet exercice est de reconstruire, sous Matlab, un signal carré de fréquence f0 = 1 à partir
de 6 harmoniques à partir d’une somme de sinusoïdes (t ∈ [0, 6]).

 −1, si t ∈ [− t0 , 0]
2
f (t) =
 t0
1, si, t ∈ [0, 2 ]

II
MN
LA


−2j X 1
f (t) = e2jπ(2q+1)f0 t
π q=−∞ 2q + 1
A.

1 t =[0:0.001:6];
2 % c r e a t i o n base t e m p o r e l l e
3 s = z e r o s (1 , l e n g t h ( t ) ) ;
4 % c r e a t i o n d ’ un s i g n a l nul
5 Nharm =12;
6 % creation + i n i t i a l i s a t i o n
7 f 0 =1;
8 % creation + i n i t i a l i s a t i o n
9 f o r q = −( Nharm −1) : Nharm −1
10 % c r e a t i o n d ’ une b o u c l e
11 c =1/(2∗ q +1) ;
12 s = s + c ∗ exp (2∗ j ∗ p i ∗(2∗ q +1)∗ f 0 ∗ t ) ;
13 end
14 s =(( −2∗ j ) / p i ) ∗ s ;
15 plot ( t , real ( s ) ) ;

112
4.2. INTRODUCTION AUX ONDELETTES

Reconstruction d’un signal triangulaire à partir des séries de Fourier


Le but de cet exercice est de reconstruire, sous Matlab, un signal triangulaire de fréquence f0 = 1/2
à partir de 6 harmoniques à partir d’une somme de sinusoïdes (t ∈ [0, 6]).

f (t) = 1 − |t| ∈ [−1, 1]



 1, si n = 0

II
2
cn =
 1−(−1)n
π 2 n2
, si, n 6= 0
MN
LA
A.

4.2 Introduction aux Ondelettes


Naissance des ondelettes
— 1980 : Début des ondelettes
— 1983 : Analyse d’image multirésolution
— 1985 : Transformation en ondelettes continue
— 1986-87 :Analyse multirésolution & Transformée en ondelettes discrète
— 1988 : Classe d’ondelettes
— support compactes
— orthogonales
— nombre de moments quelconques

113
4.2. INTRODUCTION AUX ONDELETTES

Définition 4.2.1 (Définition des ondelettes)

Ondelettes
— Hauteur
— Durée
— Localisation temporelle
Ondes
— Hauteur (fréquence)
— Durée infinie (ou presque !)
— Délocalisation temporelle totale

Utilisation
— Une petite onde (ou vague) qui a un début et une fin
— Utilisation : Représenter une fonction (ou un signal) comme une somme pondérée de ces

II
petites ondes translatées et/ou dilatées.
— Matlab :
MN
>> help wavelet
>> wavedemo
>> wavemenu
Définition 4.2.2 (Définition d’une ondelette)
LA

Une ondelette est une fonction oscillante (ce qui explique le mot "onde") de moyenne nulle
possédant un certain degré de régularité et dont le support est fini (ce qui explique le mot
"ondelette", qui veut dire petite onde).
A.

Définition 4.2.3 (Définition d’une ondelette)

— Soit ψ une fonction choisie suffisamment régulière et bien localisée.

— La fonction ψ sera appelée ondelette si elle vérifie la condition d’admissibilité dans


le domaine fréquentiel suivante :
Z b 2 Z b 2
|ψ(ω)| |ψ(ω)|
dω = dω = C+ < +∞
R+ ω R− |ω|

où ψb désigne la transformée de Fourier de ψ.

— Cette condition qui entraîne, en particulier, que l’ondelette est d’intégrale nulle.

Cette condition minimale, est souvent renforcée en exigeant que l’ondelette ait des moments nuls :
la fonction ψ a m + 1 moments nuls si pour tout k = 0, · · · , m
Z
tk ψ(t)dt = 0
R

114
4.2. INTRODUCTION AUX ONDELETTES

Remarque 4.2.4

L’ondelette mère doit vérifier les propriétés suivantes :


— la continuité : être absolument intégrable et de carré intégrable (énergie finie),
— l’analytique : sa transformée de Fourier doit être nulle pour w < 0,
— l’admissibilité : ce qui induit un comportement de filtre passe-bande.

4.2.5 Exemple d’ondelettes


— Ondelette de Haar :
L’ondelette de Haar est l’un des exemple classique défini par :

 si, x ∈ [0, 21 [
 1,

ψ(x) = −1, si, x ∈ [ 21 , 1[

II

 0, sinon
MN
LA

— Ondelette Chapeau mexicain :


1
2π − 4 t2
ψ(x) = √ (1 − x2 )e− 2
A.

— Ondelette de Morlet :
t2 2
ψ(t) = e− 2 cos(5t) ou ψ(t) = e−πt e10iπx

— Ondelette de Meyer : ψ(t) = ψ1 (t) + ψ2 (t) où


4
(t− 12 ) cos[ 2π
3 (
t− 12 )]− π1 sin[ 4π
3 (
t− 21 )]
ψ1 (t) = 3π
1 3
(t− 2 )− 9 (t− 2 )
1 16

8
(t− 12 ) cos[ 8π
3 (
t− 12 )]+ π1 sin[ 4π
3 (
t− 21 )]
ψ2 (t) = 3π
3
(t− 21 )− 649 (
t− 21 )

115
4.2. INTRODUCTION AUX ONDELETTES

— Les dérivées gaussiennes :

II
dn −πx2
Elles sont de la forme ψn (x) = dx ne , pour n ≥ 1.
On utilise essentiellement la dérivée seconde, qu’on écrit le plus souvent sous la forme :
MN
2 1
  x2
ψ(x) = √ π − 4 1 − x2 e− 2
3

1 clc ; clear a l l ; close a l l


x = −5:0.01:5;
LA

3 y=(2/ s q r t ( 3 ) ) ∗( p i ^(−1/4)) . . .
4 ∗(1−x.^2) . ∗ exp (−(x.^2) /2) ;
5 p l o t ( x , y , ’ b ’ , ’ LineWidth ’ , 2 )
6 box on , g r i d on
A.

4.2.6 La translation et la dilatation


— L’ondelette mère doit satisfaire les propriétés de translation et de dilatation pour quelle puisse
générer d’autres ondelettes.
— A partir de la fonction ψ, on construit par translation et dilatation, une famille de fonctions qui
sont les atomes de base :
  
1 t−b
ψa,b (t) = √ ψ
a a (a,b)∈R×R+
0

116
4.2. INTRODUCTION AUX ONDELETTES

où a le paramètre d’échelle et b est le paramètre du temps (délai).


— L’ondelette ψa,b est simplement l’ondelette mère ψ translatée de b et dilatée (contractée si
a < 1) par a.

— Quand l’échelle a augmente, la résolution augmente.


Ceci veut dire que le support de la partie non-nulle de l’ondelette mère augmente.
— Le coefficient multiplicateur √1a permet d’avoir une formule de conservation de l’énergie d’un
signal.

Exemple : La translation et la dilatation

II
MN
LA
A.

1 f u n c t i o n []= t r a n s l a t i o n _ e t _ d i l a t a t i o n ( )
2 clc ; clear a l l ; close a l l
3 a1=1;
4 a2 =0.5;
5 a3=4;
6 a1=a2 ; % a1=a3 ;
7 t=a1 ∗ 5 : 0 . 0 1 : a1 ∗70;
8 hold on
9 p l o t ( t , 0 ∗ t , ’ k ’ , ’ LineWidth ’ , 2 )
10 i =0; t i =−4∗a1 : 0 . 0 1 : 4 ∗ a1 ; t 1=t i ;
11 y=(1/ s q r t ( abs ( a1 ) ) ) ∗ ond_d_g ( ( t i ) / a1 ) ;
12 f o r i =0:3
13 t 1=t 1+15∗a1 ;
14 p l o t ( t1 , y , ’ r ’ , ’ LineWidth ’ , 2 )
15 end
16 box on , g r i d on

117
4.3. TRANSFORMÉE EN ONDELETTES CONTINUE

17 end
18 f u n c t i o n [ y]=ond_d_g ( t )
19 y=(2/ s q r t ( 3 ) ) ∗( p i ^(−1/4)) . . .
20 ∗(1− t .^2) . ∗ exp (−( t .^2) /2) ;
21 y=y.∗((−4< t ) &( t <4)) ;
22 end

4.3 Transformée en ondelettes continue


— Soit ψ ∈ L2 (Rn ), pour une fonction f ∈ L2 (Rn ) on appelle la transformée en ondelette
continue ; la relation d’intégration Tψ définie dans L2 (Rn ) par :
Z  
t−b
Tψ (f )(a, b) = hf, ψa,b i = f (t)ψ dt
Rn a

Les coefficients d’ondelettes mesurent les fluctuations (à l’échelle |a|) de la fonction f .

II
— Tψ (f )(a, b) permet de faire une analyse locale de f par l’ondelette ψ a est appelé facteur
d’échelle. On peut le lier à la fréquence :
MN
— si a > 1 l’ondelette sera plus étalée et correspondra donc à une fréquence plus faible,
— si a < 1 l’ondelette sera plus étroite et correspondra à une fréquence plus élevée que celle
de l’ondelette mère le paramètre b est un paramètre de position pour l’ondelette.
Linéarité, invariance par dilatation et translation
— La transformée en ondelettes est une application linéaire.
LA

— Si Tψ (f )(a, b) est la transformée en ondelettes de f (x), alors


— Tψ (f )(a, b − x0 ) est la transformée en ondelettes de f (x − x0 )
— Tψ (f )( λa , λb ) est la transformée en ondelettes de λ1 f ( λx )
— Cette propriété n’est pas valable dans le cas de la transformée en ondelettes discrète.
On peut imposer diverses conditions supplémentaires à ψ en fonction des objectifs : décroissance
A.

rapide, dérivabilité, moments nuls jusqu’à un certain ordre, support compact.

4.3.1 Reconstruction et conservation de l’énergie


La transformée en ondelettes continue, comme l’analyse temps-fréquence, conserve toute l’infor-
mation présente dans le signal, dans le sens où l’on a conservation de l’énergie. De plus, on peut
reconstituer le signal à partir de sa transformée en ondelettes.
— Conservation de l’énergie
Soit f ∈ L2 (Rn ) et ψ ∈ L2 (Rn ) une ondelette admissible. Alors :
Z Z
1 dadb
kf k = 2
|Cx (a, b)|2
cψ R+
∗ R a2

— Inversion
Soit f ∈ L2 (Rn ) et ψ ∈ L2 (Rn ) une ondelette admissible. Alors :
Z Z
1 dadb
∀t ∈ R f (t) = Cf (a, b)ψa,b (t)
cψ R∗+ R a2

118
4.3. TRANSFORMÉE EN ONDELETTES CONTINUE

4.3.2 Conditions pour parler d’analyse en ondelettes


— Une ou plusieurs fonctions mères qui engendrent par dilatation et translation la famille des
ondelettes
— Reconstruction possible (condition d’admissibilité)
— Une famille de fonctions ψa,b telle que : ψa,b (x) = √1a ψ( x−b
a ), a, b ∈ R, a 6= 0
— ψ est l’ondelette mère et la famille ψa,b représente toutes les fonctions translatées et dilatées
de ψ.
— b détermine la position et a donne l’échelle.
— Cas d’un signal 1d : a est (l’inverse de) la fréquence et b le temps.
— ψ est une fonction oscillante, amortie à l’infini.

4.3.3 Transformée en ondelettes discrète


Une transformée en ondelettes est dite discrète lorsque les valeurs des translations et des dilata-
tions sont discrètes (pas nécessairement entières) :

II
Z +∞
−m 
T ond
f (m, n) = α 2 f (t)ψ α−m t − nβ dt
−∞
MN
Si on choisit α = 2 et β = 1, on parle alors de transformée dyadique.

4.3.4 Les transformations dyadiques


Généralement en remplace a et b par des valeurs discrètes. Plus précisément on choisit :
LA

— a = α−m , m ∈ Z et α > 0
— b = nβα−m , (m, n) ∈ Z2 , β 6= 0
— En pratique, on prend le plus souvent α = 2 et β = 1
Les fonctions de bases sont dénombrables et générées à partir d’une fonction mère par dilatations et
translations dyadiques :
A.

ψm,n (x) = 2m/2 ψ (2m x − n) m, n ∈ Z

par la suite indexée par Z2 suivante :

Cf (m, n) = (f, ψm,n ) m, n ∈ Z (4.1)

119
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

4.4 Définition des ondelettes : Définition d’Yves Meyer


Définition 4.4.1 (Définition d’Yves Meyer)

Soit m ∈ N un entier. Une fonction ψ d’une variable réelle sera appelée une ondelette si les
quatre propriétés suivantes sont satisfaites :
— Si m = 0, ψ ∈ L∞ (R) et si m ≥ 1, ψ, ψ ′ , ..., ψ (m) ∈ L∞ (R)
— ψ, ψ ′ , ..., ψ (m) sont à décroissance rapide à l’infini.
R
— xk ψ(x)dx = 0, ∀ 0 ≥ k ≥ m, i.e., Ceci veut dire que ψ est orthogonale à tous les
polynômes de degré
  ≤m
j
j
— 2 2 ψ(2 x − k) est une base orthonormée de L2 (R), i.e.,
j,k∈Z

X j
f (x) = aj,k 2 2 ψ(2j x − k), ∀f ∈ L2 (R)
j,k∈Z

II
Exemple 4.4.2 (Cas de Haar (1909))

— m = 0, la base de Haar
MN
Reconstruction et conservation de l’énergie
— Deux exigences sur les outils définis ci-dessus : assurer l’existence d’une formule de recons-
LA

truction de f à partir de (4.1) et une analyse non redondante. Elles conduisent à choisir Ψ de
sorte que
{ψm,n , m, n ∈ Z} (4.2)

soit une base orthonormée d’ondelettes de L2 (R).


A.

— L’espace continu peut être discrétisé sans perte d’informations.

— Dans l’équation (??), le double intégral est remplacé par une double somme :
 
1 XX 1 x−b
f (x) = wf (a, b) p ψ (4.3)
cψ |a| a

Avantages de la transformée en ondelettes


Le fait que la transformée utilise des fonctions bien localisées dans le plan temps-fréquence lui
donne beaucoup d’avantages :
— La résolution en fréquence de la transformée dépend du facteur de dilatation par le principe
de Heisenberg, on peut donc choisir arbitrairement celle-ci suivant ce que l’on désire analyser.
— Pour des signaux physiques présentant des variations très rapides et des discontinuités, l’ana-
lyse en ondelettes est adaptée car l’ondelette va détecter ces variations et les analyser. Cette
particularité rend l’analyse en ondelettes complémentaire à l’analyse de Fourier. En effet, avec
l’analyse de Fourier, les discontinuités d’un signal ne sont pas facilement analysables.
— La localisation en temps est précieuse pour beaucoup d’applications.

120
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

— La transformée en ondelette peut représenter complètement et efficacement un signal quel-


conque avec peu de coefficients.

Principe de Heisenberg
Une limite théorique c’est l’inégalité de Heisenberg.
Soit une fonction de base ψ, qu’on suppose de norme L2 (R) égale à 1 :
Z
|ψ(t)|2 dt = 1

On définit le centre c(ψ) et la largeur ∆(ψ) d’une telle fonction par

Z sZ
c(ψ) = t|ψ(t)|2 dt, ∆(ψ) = (t − c(ψ))2 |ψ(t)|2 dt

L’inégalité de Heisenberg est une in égalité fondamentale qui s’écrit :

II
∆(ψ)∆(ψ̂) >
2
MN
Si on appelle largeur fréquentielle d’une fonction ψ la largeur de sa transformée de Fourier ψ̂, cette
inégalité interdit donc d’avoir une fonction avec des largeurs temporelle et fréquentielle toutes deux
aussi petites que l’on veut.
Les fonctions gaussiennes translatées réalisent le minimum de cette limite théorie.
LA

Bases orthogonales et orthonormées


Dans un espace euclidien E de dimension n, une base B = (e1 , . . . , en ) est dite :
— Orthogonale si < ei , ej >= 0 pour tous i, j avec 1 ≤ i, j ≤ n et i 6= j
— Orthonormée si elle est orthogonale et si kei k = 1 pour  tout i = 1, .. . , n
A.

Si B = (e1 , . . . , en ) est une base orthogonale, la base est kee11 k , . . . , keenn k orthonormée.

4.4.3 Analyse multirésolution : Fonctions d’échelle


Les bases de l’analyse multirésolution telles que formulées par S. Mallat font intervenir les trans-
latées et les dilatées de deux fonctions, la fonction dite échelle-mère, notée φ(x), et la fonction dite
ondelette-mère, notée ψ(x).
— φ fonction d’échelle (fonction génératrice),
— φk (x) = φ(x − k); k ∈ Z,
— φ choisie telle que les φk soient orthogonales les unes aux autres,
— V = Vect {φk (x); k ∈ Z} ⊂ L2 (R),

4.4.4 Analyse multirésolution


— On considère E = L2 (R) L’espace vectoriel des fonction réelles et de carré intégrable
— Analyse multirésolution (AMR) de E : projeter f ∈ E sur des sous-espaces vectoriels V j de E
— Approximations de E

121
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

— L’analyse multirésolution, est un outil de traitement du signal qui permet de décomposer un


signal à plusieurs échelles (résolutions) et de le reconstruire à partir des éléments de cette
décomposition.
— Une analyse multi-résolution est un partitionnement de l’espace E par une famille de sous-
espaces vectoriels V j emboîtés les uns dans les autres.
Suivant (Meyer 1990) et (Mallat 1998), une analyse multi-résolution de L2 (R) est une suite crois-
sante de sous-espaces vectoriels (V j )j ∈ Z de L2 (R) ayant les propriétés suivantes :
1. ∀ j ∈ Z, ... ⊂ V j ⊂ V j+1 ⊂ ... ⊂ L2 (R)
\ [

II
2. V j = {0} et V j = L2 (R)
j∈Z j∈Z

3. x 7−→ f (x) ∈ V j ⇐⇒ x 7−→ f (2x) ∈ V j+1


MN
4. x 7−→ f (x) ∈ V 0 ⇐⇒ ∀ n ∈ Z, x 7−→ f (x − n) ∈ V 0
5. Il existe une fonction φ ∈ V 0 telle que la famille dénombrable (φn : x 7−→ φ(x − n))n∈Z est une base orthonormée de V 0 .

Remarque 4.4.5

La fonction φ est appelée fonction d’échelle de l’AMR.


LA

4.4.6 Analyse multirésolution : Interprétation


A.

— V j est une ’grille de lecture’ du signal de taille 2j . Cela revient à dire que la projection P V j f
d’un signal f ∈ L2 (R) est une approximation du signal à la résolution 2j .
— (1) dit qu’une approximation à la taille à la résolution 2j+1 contient toute l’information néces-
saire pour calculer l’approximation plus grossière à la résolution 2j .
— Si on dilate une fonction par 2, les détails sont deux fois plus gros.
— La condition (3) dit que la même chose est vraie pour les approximations.
— (2) dit que si on fait tendre la résolution vers +∞ on retrouve tous les détails de f .
— Les espaces V j se déduisent par dilatation de l’espace V 0 :
j
V j = vect{φj,k : x 7−→ 2 2 φ(2j x − k)|k ∈ Z}

4.4.7 Analyse multirésolution : Changement d’espace de représentation


Idée fondamentale de l’analyse multirésolution :
— Comme V j ⊂ V j+1 , ∃W j tel que V j+1 = V j ⊕ W j
— W j est le supplémentaire orthogonal de V j dans V j+1
— On appelle ondelettes (ψkj )k∈Z les formant la base W j

122
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
— Soit f ∈ L2 (R), sa décomposition en ondelettes s’écrit :
MN
V0
z
X }| { XX
f (x) = ck φ(x − k) + dj,k ψj,k (x)
k j k

R R
avec ck = R f (x)φ(x − k)dx et dj,k = R f (x)ψj,k (x)dx
LA

Analyse multirésolution : Cas de Haar


— On considère E = L2 ([0, 1[)
— La fonctions d’échelle est définie par :
A.

(
1, si x ∈ [0, 1[
φ(x) = ,
0, sinon
( √
√ 2j , si x ∈ [ 2kj , k+1
[
φj,k = 2j φ(2j x − k) = 2j
0, sinon

— V 0 l’espace vectoriel des fonctions constantes sur [0, 1[


— V 1 l’espace vectoriel des fonctions constantes sur [0, 12 [ et sur [ 12 , 1[
— V j l’espace vectoriel des fonctions constantes sur [ 2kj , k+1
2j
[, avec k = 0, ..., 2j − 1
— L’ondelette de Haar est définie par :

 si x ∈ [0, 12 [
 1,

ψ(x) = −1, si x ∈ [ 21 , 1[


 0, sinon

123
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER
 √
si x ∈ [ 2kj , 2kj + 2j+1

 j
 2 ,
1
[
√ √
et ψj,k = 2j ψ(2j x − k) = j k 1 k+1
− 2 , si x ∈ [ 2j + 2j+1 , 2j [


 0, sinon

— La famille ψj,k forme une base orthonormée d’un espace vectoriel W j (dimension 2j − 1) tel
que W j est le supplémentaire orthogonal de V j dans V j+1 . i.e., V j+1 = V j ⊕ W j

Remarque 4.4.8

φ(x) = φ(2x) + φ(2x − 1) et ψ(x) = φ(2x) − φ(2x − 1)

Algorithme de décomposition : Cas de Haar


— Soient f ∈ L2 ([0, 1[) et fj+1 la projection de f dans V j+1

2j+1
X−1
fj+1 (x) = cj+1,k φj+1,k (x)

II
k=0
MN
Remarque 4.4.9 (Algorithme de décomposition)

j −1
2X j −1
2X
fj+1 (x) = cj,k φj+1,k (x) + dj,k ψj+1,k (x)
k=0 k=0
cj+1,2k +cj+1,2k+1 cj+1,2k −cj+1,2k+1
avec cj,k = √
2
et dj,k = √
2
LA

Algorithme de reconstruction : Cas de Haar


A.

j −1
2X j −1
2X
fj (x) = cj,k φj+1,k (x) et gj (x) = dj,k ψj+1,k (x)
k=0 k=0

Remarque 4.4.10 (Algorithme de reconstruction)

2j+1
X−1
fj+1 (x) = cj+1,k φj+1,k (x)
k=0
cj,k +dj,k cj,k −dj,k
avec cj+1,2k = √
2
et cj+1,2k+1 = √
2

Application : Compression et reconstruction d’un signal


Une fois le signal est décomposé, on procédera à la compression du signal, c-à-d mettre à 0 les
coefficients que l’on considérera négligeable (c’est-à-dire dont la valeur absolue est en-dessous d’un
epsilon donné).

124
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

7
X
f3 (x) = c3 [k] φ3,k (x)
k=0
avec
c3 = [0.25, 0.5, 1, 1.5, 1.75, 0, 0.25, 0.125]

II
Exemple 4.4.11

Implémenter une telle transformation et son inverse dans trois scripts.


MN
1. Le premier script prendra comme données le signal c3 et le niveau de projection (ici
j = 3) et calculra la transformée en ondelettes (tracer tous les figure intermédiaire).

2. Le deuxième script prendra comme données la transformée en ondelettes du signal


LA

(c0 et d0 ,..., d2 ) et affichera (taracer) le signal reconstruit.

3. Le troisième script prendra comme données la transformée en ondelettes du signal


(c0 et d0 ,..., d2 ) et affichera (taracer) le signal compressé. Affichera l’erreur entre le
signal original et le signal compressé.
A.

Solution

1 f u n c t i o n [ y]= p h i _ j k ( x , j , k )
2 y=s q r t (2^ j ) ∗ p h i(2^ j ∗x−k ) ;
3 end
4

5 f u n c t i o n [ y]=p h i ( x )
6 y=(0<=x ) &(x<1) ;
7 end

1 f u n c t i o n [ y]= p s i _ j k ( x , j , k )
2 y=s q r t (2^ j ) ∗ p s i(2^ j ∗x−k ) ;
3 end
4 f u n c t i o n [ y]= p s i ( x )

125
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

5 y=(0<=x ) &(x<1/2) − . . .
6 (1/2<=x ) &(x<1) ;
7 end

1 f u n c t i o n [ c0 , d0 , d1 , d2]=decop_haat1 ( )
2 C3 = [ 0 . 2 5 , 0 . 5 , 1 , 1 . 5 , 1 . 7 5 , 0 , 0 . 2 5 , 0 . 1 2 5 ] ;
3 x = 0 : 0 . 0 0 5 : 0 . 9 9 ; s o r i g =0∗x ; j =3; n=2^j −1;
4 f o r k=0:n
5 s o r i g=s o r i g+C3( k+1)∗ p h i _ j k ( x , j , k ) ;
6 end
7 [ c2 , d2]=decomp (C3) ; [ c_x2 , d_x2]=decomp_x ( c2 , d2 , x , 2 ) ;
8 [ c1 , d1]=decomp ( c2 ) ; [ c_x1 , d_x1]=decomp_x ( c1 , d1 , x , 1 ) ;
9 [ c0 , d0]=decomp ( c1 ) ; [ c_x0 , d_x0]=decomp_x ( c0 , d0 , x , 0 ) ;
10 s u b p l o t ( 3 , 2 , [ 1 , 2 ] ) ; p l o t ( x , s o r i g , ’ LineWidth ’ , 2 )
11 t i t l e ( ’ O r i g i n a l s i g n a l : f_3 ’ ) ;
12 s u b p l o t ( 4 , 2 , 3 ) ; p l o t ( x , c_x2 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ f _ 2 ’ ) ;

II
13 s u b p l o t ( 4 , 2 , 4 ) ; p l o t ( x , d_x2 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ d_2 ’ ) ;
14 s u b p l o t ( 4 , 2 , 5 ) ; p l o t ( x , c_x1 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ f _ 1 ’ ) ;
MN
15 s u b p l o t ( 4 , 2 , 6 ) ; p l o t ( x , d_x1 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ d_1 ’ ) ;
16 s u b p l o t ( 4 , 2 , 7 ) ; p l o t ( x , c_x0 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ f _ 0 ’ ) ;
17 s u b p l o t ( 4 , 2 , 8 ) ; p l o t ( x , d_x0 , ’ LineWidth ’ , 2 ) , t i t l e ( ’ d_0 ’ ) ;
18 end
19 f u n c t i o n [ c , d]=decomp (C)
C p a i r=C ( 1 : 2 : end−1) ; Cimpair=C ( 2 : 2 : end ) ;
LA

20

21 c=(C p a i r+Cimpair ) / s q r t ( 2 ) ; d=(Cpair−Cimpair ) / s q r t ( 2 ) ;


22 end
23 f u n c t i o n [ c_x , d_x]=decomp_x ( c , d , x , j )
24 n=2^j −1; c_x=0∗x ; d_x=0∗x ;
A.

25 f o r k=0:n
26 c_x=c_x+c ( k+1)∗ p h i _ j k ( x , j , k ) ; d_x=d_x+d ( k+1)∗ p s i _ j k ( x , j , k ) ;
27 end
28 end

Même chose avec dwt de Matlab

1 f u n c t i o n [ c0 , d0 , d1 , d2]=haar_dwt ( )
2 C3 = [ 0 . 2 5 , 0 . 5 , 1 , 1 . 5 , 1 . 7 5 , 0 , 0 . 2 5 , 0 . 1 2 5 ] ;
3 %C3=rand ( 1 , 8 ) ;
4 x = 0 : 0 . 0 0 5 : 0 . 9 9 ; s o r i g =0∗x ; j =3; n=2^j −1;
5 f o r k=0:n
6 s o r i g=s o r i g+C3( k+1)∗ p h i _ j k ( x , j , k ) ;
7 end
8 [ c2 , d2 ] = dwt (C3 , ’ haar ’ ) ; [ c_x2 , d_x2]=decomp_x ( c2 , d2 , x , 2 ) ;
9 [ c1 , d1]=dwt ( c2 , ’ haar ’ ) ; [ c_x1 , d_x1]=decomp_x ( c1 , d1 , x , 1 ) ;
10 [ c0 , d0]=dwt ( c1 , ’ haar ’ ) ; [ c_x0 , d_x0]=decomp_x ( c0 , d0 , x , 0 ) ;
11 s u b p l o t ( 3 , 2 , [ 1 , 2 ] ) ; p l o t ( x , s o r i g , ’ LineWidth ’ , 2 )

126
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

12 t i t l e ( ’ Original s i g n a l : f_3 ’ ) ;
13 subplot (4 ,2 ,3) ; p l o t ( x , c_x2 , ’ LineWidth ’ ,2) , title ( ’ f_2 ’);
14 subplot (4 ,2 ,4) ; p l o t ( x , d_x2 , ’ LineWidth ’ ,2) , title ( ’ d_2 ’);
15 subplot (4 ,2 ,5) ; p l o t ( x , c_x1 , ’ LineWidth ’ ,2) , title ( ’ f_1 ’);
16 subplot (4 ,2 ,6) ; p l o t ( x , d_x1 , ’ LineWidth ’ ,2) , title ( ’ d_1 ’);
17 subplot (4 ,2 ,7) ; p l o t ( x , c_x0 , ’ LineWidth ’ ,2) , title ( ’ f_0 ’);
18 subplot (4 ,2 ,8) ; p l o t ( x , d_x0 , ’ LineWidth ’ ,2) , title ( ’ d_0 ’);
19 end

1 f u n c t i o n []=Recon ( )
2 [ c0 , d0 , d1 , d2]=decop_haat1 ( ) ;
3 c r 1=r e c o n s t r ( c0 , d0 ) ;
4 c r 2=r e c o n s t r ( cr1 , d1 ) ;
5 c r 3=r e c o n s t r ( cr2 , d2 ) ;
6 x = 0 : 0 . 0 0 5 : 0 . 9 9 ; s o r i g R=0∗x ; j =3; n=2^j −1;
7 f o r k=0:n

II
8 s o r i g R=s o r i g R+c r 3 ( k+1)∗ p h i _ j k ( x , j , k ) ;
9 end
MN
10 f i g u r e (2)
11 p l o t ( x , s o r i g R , ’ LineWidth ’ , 2 ) , g r i d on , box on
12 end
13 f u n c t i o n [ c r ]= r e c o n s t r ( c , d )
14 n=l e n g t h ( c ) ; c r =[];
f o r i =1:n
LA

15

16 c r =[ c r ( c ( i )+d ( i ) ) / s q r t ( 2 ) ( c ( i )−d ( i ) ) / s q r t ( 2 ) ] ;
17 end
18 end

f u n c t i o n []=Recon ( )
A.

2 [ c0 , d0 , d1 , d2]=haar_dwt ( ) ;
3 idwt ( c0 , d0 , ’ haar ’ ) ;
4 c r 1=idwt ( c0 , d0 , ’ haar ’ ) ;
5 c r 2=idwt ( cr1 , d1 , ’ haar ’ ) ;
6 c r 3=idwt ( cr2 , d2 , ’ haar ’ ) ;
7 x = 0 : 0 . 0 0 5 : 0 . 9 9 ; s o r i g R=0∗x ; j =3; n=2^j −1;
8 f o r k=0:n
9 s o r i g R=s o r i g R+c r 3 ( k+1)∗ p h i _ j k ( x , j , k ) ;
10 end
11 f i g u r e (2)
12 p l o t ( x , s o r i g R , ’ LineWidth ’ , 2 ) , g r i d on , box on
13 end
14 f u n c t i o n [ c r ]= r e c o n s t r ( c , d )
15 n=l e n g t h ( c ) ; c r =[];
16 f o r i =1:n
17 c r =[ c r ( c ( i )+d ( i ) ) / s q r t ( 2 ) ( c ( i )−d ( i ) ) / s q r t ( 2 ) ] ;
18 end

127
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

19 end

II
MN
LA

F IGURE 4.1 – Images correspondant à l’original a gauche.


A.

Reconstruction après compression

1 f u n c t i o n []=Recon_comr ( )
2 [ c0 , d0 , d1 , d2]=haar_dwt ( ) ;
3 idwt ( c0 , d0 , ’ haar ’ ) ;
4 e c i l o n =0.95∗sum( d2 ) / l e n g t h ( d2 ) ;
5 k1 = f i n d ( abs ( d2 )<e c i l o n ) ; d2 ( k1 ) =0;
6 k2 = f i n d ( abs ( d1 )<e c i l o n ) ; d1 ( k2 ) =0;
7 k3 = f i n d ( abs ( d0 )<e c i l o n ) ; d0 ( k3 ) =0;
8 c r 1=idwt ( c0 , d0 , ’ haar ’ ) ;
9 c r 2=idwt ( cr1 , d1 , ’ haar ’ ) ;
10 c r 3=idwt ( cr2 , d2 , ’ haar ’ ) ;
11 x = 0 : 0 . 0 0 5 : 0 . 9 9 ; s o r i g R=0∗x ; j =3; n=2^j −1;
12 f o r k=0:n

128
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

13 s o r i g R=s o r i g R+c r 3 ( k+1)∗ p h i _ j k ( x , j , k ) ;


14 end
15 f i g u r e (2)
16 p l o t ( x , s o r i g R , ’ LineWidth ’ , 2 ) , g r i d on , box on
17 end

F IGURE 4.2 – Images correspondant à l’original a gauche.

Exemple 4.4.12

II
MN
Tracer cette fonction
   2  h
 1


 ln 1 + x − 2 , if x ∈ 0, 12 [

 h

 1
sin(2πx), if x ∈ 2 , [1
f (x) =  
LA


 − ln(2)

 (1 − x) exp x , if x ∈ [1, 2[,

  2

 (3 − x) x − 5 ,
2 if x ∈ [2, 3]
A.

Solution

1 f u n c t i o n [ y]=s s 1 ( x )
2 a1=0; a2 =0.5; a3=1;a4=2;a5=3;
3 y=l o g (1+(x −0.5).^2) . ∗ ( ( a1<=x ) &(x<a2 ) ) + . . .
4 s i n (2∗ p i ∗x ) . ∗ ( ( a2<=x ) &(x<a3 ) ) + . . .
5 (1−x ) . ∗ exp(−x∗ l o g ( 2 ) /2) . ∗ ( ( a3<=x ) &(x<a4 ) ) + . . .
6 (3−x ) . ∗ ( x−5/2) . ∗ ( ( a4<=x ) &(x<=a5 ) ) ;
7 end

129
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
4.4.13 cwtft : Transformation continue en ondelettes (FFT)
— cwtft renvoie la transformée en ondelettes continues (CWT) du signal d’entrée 1-D sig.
— cwtft utilise un algorithme de FFT pour calculer la CWT. sig peut être un vecteur, un tableau
de structure ou un tableau de cellules.
— Par défaut, cwtft utilise l’ondelette analytique de Morlet.
LA

— cwtft(sig,Name,Value) renvoie la transformée en ondelettes continue (CWT) du signal d’entrée


1-D sig avec des options supplémentaires spécifiées par un ou plusieurs arguments de la paire
Name,Value.
— cwtstruct = cwtft(..., ’plot’) trace la transformée en ondelettes continue. Si l’ondelette d’analyse
A.

a une valeur réelle, le signal d’origine ainsi que les amplitudes des coefficients CWT et les
coefficients CWT signés sont tracés.
— Si l’ondelette d’analyse a une valeur complexe, le signal d’origine est tracé avec les modules,
les parties réelles, les parties imaginaires et les angles des coefficients CWT.
— Vous pouvez sélectionner la case à cocher en bas à gauche du graphique pour superposer la
reconstruction du signal à l’aide de l’icwtft.

1 N = 300; d t = 1/100; t =0: d t : 3 ;


2 y = ss1 ( t ) ;
3 s0 = 2∗ d t ; ds = 0 . 4 8 7 5 ; NbSc = 20;
4 wname = ’ morl ’ ; s i g = {y , d t } ; s c a = { s0 , ds , NbSc } ;
5 wave = {wname , [ ] } ;
6 c w t s i g = c w t f t ( s i g , ’ s c a l e s ’ , sca , ’ w a v e l e t ’ , wave ) ;
7 % Compute i n v e r s e CWT and p l o t
8 % r e c o n s t r u c t e d s i g n a l with o r i g i n a l
9 s i g r e c = i c w t f t ( cwtsig , ’ s i g n a l ’ , sig , ’ p l o t ’ ) ;
10 f i g u r e (2)
11 scales = cwtsig . scales ;

130
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

12 M o r l e t F o u r i e r F a c t o r = 4∗ p i /(6+ s q r t (2+6^2)) ;
13 freq = 1./( scales .∗ MorletFourierFactor ) ;
14 contour ( t , freq , r e a l ( cwtsig . c f s ) ) ;
15 x l a b e l ( ’ Seconds ’ ) ; y l a b e l ( ’ Pseudo−f r e q u e n c y ’ ) ;
16 a x i s ( [ 0 t ( end ) 0 15]) ;

II
MN
LA
A.

131
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

4.4.14 Ondelettes et Singularités

II
MN
— Une singularité dans un signal (qui peut être à plusieurs dimensions pour une image) corres-
pond mathématiquement à un point où le signal n’est pas continu ou n’admet pas de dérivée
première continue. discontinuités, maxima locaux de la courbure.
— A l’échelle fixée les coefficients en ondelettes seront maximum autour du point où le signal est
singulier.
LA

1 clc ; clear ; close a l l ;


2 x =0:1:300; y=s s 1 ( x /100) ;
3 p l o t ( x , y , ’ LineWidth ’ , 3 ) ; g r i d on ;
4 CWTcoeffs = cwt ( y , 1 : 1 3 0 , ’ haar ’ ) ;
A.

5 figure
6 hold on
7 cwt ( y , 1 : 3 0 , ’ db4 ’ , ’ p l o t ’ ) ;
8 colormap j e t ; c o l o r b a r ;
9 p l o t ( x , y ∗10 , ’ LineWidth ’ , 5 )
10 f i g u r e % Quelques e c h e l l e s de v i s u a l i s a t i o n
11 s u b p l o t (311) ; p l o t ( CWTcoeffs ( 5 , : ) ) ; t i t l e ( ’ S c a l e 5 ’ ) ;
12 s u b p l o t (312) ; p l o t ( CWTcoeffs ( 1 0 , : ) ) ; t i t l e ( ’ S c a l e 10 ’ ) ;
13 s u b p l o t (313) ; p l o t ( CWTcoeffs ( 3 0 , : ) ) ; t i t l e ( ’ S c a l e 30 ’ ) ;
14 figure
15 s u r f ( CWTcoeffs ) ; colormap j e t ;
16 p l o t 3 ( x , 0 ∗ y , y ’ , ’ LineWidth ’ , 5 )
17 shad ing ( ’ i n t e r p ’ ) ;
18 % Compute and p l o t t h e scalogram ( c o n t o u r o p t i o n )
19 figure ;
20 SC = wscalogram ( ’ c o n t o u r ’ , CWTcoeffs ) ;

132
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
LA
A.

133
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
LA

4.4.15 Débruitage avec ondelette


— Bruit : nuisances sur le signal ou l’image (tout ce qu’on ne veut pas). En général aléatoire.
— Origine : perturbations à l’acquisition (électronique, lentilles, capteurs,humidité, tempéra-
A.

ture,...), bruit sur document initial,échantillonnage.


— Souvent Bruit additif (constant ou gaussien) noté n(x, y). g(x, y) = f (x, y) + n(x, y) (variable
aléatoire)
— Parfois Bruit multiplicatif noté m(x, y) g(x, y)) = m(x, y) ∗ f (x, y)

1 N = 300; d t = 1/100; t =0: d t : 3 ;


2 y = s s 1 ( t ) ; s i g = y + 0.06∗ randn ( s i z e ( t ) ) ;
3 f i g u r e % Quelques e c h e l l e s de v i s u a l i s a t i o n
4 s u b p l o t (211) ; p l o t ( t , y , ’ LineWidth ’ , 3 ) ; t i t l e ( ’ S i g n a l ’ ) ;
5 s u b p l o t (212) ; p l o t ( t , s i g , ’ LineWidth ’ , 3 ) ; t i t l e ( ’ n o i s e s i g n a l ’ ) ;
6 wname = ’ haar ’ ; l e v = 3 ; %wname = ’ db4 ’ ;
7 xdDWT = wden( s i g , ’ sqtwolog ’ , ’ s ’ , ’ mln ’ , l e v , wname) ;
8 xdMODWT = wden( s i g , ’ modwtsqtwolog ’ , ’ s ’ , ’ mln ’ , l e v , wname) ;
9 figure , subplot (2 ,1 ,1) ,
10 p l o t ( t , xdDWT, ’ LineWidth ’ , 3 ) , t i t l e ( ’DWT D e n o i s i n g ’ ) ;
11 subplot (2 ,1 ,2)
12 p l o t ( t ,xdMODWT, ’ LineWidth ’ , 3 ) , t i t l e ( ’MODWT D e n o i s i n g ’ ) ;

134
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
LA
A.

1 t =0:1:300; x=s s 1 ( t /100) ;


2 % Perform w a v e l e t d e c o m p o s i t i o n o f t h e s i g n a l .
3 n = 5 ; w = ’ db6 ’ ;
4 [ c , l ] = wavedec ( x , n ,w) ;
5 % Compress u s i n g a f i x e d t h r e s h o l d .
6 t h r = 2 ; keepapp = 1 ;
7 [ xd , cxd , lxd , p er f0 , p e r f l 2 ]=wdencmp( ’ g b l ’ , c , l , w, n , t h r , ’ h ’ , keepapp ) ;
8 % P l o t o r i g i n a l and de−n o i s e d s i g n a l s .
9 f i g u r e (1)
10 s u b p l o t (211) , p l o t ( x ) , t i t l e ( ’ O r i g i n a l s i g n a l ’ )
11 s u b p l o t (212) , p l o t ( xd ) , t i t l e ( ’ Compressed s i g n a l ’ )
12 x=x+ 0.06∗ randn ( s i z e ( t ) ) ;
13 [ t h r , sorh , keepapp ] = ddencmp ( ’ den ’ , ’ wv ’ , x ) ;
14 xd = wdencmp( ’ g b l ’ , x , ’ db4 ’ , 5 , t h r , sorh , keepapp ) ;
15 f i g u r e (2)
16 s u b p l o t (211) , p l o t ( x ) ; t i t l e ( ’ O r i g i n a l S i g n a l ’ ) ;
17 s u b p l o t (212) , p l o t ( xd ) ; t i t l e ( ’ Denoised S i g n a l ’ ) ;

135
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
LA
A.

4.4.16 Ondelettes et traitement d’image


Le traitement par ondelettes d’une image peut avoir pour objectifs :
— Rendre nette
— Amélioration du contraste
— Compression
— Débruitage
— Détection des contours
— Reconnaissance des formes
— ...
— Une image est une fonction z = f (x, y) ou d’un pixel et z est son niveau de gris. x et y sont les
coordonnées d’un pixel et z est son niveau de gris.
— On présente ici la décomposition 2D dans la base de Haar et la base des splines de degrée 1
— L’approche couramment utilisée pour passer de la transformation 1D à la transformation 2D
(images) est le produit tensoriel
— La base standard 2D des ondelettes correspond au produit tensoriel entre l’ensemble des fonc-
tions de base 1D

136
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

4.4.17 Algorithmes de dé composition et de reconstruction


Soit fk,l un approximant de f dans l’espace Vk ⊗ Vl , où ⊗ désigne le produit tensoriel. Alors fk,l
s’écrit dans cet espace sous la forme :
nk X
X nl
fk,l (θ, φ) = Ck,l (i, j) vi,k (θ) vj,l (φ),
i=1 j=1

qu’on peut écrire sous la forme matricielle fk,l = vkT Ck,l vl , où Ck,l = (Ck,l (i, j)) .
1≤i≤nk

1≤j≤nl
D’après les décompositions Vk = Vk−1 ⊕ Wk−1 et Vk = Vk−1 ⊕ Wk−1 on obtient : d’où fk,l se décompose
(1) (2) (3)
comme suit : fk,l = fk−1,l−1 + dk−1,l−1 + dk−1,l−1 + dk−1,l−1 Avec

II
T
fk−1,l−1 = vk−1 Ck−1,l−1 vl−1 ∈ Vk−1 ⊗ Vl−1 ,
(1) T (1)
dk−1,l−1 = vk−1 Dk−1,l−1 wl−1 ∈ Vk−1 ⊗ Wl−1 ,
MN
(2) T (2)
dk−1,l−1 = wk−1 Dk−1,l−1 vl−1 ∈ Wk−1 ⊗ Vl−1 ,
(3) T (3)
dk−1,l−1 = wk−1 Dk−1,l−1 wl−1 ∈ Wk−1 ⊗ Wl−1 .

On note Gk = (hvi,k , vj,k i)1≤i,j≤nk , Hk = (hwi,k , wj,k i)1≤i,j≤nk , Gl = (hvi,l , vj,l i)1≤i,j≤nl et Hl =
LA

(hwi,l , wj,l i)1≤i,j≤nl les matrices de Gram associées aux bases {vi,k }, {wi,k }, {vi,l } et {wi,l } respective-
ment.

Comme ces familles sont linéairement indépendantes alors les matrices Gk , Hk , Gl et Hl sont inver-
sibles. De plus, il est facile de vérifier que Hk−1 = Qk Gk Qk T et Hl−1 = Ql Gl Ql T . Pour calculer les
A.

(r)
matrices Ck−1,l−1 et Dk−1,l−1 , 1 ≤ r ≤ 3, en fonction de Ck,l et inversement, on utilise les deux
algorithmes suivants :

Algorithme 4.4.18 (Algorithme de décomposition)

(1)
Gk−1 Ck−1,l−1 Gl−1 = Pk Bk,l Pl T , Gk−1 Dk−1,l−1 Hl−1 = Pk Bk,l Ql T ,
(2) (3)
Hk−1 Dk−1,l−1 Gl−1 = Qk Bk,l Pl T et Hk−1 Dk−1,l−1 Hl−1 = Qk Bk,l Ql T

où Bk,l = Gk Ck,l Gl .

Algorithme 4.4.19 (Algorithme de reconstruction)

(1) (2) (3)


Ck,l = PkT Ck−1,l−1 Pl + PkT Dk−1,l−1 Ql + Qk T Dk−1,l−1 Pl + Qk T Dk−1,l−1 Ql .

137
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

Mise en oeuvre de la méthode


fk,l est entièrement déterminé par C = Ck,l d’ordre nk × nl .
Décomposition :
(r)
La première étape de la procédure de décomposition on calcule les matrices Ck−1,l−1 et Dk−1,l−1 , pour
1 ≤ r ≤ 3, par l’algorithme de décomposition (a), puis on les stockent dans la matrice
 
 (1) 
 Ck−1,l−1 Dk−1,l−1 
 
 
 
A=

.

 
 (2) (3)

 Dk−1,l−1 Dk−1,l−1 
 

On répète la même procédure pour les matrices


Ck−j,l−j , 1 ≤ j ≤ ρ = min(k, l) − 1.
A la fin on obtient A sous la forme :

II
 
(1)
Ck−ρ,l−ρ D
 
k−ρ,l−ρ
MN
 
 
 
 D
(2)
D
(3) 
 k−ρ,l−ρ k−ρ,l−ρ 
 
 (1) 
 Dk−1,l−1 
 
 .. 
 . 
A= .
 
 
LA

 
 
 
 
 
 
 (2) (3) 
 Dk−1,l−1 Dk−1,l−1 
 
A.

(r)
Les éléments des matrices Dk−j,l−j , 1 ≤ j ≤ ρ et 1 ≤ r ≤ 3, sont les coefficients d’ondelettes.
Seuillage :
• Eeliminer tous les cœfficients d’ondelettes dont le module est inférieur à un seuil ǫ donné.
Reconstruction :
c .
En utilisant l’algorithme de reconstruction on obtient fk,l

Compression : Définitions

La compression de données traite la manière dont on peut réduire l’espace nécessaire à la représenta-
tion d’une certaine quantité d’information.
T aille Initial
Quotient de compression : Qcomp = T aille F inale .
1
Taux de compression : τcomp = Qcomp .
T aille Initial−T aille F inale
Gain de compression : Gcomp = 1 − τcomp = T aille Initial .

138
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

Cas des images


L’AMR 2D donne 4 images :
— L’image en haut à gauche contient une approximation de l’image originale.
— L’image en haut à droite contient les détails horizontaux.
— L’image en bas à gauche contient les détails verticaux.
— L’image en bas à droite contient les détails diagonaux.
La procédure de décomposition est itérée sur l’image d’approximation.

II
Résultat de la décomposition en ondelettes = 4 petites images
— Une image ’Flou’ : représente la réduction de l’image source
MN
— Trois images ’Détails’ : contiennent les infos de hautes fréquences spatiales perdues lors de la
réduction.
— Le passage d’une couche à une autre se fait en prenant l’image réduite (Flou), il y a alors 4 fois
moins de points à traiter.
LA
A.

4.4.20 Ondelette de Haar 2D : Cas des images


Algorithme de décomposition du niveau j au niveau j − 1

cj−1,k,l = (1/4) (cj,2k,2l + cj,2k,2l+1 + cj,2k+1,2l + cj,2k+1,2l+1 )


dhj−1,k,l = (1/2) (−cj,2k,2l + cj,2k,2l+1 − cj,2k+1,2l + cj,2k+1,2l+1 )
dvj−1,k,l = (1/2) (−cj,2k,2l − cj,2k,2l+1 + cj,2k+1,2l + cj,2k+1,2l+1 )
ddj−1,k,l = (1/2) (cj,2k,2l − cj,2k,2l+1 − cj,2k+1,2l + cj,2k+1,2l+1 )

139
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

Algorithme de reconstruction du niveau j − 1 au niveau j :


 
cj,2k+1,2l+1 = (1/2) cj−1,k,l + dhj−1,k,l + dvj−1,k,l + ddj−1,k,l
 
cj,2k,2l = (1/2) cj−1,k,l − dhj−1,k,l − dvj−1,k,l + ddj−1,k,l
 
cj,2k,2l+1 = (1/2) cj−1,k,l + dhj−1,k,l − dvj−1,k,l − ddj−1,k,l

II
 
cj,2k+1,2l = (1/2) cj−1,k,l − dhj−1,k,l + dvj−1,k,l − ddj−1,k,l
MN
LA
A.

Exercice 4.4.21 (Exercice : Ondelette de Haar 2D - Cas des images)

On choisit une image du type 2j × 2j (j est alors fixé).


— implémenter l’algorithme de décomposition jusqu’au niveau j = 0.
— implémenter l’algorithme reconstruction.

Exemple 4.4.22

Exemple des 3 premiers niveaux d’une décomposition en ondelettes de Haar de l’image de


darly.

Solution : Ondelette de Haar 2D - Cas des images

140
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

1 o r i g=imread ( ’ I 2 . png ’ ) ;
2 A=rgb2gray ( o r i g ) ;
3 Im = i m r e s i z e (A , [256 256]) ; n=l e n g t h ( Im ) ;
4 imshow ( Im )
5 A=double ( Im ( 1 : 2 : n −1 ,1:2: n−1) ) ;
6 B=double ( Im ( 2 : 2 : n , 2 : 2 : n ) ) ;
7 C=double ( Im ( 1 : 2 : n −1 ,2:2: n ) ) ;

II
8 D=double ( Im ( 2 : 2 : n , 1 : 2 : n−1) ) ;
9 Im0=(A+B+C+D) / 4 ;
MN
10 I m v e r t =(1/2) ∗(A−B+C−D) ;
11 Imhor =(1/2) ∗(A−C−B+D) ;
12 Imdiag =(1/2) ∗(A−C+B−D) ;
13 f i g u r e , imshow ( [ Im0 im2uint8 ( mat2gray ( I m v e r t ) ) ; . . .
14 im2uint8 ( mat2gray ( Imhor ) ) im2uint8 ( mat2gray ( Imdiag ) ) ] )
LA

dwt2

1 o r i g=imread ( ’ I 2 . png ’ ) ;
2 X=rg b2gr ay ( o r i g ) ;
A.

3 n b c o l = s i z e (map, 1 ) ;
4 % Perform s i n g l e −l e v e l d e c o m p o s i t i o n
5 % o f X u s i n g haar .
6 [ cA1 , cH1 , cV1 , cD1 ] = dwt2 (X , ’ haar ’ ) ;
7

8 s u b p l o t (121) ; imshow (X , map) ;


9 t i t l e ( ’ Original signal ’ ) ;
10 s u b p l o t (122) ; imshow ( u i n t 8 ( [ cA1 , cH1 ; cV1 , cD1 ] ) ) ;
11 t i t l e ( ’ Approx . c o e f . f o r haar ’ ) ;

141
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

wavedec2, appcoef2 & detcoef2

1 close a l l ; clear ; clc

II
2 o r i g=imread ( ’ I 2 . png ’ ) ;
3 img=rgb2gray ( o r i g ) ;
MN
4 f i g u r e ; imshow ( img ) ;
5 [ c , s]=wavedec2 ( double ( img ) , 1 , ’ haar ’ ) ;
6

7 % appcoef2 : E x t r a c t a p p r o x i m a t i o n c o e f f i c i e n t s
8 % at l e v e l 1.
LA

9 ca1 = appcoef2 ( c , s , ’ haar ’ , 1 ) ;


10

11 % detcoef2 : Extract d e t a i l s c o e f f i c i e n t s at l e v e l 1
12 % i n each o r i e n t a t i o n , from w a v e l e t d e c o m p o s i t i o n
13 % structure [c , s ].
A.

14 [ chd1 , cvd1 , cdd1 ] = d e t c o e f 2 ( ’ a l l ’ , c , s , 1 ) ;


15 figure
16 s u b p l o t (121) ; imshow ( img ) ; t i t l e ( ’ O r i g i n a l s i g n a l ’ ) ;
17 s u b p l o t (122) ; imshow ( u i n t 8 ( [ ca1 /4 , chd1 ; cvd1 , cdd1 ] ) ) ;
18 t i t l e ( ’ Approx . c o e f . f o r haar ’ ) ;

142
4.4. DÉFINITION DES ONDELETTES : DÉFINITION D’YVES MEYER

II
MN
LA
A.

143

Vous aimerez peut-être aussi