IUP SID Année 2011-2012 TP : Classification non supervisée Hélène Milhem
2 Apprentissage Statistique Année 2011-2012
Chapitre 1 Classification d un tableau de distances 1.1 Données routières Les données se présentent sous la forme d un triangle inférieur d une matrice symétrique, par construction, et contenant les distances kilomètriques de 47 villes françaises prises 2 à 2 (Source : carte IGN). Ces données sont disponibles dans le fichier mdsville.dat. 1.2 Lecture des données mdsville.dat La lecture d une matrice triangulaire inférieure en tant que matrice de distances pose quelqus difficultés à R dans la gestion du type des objets. mdsville=read.table("mdsville.dat",fill=true) #Extraction des noms des villes villes=as.character(mdsville[2:48,1]) #Extraction des valeurs des distances m=mdsville[2:48,2:48] #Transformation du data frame en une matrice #alpha-numérique due à la présence d espaces m=as.matrix(m) #Retour au numérique avec des données manquantes m=as.numeric(m) #Reformatage en une matrice m=matrix(m,47,47) #Ajonction des noms des villes en ligne et colonne dimnames(m)[[1]]=villes dimnames(m)[[2]]=villes #Transformation en un objet de type distance d=as.dist(m,diag=true) d 1.3 Classification hiérarchique ascendante ou CAH. Représentation par MDS On recherche le dendogramme, le nombre de classes et la coloration des villes en fonction de leur appartenance à une classe. chv=hclust(d,method="ward") plot(chv,main=null,sub="",xlab="") plot(chv$height[46:30],xlab="nb de classes",ylab="hauteur") color=cutree(chv,k=5) Les données proviennent d une matrice de distances. Ainis le MDS s impose pour une représentation factorielle des villes. mds=cmdscale(d,k=2) plot(mds,type="n",xlab="cp1",ylax="cp2") text(mds,villes,col=color) #Représentation avec des couleurs
4 Apprentissage Statistique Année 2011-2012 On peut tester l influence du choix de la distance entre les classes dans la CAH. chv=hclust(d,method="single") plot(chv,main=null,sub="",xlab="") plot(chv$height[46:30],xlab="nb de classes",ylab="hauteur") color=cutree(chv,k=5) plot(mds,type="n",xlab="cp1",ylax="cp2") text(mds,villes,col=color) #Représentation avec des couleurs 1.4 PAM et représentation par MDS L algorithme de réallocation k-means n est pas adapté à une matrice de distances ou de dissimilarités. En revanche, PAM est opérationnel si le nombre d observations n est pas trop important. Sinon il faut utiliser l adaptation clara. Ces fonctions sont disponibles dans la librairie cluster. library(cluster) pamv=pam(d,5) color=pamv$clustering plot(mds,type="n",xlab="cp1",ylab="cp2") #Représentation avec des couleurs text(mds,villes,col=color) #Le m^eme avec des ellipses clusplot(d,pamv$clustering,diss=true,labels=2, color=true,col.txt=pamv$clustering,main="")
Chapitre 2 Classification de données quantitatives 2.1 Données OCE Les données sont issues de l Observatoire de l OCDE. Pour chaque pays membre et pour chacune des années 75, 77, 79 et 81, on connaît les valeurs prises par les variables suivantes qui sont toutes des taux : taux brut de natalité, taux de chômage, pourcentage d actifs dans le secteur primaire, pourcentage d actifs dans le secteur secondaire, produit intérieur brut (par habitant), fomation brute de capital fixe (par habitant) hausse des prix, recettes courantes (par habitant), moratilité infantile, consommation de protéines animales (par habitant), consommation d énergie (par habitant). Ces données sont disponibles dans le fichier ocde.dat. 2.2 Classification hiérarchique ascendante ou CAH #lecture des données avec le nom des variables #en première ligne ocde=read.table("ocde_r.dat") #calcul de la distance avec la commande scale ds=dist(scale(ocde)) #classification hiérarchique hc.ds=hclust(ds,method="ward") plot(hc.ds) #dendogramme #choix du nombre de classes plot(hc.ds$height[67:58],type="b") color=cutree(hc.ds,k=4) #couleurs des classes #ACP pour représentations library(factominer) acp=pca(ocde,ncp=13,graph=f) #graphe de l acp plot(acp,choix="ind",habillage="ind", col.hab=rep(1:17,c(rep(4,17)))) #graphe de l acp avec les couleurs # des classes de la CAH plot(acp,choix="ind",habillage="ind",col.hab=color) On peut refaire tourner cet algorithme en retirant la réduction des variables (commande scale) ou en remplaçant method= ward par method= single.
6 Apprentissage Statistique Année 2011-2012 2.3 Algorithme de réallocation (k-means) et représentation par ACP #Version avec réduction #Choix de 4 classes suggérées par la CAH kocde=kmeans(scale(ocde),4) color=kocde$cluster plot(acp,choix="ind",habillage="ind",color.hab=color) #Version sans réduction kocde=kmeans(ocde,4) color=kocde$cluster plot(acp,choix="ind",habillage="ind",color.hab=color)