Vous êtes sur la page 1sur 16

ENIT 2ème année MINDS

TP n°3 : Arbre hiérarchique ascendante avec R

Données :

Segmentation et Classification d’un


ensemble de véhicules

On utilise le fichier « cars_dataset.txt », un fichier


texte avec séparateur tabulation. Il décrit les
caractéristiques de 392 véhicules. Les variables
actives qui participeront au calcul sont :
- La consommation (MPG, miles per galon,
plus le chiffre est élevé, moins la voiture
consomme) ;
- La taille du moteur (DISPLACEMENT)
- La puissance (HORSEPOWER)
- Le poids (WEIGHT)
- L’accélération (ACCELERATION, le temps
mis pour atteindre une certaine vitesse, plus
le chiffre est faible plus la voiture est
performante).
- La variable illustrative « origine des
véhicules » (ORIGIN : Japon, Europe, Etats
Unis) servira à renforcer l’interprétation des
groupes.

Sources :
http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/cars_dataset.zip
http://lib.stat.cmu.edu/datasets/cars.desc

1. Importation des données / centrer et réduire les données

# Importation des données


voitures <- read_excel("E:/analyse des données/cars_datasetn.xlsx")
# centrer et réduire les données avec la commande scale()

2.X=scale(voitures[,1:5],
Centrage et réduction :
center = TRUE, scale = TRUE)

2. Application de la méthode arbre hiérarchique ascendante

On propose de concevoir une partition de trois groupes (trois clusters) avec AHA.

1
Walid Ayadi
ENIT 2ème année MINDS

Application de la classification hiérarchique ascendante :

 Appliquer la fonction hclust() avec fonction dist() sur les données centrées et réduites en utilisant toutes les
variables quantitatives disponibles (varier l’argument method et proposer le meilleur dendrogramme).

#Méthode de saut minimum

d=dist(X, method='euclidean')

hc=hclust(d, method='single')

plot(hc,hang=-1,cex=0.5)

 En déduire le dendrogramme associé  :

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes.

2
Walid Ayadi
ENIT 2ème année MINDS

class=cutree(hc,k=3)

rect.hclust(hc, k=3, border='red ') #dessine les classes sur le dendrogramme

 Compléter le tableau de contingence

 Remarques : si on applique la méthode d’agrégation de saut minimum pour partitionner les


voitures selon l’origine, on aboutit à un problème de chainage au niveau des dendrogrammes. En
effet, on se retrouve avec un groupe qui a une grande taille et deux autres qui sont extrêmement
petits. Ceci est même dévoilé par la matrice de confusion. D’où on est face à une mauvaise
classification de jeu des données.

Dans la suite, on va rassembler des individus selon un autre critère de ressemblance en adoptant la
méthode de distance maximum

3
Walid Ayadi
ENIT 2ème année MINDS

#Méthode de distance maximum

d=dist(X, method='euclidean')

hc=hclust(d, method='complete')

plot(hc,hang=-1,cex=0.5)

 En déduire le dendrogramme associé  :

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes.

class=cutree(hc,k=3)

rect.hclust(hc, k=3, border='red ') #dessine les classes sur le dendrogramme

4
Walid Ayadi
ENIT 2ème année MINDS

 Compléter le tableau de contingence

 Remarques : Le critère de distance maximum ne semble pas aussi adéquat. C’est


vrai qu’on a réussi à réduire l’effet de chainage mais le problème de la mauvaise
classification persiste. Les voitures sont concentrées dans le premier cluster. On
souligne la présence de toutes les voitures japonaises ainsi qu’une proportion très
importante des chacun des autres types dans le premier cluster.

On applique maintenant la méthode average

#Méthode average

d=dist(X, method='euclidean')
5
hc=hclust(d, method='average')
Walid Ayadi

plot(hc,hang=-1,cex=0.5)
ENIT 2ème année MINDS

 En déduire le dendrogramme associé  :

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes.

6
Walid Ayadi
ENIT 2ème année MINDS

 Compléter le tableau de contingence

Remarque La classification est aussi mauvaise pour la méthode average


Sous la lumière de ces résultats, on migre vers une autre méthode d’agrégation,
notamment la méthode de ward.

#Méthode de ward

d=dist(X, method='euclidean')

hc=hclust(d, method='ward')

plot(hc,hang=-1,cex=0.5)

 En déduire le dendrogramme associé  :

7
Walid Ayadi
ENIT 2ème année MINDS

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes.

class=cutree(hc,k=3)

rect.hclust(hc, k=3, border='red ') #dessine les classes sur le dendrogramme

8
Walid Ayadi
ENIT 2ème année MINDS
 Compléter le tableau de contingence

 Remarques : Le dendrogramme de cette méthode s’avère meilleure que les autres


méthodes. Mais, nous sommes toujours face à un problème qui nous empêche de
faire une partition concrète selon l’origine de la voiture. Ceci est illustré par la
matrice de confusion ou on voit les deux voitures européennes et japonaises
concentrées dans le premier cluster et les voitures américaines presque équiréparties
sur les trois clusters.
 Comparer les résultats de hclust() avec les résultats de kmeans().
Matrice de contingence de la méthode K-means :

1 2 3
Americain 103 97 45
European 22 0 46
Japanese 19 0 60

Les deux méthodes de classifications semblent inefficaces pour faire une partition concrète selon
l’origine de la voiture. Ce qui est en contradiction avec notre objectif.

