Introduction aux méthodes de classification. Un exemple : le k

Transcription

Introduction aux méthodes de classification. Un exemple : le k
Introduction aux méthodes de classification. Un exemple : le
k-means et le clustering hierarchique appliqués à des données
simulées
Denis Puthier
8 juin 2007
Laboratoire INSERM TAGC/ERM206, Parc Scientifique de Luminy case 928,
13288 MARSEILLE cedex 09, FRANCE.
1
Création d’un jeu de données simulées
Construisez deux vecteurs X et Y de tailles 500 à l’aide de la fonction runif.
Affichez le nuage de points avec la fonction plot.
On rappelle que tous les points P contenus dans un cercle de centre O et de rayon r vérifient
la relation suivante :
q
(Px − 0x )2 + (Py − 0y )2 ≤ r
Créez un vecteur de classes que nous appellerons cl
> cl <- rep(NA, 500)
> head(cl)
[1] NA NA NA NA NA NA
Trouvez les points P qui vérifient la relation précédente pour un cercle de centre (0,3 ;0,3)
et de rayon r = 0, 15. Pour les indices correspondants, assignez au vecteur cl la valeur 1.
Faites de même avec un cercle de centre (0,8 ;0,4) et de rayon r=0.15 puis avec un cercle de
centre (0,5 ;0,6) et de rayon r = 0, 15. Pour les indices correspondants, assignez au vecteur
cl la valeur 2 et 3 respectivement.
Créez une matrice dont les colonnes contiendront les valeurs de X, Y et cl. Eliminez de
la matrice les points P, situés en dehors des cercles définis précédemment (na.omit ou
complete.cases) . Affichez les nuages de points retenus.
1
2
2.1
Classification
K-means
Vérifiez la capacité de l’algorithme K-means à retrouver les 3 classes générées précédemment
(fonction kmeans). Le résultat de la classification se trouve dans le champ cluster de l’objet
kmeans (c’est un objet de type S3 vous pouvez utiliser names, équivalent de slotNames
pour les objets S4). Vous pouvez utiliser ce résultat pour coloriser les points via la fonction
plot.
2.2
Clustering hiérarchique
Créez une matrice de distances euclidiennes, à l’aide de la fonction dist. Appliquez le clustering hiérarchique sur cette matrice (hclust). Utilisez la fonction plclust pour visualiser
les résultats. Découpez l’arbre en trois groupes à l’aide de la fonction cutree. Visualisez
le résultat du kmeans et du clustering hiérarchique en utilisant les paramètres graphiques
(la couleur correspondra aux résultats du kmeans et le type de points aux résultats du
clustering hierarchique).
Implantez une fonction qui permet (i) de générez trois groupes de points avec des diamètres
variables (ii) d’effectuer une classification par kmeans (avec nstart=100) et clustering hiérarchique (iii) de définir le nombre de classes à rechercher (iv) de visualiser les résultats.
Testez cette fonction avec des diamètres croissants puis en faisant varier le nombre de
classes. Les frontières entre les classes deviennent mons claires. N’est ce pas ? Concluez sur
les deux algorithmes.
3
Quand le critère d’agglomération prend tout son sens.
Chargez la librairie multiData. Sélectionnez le jeux de données shapes 2 (fonction data).
Conservez (au hasard) 2000 lignes dans la matrice. Effectuez un k-means. Vous pouvez
utiliser les fonctions colors, heat.colors, topo.colors ou encore mieux brewer.pal (dans la
librairie RColorBrewer ) pour sélectionner une palette de couleurs permettant de représenter
les 11 classes.
Comme ce n’est pas très satisfaisant, nous allons utiliser le clustering hiérarchique. Testez le
sur shapes 2 en prenant comme critère d’agglomération “average”, “complete” puis “single”.
Vous pouvez utiliser, si vous le souhaitez, la fonction hcluster de la librairie amap (elle est
rapide que hclust). Le résultat attendu est donné en figure 1.
2
100
150
B
50
50
100
150
A
50
100
150
50
100
150
100
100
50
150
D
50
150
C
Fig. 1 – Classification du jeu de données shapes 2. (A) Résultats obtenus avec kmeans. (B) Résultats obtenus avec hclust (link=“av”). (C) Résultats obtenus avec hclust
(link=“complete”). (D) Résultats obtenus avec hclust (link=“single”).
3

Documents pareils