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