Autre piste pour la méthode de ward :


Pour obtenir une partition de la population, il suffit de découper le dendrogramme obtenu à une certaine
hauteur. En premier lieu, une analyse de la forme du dendrogramme pourra nous donner une indication
sur le nombre de classes à retenir. Dans notre exemple, deux branches bien distinctes apparaissent sur
l’arbre.

Pour nous aider, nous pouvons représenter les sauts d’inertie du dendrogramme selon le nombre de
clusters

inertie <- sort(hc$height, decreasing = TRUE)

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

On remarque que si on passe de deux classes à une classe, on perd une grande part de l’inertie
Interclasse. D’où l’intérêt de choisir deux classes. Donc il n’est pas possible de faire une partition suivant
l’origine et en se basant sur la méthode de la classification hiérarchique ascendante.

9
Walid Ayadi
ENIT 2ème année MINDS
Les éventuelles causes des ces mauvais résultats sont  :

 Les variables qui distinguent ces origines des voitures ne sont pas riches et bien choisies.
Par conséquent, on se trouve face à un problème d’une bonne segmentation.
 L’échantillon des données qu’on vient d’utiliser n’est pas de grande tailles et riche.

II. Les variables du fichier Cultures_raisin.txt sont TEMPERATURE : Somme des températures moyennes
journalières, SOLEIL : Durée d’insolation, CHALEUR : Nombre de jours de grande chaleur, PLUIE :
Hauteur des pluies, QUALITE DU RAISIN : Bon, Moyen, Mauvais.

Refaire le même travail sur le fichier Cultures_raisin.txt afin de classer les observations selon les classes de
la variable QUALITE DU RAISIN.

#Importation des données et standardisation

Cultures_raisin <- read_excel("E:/analyse des données/Cultures_raisin.xlsx")

df=scale(Cultures_raisin[,1:4], center = TRUE, scale = TRUE)

#Méthode de saut minimum

d=dist(df, method='euclidean')

hr=hclust(d, method='single')

plot(hr,hang=-1,cex=0.5)

 En déduire le dendrogramme associé  :

10
Walid Ayadi
ENIT 2ème année MINDS

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes.

class1=cutree(hr,k=3)

print(table(Cultures_raisin$QUALITE_RAISIN,class1))


Compléter le tableau de contingence

 Remarque :si on applique la méthode d’agrégation de saut minimum pour partitionner les


raisins selon la qualité, on aboutit à un problème de chainage au niveau des dendrogrammes. En
effet, on se retrouve avec un groupe qui a une grande taille et deux autres qui sont extrêmement
petits. Ceci est même dévoilé par la matrice de confusion où les trois qualités sont concentrées
dans le premier cluster. D’où on est face à une mauvaise classification de jeu des données.

On bascule vers la méthode de distance maximum

#Méthode de Distance maximum

d=dist(df, method='euclidean')

hr=hclust(d, method='complete’)

plot(hr,hang=-1,cex=0.5)

11
Walid Ayadi
ENIT 2ème année MINDS
 En déduire le dendrogramme associé  :

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes

 Compléter le tableau de contingence

12
Walid Ayadi
ENIT 2ème année MINDS

Remarques : Le critère de distance maximum ne semble pas efficace. C’est vrai qu’on
a réussi à réduire l’effet de chainage mais le problème de la mauvaise classification
persiste. Le premier cluster contient des proportions importantes des raisins de
mauvaise de moyenne qualité.
On essaye avec la méthode average

 En déduire le dendrogramme associé  :

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes

13
Walid Ayadi
ENIT 2ème année MINDS

 Compléter le tableau de contingence

Remarque  :La classification de la méthode average reflète des résultats comparables


avec les autres méthodes. Donc elle est inefficace
On bascule vers la méthode de Ward

#Méthode de ward

d=dist(df, method='euclidean')

hr=hclust(d, method='ward')

plot(hr,hang=-1,cex=0.5)

 En déduire le dendrogramme associé  :

14
Walid Ayadi
ENIT 2ème année MINDS

 On utilise la fonction cutree() pour couper le dendrogramme afin d’avoir 3 classes

 Compléter le tableau de contingence

15
Walid Ayadi
ENIT 2ème année MINDS

 Remarques : Le dendrogramme de cette méthode s’avère meilleure que les autres


méthodes. Mais, nous sommes toujours face à un problème qui nous empêche de faire
une partition concrète selon la qualité de raisin. Ceci est illustré par la matrice de
confusion ou on voit une grande proportion des raisons de bonne et de mauvaise qualité
dans le premier cluster
 Comparer les résultats de hclust() avec les résultats de kmeans().
Matrice de contingence de la méthode K-means :

Cluster1 cluster2 cluster3

Bon 0 0 11
Mauvais 7 4 1
Moyen 0 7 4

Remarque : Il est à noter que le résultat de classification, même si il n’est pas de très
bonne qualité, il est meilleur que celui obtenu avec la méthode de la classification
hiérarchique ascendante

Les éventuelles causes des ces mauvais résultats sont  :

 Les variables qui distinguent ces origines des voitures ne sont pas riches et bien choisies.
Par conséquent, on se trouve face à un problème d’une bonne segmentation.
 L’échantillon des données est de petite taille.

16
Walid Ayadi

Vous aimerez peut-être aussi