0% ont trouvé ce document utile (0 vote)
64 vues7 pages

Chapitre3 CAH

Le chapitre présente la classification ascendante hiérarchique (CAH), un algorithme qui regroupe des observations en fonction de leur distance ou dissimilarité. Il décrit les critères d'agrégation utilisés pour former des classes, notamment le critère de Ward, et illustre l'application de la CAH sur des données de températures de villes européennes. Les résultats montrent que le choix du critère d'agrégation influence fortement les résultats, et une comparaison avec la méthode K-means révèle une forte similarité entre les partitions obtenues.

Transféré par

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

Chapitre3 CAH

Le chapitre présente la classification ascendante hiérarchique (CAH), un algorithme qui regroupe des observations en fonction de leur distance ou dissimilarité. Il décrit les critères d'agrégation utilisés pour former des classes, notamment le critère de Ward, et illustre l'application de la CAH sur des données de températures de villes européennes. Les résultats montrent que le choix du critère d'agrégation influence fortement les résultats, et une comparaison avec la méthode K-means révèle une forte similarité entre les partitions obtenues.

Transféré par

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

Chapitre 38

Classification ascendante hiérarchique

8.1 Algorithme
Le but de la classification hiérarchique est de fournir une hiérarchie. Il existe deux ap-
proches :
— la classification descendante : on divise successivement ⌦ en deux parties, etc...
— la classification ascendante : on part des singletons qu’on regroupe par deux, etc...
On s’intéressera uniquement à la classification ascendante hiérarchique (CAH). Pour pou-
voir regrouper des parties de ⌦, il faut définir des critères d’agrégation
— distance ou dissimilarité entre les observations

dM (x, y) 2 R+ , x, y 2 ⌦.

— distance ou dissimilarité entre les classes

D(A, B) 2 R+ ,

où A et B sont deux classes et D est une fonction de dM .


On présente maintenant l’algorithme de la CAH

Algorithme 2 : Algorithme de de CAH


Data : x1 , . . . , xn
Initialisation : définir la partition P [0] consistuée des singletons;
for m = 1, . . . , K 1 do
calculer les distances deux à deux entre les classes de la partition P [m 1] à l’aide de
D;
former la partition P [m] en regroupant les deux classes de P [m 1] les plus proches au
sens de D;
end
Result : Hiérarchie indicée
L’algorithme de la CAH fournit une hiérachie indicée où D est l’indice si D est croissante.

69
8.2 Les critères d’agrégation usuels
Définition 8.2.1. Soit A et B deux classes de ⌦, on a les critères d’agrégation suivants :
— critère du saut minimum ("single linkage")

D(A, B) = min{dM (x, y); x 2 A, y 2 B}.

— critère du saut maximum ("complete linkage")

D(A, B) = max{dM (x, y); x 2 A, y 2 B}.

— critère de la distance moyenne ("average linkage")


P P
x2A y2B dM (x, y)
D(A, B) = ,
nA nB
où nA = card(A) et nB = card(B).
— critère de Ward
nA nB 2
D(A, B) = d (µA , µB ),
nA + nB M
P P
µA = n1A x2A x, µB = n1B y2B y.
Notons que les critères du saut minimum et du saut maximum sont plus sensibles aux
observations atypiques car ils ne basent que sur une observation de chaque classe. Nous
donnons maintenant une propriété de la CAH associée au critère de Ward.
Propriété 8.2.1. L’utilisation de l’indice de Ward permet de regrouper, à chaque étape
de l’algorithme de la CAH, les classes dont la fusion permet le plus faible gain d’inertie
intra-classe.

Preuve de la Propriété 8.2.1. Supposons qu’on dispose, à l’itération m, de la partition


P [m] = {P1 , . . . , PK , A, B} et que, sans perte de généralité, on regroupe à l’itération
m + 1 les classes A et B. De sorte que P [m+1] = {P1 , . . . , PK , {A, B}}. On a
K X
X n X X
[m]
W (P )= zik d2M (xi , µk ) + d2M (xi , µA ) + d2M (xi , µB ),
k=1 i=1 i2A i2B

et
K X
X n X
[m+1]
W (P )= zik d2M (xi , µk ) + d2M (xi , µAB ),
k=1 i=1 i2{A,B}
Pn P P
où µk = i=1 zik xi , µA = n1A i2A xi , µB = n1B i2B xi , nA est le nombre d’observations
affectées à la classe A, nB est le nombre d’observations affectées à la classe B, et
1 X nA nB
µAB = xi = µA + µB .
nA + nB nA + nB nA + nB
i2{A,B}

De plus, X X X
d2M (xi , µAB ) = d2M (xi , µAB ) + d2M (xi , µAB ).
i2{A,B} i2A i2B

70
En appliquant le théorème de Huygens, on a
X X
d2M (xi , µAB ) = d2M (xi , µA ) + nA d2M (µA , µAB )
i2A i2A

et X X
d2M (xi , µAB ) = d2M (xi , µA ) + nB d2M (µB , µAB ).
i2B i2B

Ainsi, en notant = W (P [m+1] ) W (P [m] ), on a

= nA d2M (µA , µAB ) + nB d2M (µB , µAB ).

Or
✓ ◆2
nA nB
d2M (µA , µAB ) = µA µA µB
nA + nB nA + nB
✓ ◆2
nB
= (µA µB )
nA + nB
✓ ◆2
nB
= d2M (µA , µB ).
nA + nB

⇣ ⌘2
De la même façon, on a d2M (µB , µAB ) = nA
nA +nB
d2M (µA , µB ). Ainsi

nA n2B + n2A nB 2
= d (µA , µB )
(nA + nB )2 M
nA nB 2
= d (µA , µB ).
nA + nB M
La perte minimale d’inertie inter-classe est donc bien obtenue lorsque l’on minimise le
critère de Ward.

8.3 Exemple d’une CAH sur données réelles


On considère la même problématique sur les températures des villes européennes présentée
dans le Chapitre 7. On commence par vider l’environement de R, puis on charge les
données à partir du fichier csv.
rm(list=ls())
setwd("~/Documents/enseignements/ENSAI/1A/SEM/exemples/data/")
require(FactoMineR)

Loading required package: FactoMineR

71
require(cluster)

Loading required package: cluster


require(VarSelLCM)

Loading required package: VarSelLCM

Attaching package: ’VarSelLCM’


The following object is masked from ’package:stats’:

predict
# Importation des donnees
temperature <- read.table("temperatures.csv",
header = TRUE,
sep = ";",
dec = ".",
row.names = 1)

Nous ne reproduisons pas les statistiques descriptives (voir Chapitre 7). Nous effectuons
le clustering par la méthode de la classification ascendante hiérarchique. Nous conservons
les mêmes élèments actifs que pour l’ACP. Afin de conserver la même métrique, nous
standardisons les données car la fonction agnes de R ne premet pas de spécifier la métrique
(l’argument “metric” permet de déterminer la nature de la distance utilisée). On effectue
la CAH avec le critère de Ward et aussi avec le critère du saut minimum. On constate
que le choix du critère d’agrégation impacte fortement les résultats. Le dendrogramme
associé au saut minimum est caractéristique de celui-ci. Cependant, comme ce critère est
sensible aux valeurs extrêmes, nous analysons les résultas obtenus avec le critère de Ward.
Avec le critère de Ward, 2 ou 3 classes peuvent être sélectionnées. Ici, nous privilégions
une interprétation en 3 classes.
require(cluster)
dataTocluster <- scale(temperature[1:23, 1:12])
res.CAHward <- agnes(dataTocluster, metric = "euclidean", method = "ward")
res.CAHmini <- agnes(dataTocluster, metric = "euclidean", method = "single")
plot(res.CAHward)

72
Banner of agnes(x = dataTocluster, metric = "euclidean", method =
"ward")
Amste
Londr
Dubli
Pragu
Sofia
Copen
Craco
Oslo
Minsk
Reykj
Lisbo
Rome

0 2 4 6 8 10 12 14 16
Height
Agglomerative Coefficient = 0.91

Dendrogram of agnes(x = dataTocluster, metric = "euclidean", method =


"ward")
15
10
5
Height

Reykjavik
0

Athenes
Lisbonne
Budapest
Copenhague
Dublin

Madrid
Rome
Paris

Kiev
Cracovie
Helsinki
Berlin

Minsk
Moscou
Oslo
Stockholm
Londres

Prague
Sarajevo
Sofia
Amsterdam
Bruxelles

dataTocluster
Agglomerative Coefficient = 0.91

plot(res.CAHmini)
Banner of agnes(x = dataTocluster, metric = "euclidean", method =
"single")
Amste
Londr
Dubli
Pragu
Sofia
Kiev
Budap
Oslo
Minsk
Athen
Madri
Reykj

0 0.5 1 1.5 2 2.5 3 3.41


Height
Agglomerative Coefficient = 0.66

73
Dendrogram of agnes(x = dataTocluster, metric = "euclidean", method =
"single")

3.5

Reykjavik
2.5
1.5

Athenes
Height

Lisbonne
Budapest

Madrid
Rome
Copenhague
0.5

Kiev
Dublin

Cracovie

Helsinki

Minsk
Moscou
Paris

Oslo
Stockholm
Berlin
Prague
Londres

Sarajevo
Sofia
Amsterdam
Bruxelles
dataTocluster
Agglomerative Coefficient = 0.66

Nous commençons par comparer les résultats obtenus par les Kmeans à ceux obtenus
par la CAH associée au critère de Ward. Pour cela, nous récupérons la partition de la
CAH en 3 classes par la fonction cutree. On affiche la matrice de confusion entre les
deux partitions ainsi que la valeur du critère ARI. La valeur du critère ARI nous indique
une forte proximitée entre ces deux partitions (on pouvait s’y attendre vu le lien entre le
critère de ward et l’inertie intra-classe). On constate que les deux méthodes identifie une
classe minoritaire identique (composée de 4 capitales située en méditerranée) groupant
les capitales les plus chaudes.
partitionCAH <- cutree(res.CAHward, 3)
res.kmeans <- kmeans(dataTocluster, 3)
table(res.kmeans$cluster, partitionCAH)

partitionCAH
1 2 3
1 0 4 0
2 12 0 0
3 1 0 6
ARI(res.kmeans$cluster, partitionCAH)

[1] 0.8490153
L’interprétation de la partition en 3 issue de la CAH peut se faire à partir de statistiques
calculées classe par classe. L’interprétation est similaire à celle faite pour les K-means.
by(dataTocluster, partitionCAH, colMeans)

INDICES: 1
Janvier Fevrier Mars Avril Mai Juin
0.002065964 0.014499456 0.066940535 0.059441314 0.013708569 -0.099199185
Juillet Aout Septembre Octobre Novembre Decembre
-0.154566129 -0.092949694 -0.020700134 0.016567019 -0.016687638 -0.009417904
------------------------------------------------------------
INDICES: 2
Janvier Fevrier Mars Avril Mai Juin Juillet Aout
1.496258 1.561010 1.567183 1.604964 1.446530 1.540304 1.637635 1.683786
Septembre Octobre Novembre Decembre

74
1.730971 1.689456 1.678195 1.539356
------------------------------------------------------------
INDICES: 3
Janvier Fevrier Mars Avril Mai Juin Juillet
-1.0019817 -1.0720889 -1.1898264 -1.1987653 -0.9940555 -0.8119380 -0.7568631
Aout Septembre Octobre Novembre Decembre
-0.9211327 -1.1091304 -1.1621989 -1.0826402 -1.0058322

75

Vous aimerez peut-être aussi