Download - Benharratharijtp2 classification

Transcript
Page 1: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

TP n°2 : Méthodes de classification

Ben harrath arij 4infini

Note

Ce TP est à rendre en fin de séance.

NB : N’oublier pas de mentionner vos interprétations et constatations après chaque résultat

Objectifs généraux

Dans ce TP, nous allons appliquer les méthodes de

classification sur des échantillons de données.

Objectifs spécifiques

Importer les données

Réaliser quelques statistiques descriptives sur les variables actives ;

Centrer et réduire les variables

Réaliser la classification automatique via les K-Means sur les variables transformées, en fixant le nombre de classes

et via la classification ascendante hiérarchique

Visualiser les données avec la nouvelle colonne représentant la classe d’appartenance des individus

Illustrer les classes à l’aide des variables actives, via des statistiques descriptives comparatives et des graphiques

judicieusement choisis

Croiser la partition obtenue avec une variable catégorielle illustrative

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

Page 2: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

I. Classification avec R

A. K-Means (Méthodes des Centres Mobiles) 1. Importation des données et statistiques descriptives : (sans package additionnel spécifique)

Donner les statistiques descriptives :

2. Centrage et réduction :

Pour centrer et réduire les données, on doit commencer tout d’abord par la construction d’une fonction«

centrage_reduction » qui centre et réduit une colonne, qu’on applique à l’ensemble desvariables actives

avec apply(……..)

Pour ce faire, on propose d’exécuter la fonction de standardisation de colonne suivante :

# Exécuter la fonction de standardisation d'une colonne centrage_reduction<- function(x)

{ return((x-mean(x))/sqrt(var(x)))

}

Obtention du tableau des données centrées et réduites

# Appliquer pour produire le tableau des données centrées et réduites voitures.cr <- apply(voitures[,1:5],2,centrage_reduction) # Vérification des moyennes apply(voitures.cr,2,mean)

# Vérification de la variance apply(voitures.cr,2,var)

# Importation des données setwd("") voitures <- read.table(file=file.choose(),header=T,row.names=1 ) # Description et statistiques descriptives summary(voitures)

Interprétation de la moyenne et de la variance des colonnes :

Ses colonnes sont de moyenne nulle et de variance unitaire

Page 3: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

3. Application de la méthode des Centres Mobiles (K-Means)

Maintenant, on lance l’algorithme K-Means sur les variables centrées et réduites.

On propose de concevoir une partition de deux groupes (deux clusters), en se limitant à 40 itérations.

i. Expliquer les paramètres basiques de la fonction R kmeans()

ii. En déduire le code suivant :

iii. Expliquer le résultat obtenu : (K-means clustering, cluster means, clustering vector)

4. Interprétation des groupes d’appartenance :

est une méthode de quantification vectorielle, originaire de traitement du signal, qui est populaire pour l'analyse de

cluster dans l'extraction de données. k-means vise à diviser n observations en k grappes dans lequel chaque

observation appartient à la grappe avec la moyenne la plus proche, servant de prototype de la grappe.

x : Matrice de données. Centers : Le nombre de clusters.

Iter.max : Le nombre maximum des itérations permises.

# K-means en deux groupes nb.classes <-2 voitures.kmeans <- kmeans(voitures.cr,centers=nb.classes,iter.max=40) print()

Page 4: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

Pour l’interprétation des groupes, on calcule les moyennes conditionnelles des variables actives

originelles. On les collecte dans une seule matrice à l’aide des commandes suivantes :

#récupération des groupes d'appartenance groupe <- as.factor(voitures.kmeans$cluster) #calculer les barycentres des classes #dans l'espace des variables actives initiales (numéro 1 à 5) centres<- NULL for (k in 1:nb.classes){ ligne <- colMeans(voitures[groupe==k,1:5,drop=FALSE]) centres<- rbind(centres,ligne) } numero<- seq(from=1,to=nb.classes) rownames(centres) <- paste("clus_",numero,sep="") print(centres)

interprétations :

Pour croiser les clusters avec la variable catégorielle illustrative ORIGIN, on introduit la commande

« table » :

Compléter le tableau de contingence suivant :

1 2

Americain 100 145 European 0 68 Japanese 0 79

Le Deuxième groupe contient des voitures américaine, européenne et japonaise (Profil euro-japonais).

Le Premier groupe est de 100% américain (Profil américain).

Un tableau de contingence est une méthode de représentation de données découlant d’un comptage. Les

données sont rassemblées dans un tableau avec le caractère auquel elles sont reliées.

On pratique des études sur plusieurs caractères, en essayant alors de déterminer s'il existe une quelconque

liaison entre eux. Pour cela on étudie les individus recensant plusieurs caractères à la fois.

Pour projeter les points, illustrés selon leur groupe d’appartenance, dans les plans formés par les couples de

variables, R démontre toute sa puissance. La commande utilisée est « pairs » le résultat est riche

d’enseignements : les variables sont pour la plupart fortement corrélées, presque tous les couples de

variables permettent de distinguer les groupes :

#croisement des clusters avec la variable illustrative catégorielle

print(table(voitures$origin,groupe))

Page 5: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

#graphique des variables 2 à 2 avec groupe d'appaternance >pairs(voitures[,1:5],pch=21,bg=c("red","blue")[groupe])

La projection de point, selon leur groupe d’appartenance, dans les plans formés par les couples de

variable,

les variables sont pour la plupart fortement corrélées, presque tous les couples de variables

permettent de distinguer les groupes

5. Combinaison ACP / K-Means :

Dans le but de trouver un outil permettant de bien situer les groupes, on propose de projeter les points

dans le premier plan factoriel de l’Analyse en Composantes Principales.

Page 6: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

Pour ce faire, appliquer les lignes de commandes suivantes :

#ACP sur les données centrées réduites acp<- princomp(voitures.cr,cor=T,scores=T) print(acp) #pour obtenir les valeurs propres print(acp$sdev^2) #pour obtenir les corrélations sur le premier axe print(acp$loadings[,1]*acp$sdev[1]) #graphique dans le premier plan factoriel, avec mise en évidence des groupes plot(acp$scores[,1],acp$scores[,2],type="p",pch=21,col=c("red","blue")[groupe])

Remarque : vous pouvez utiliser la fonction prédéfinie PCA de FactoMineR Montrer les projections sur les plans factorielles, et en déduire vos conclusions

6. Exportation des données :

Durant cette dernière étape du processus K-means, on exporte l’ensemble des données dans un seul fichier en fusionnant la base initiale avec lacolonne additionnelle produite par la typologie.

#exportation des données avec le cluster d'appartenance voitures.export<- cbind(voitures,groupe) write.table(voitures.export,file="export_r.txt",sep="\t",dec=".",row.names=F)

Vérifier la création du nouveau fichier « export_r.txt » sur votre répertoire courant, et faire le joindre avec

votre compte-rendu.

pca=PCA(voitures[,1:5], quali.sup=5);

L’axe horizontal pour la dimension contient 88.91% de l’information.

- Les variables (horspower, display, weight) sont corrolées avec le premier axe positivement

- mpg est corrollé négativement.

Page 7: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

En déduire vos interprétations finales sous forme de

rapport final (la partie la plus importante dans tous les

TP Data Mining)

On constate avec la méthode kmeans que la classification de notre entrepôt de donnée est divisé en 2

groupes.

La méthode K-Means est une technique de classification automatique qui vise à produire des

regroupements de manière à ce que les individus du même groupe soient semblables.

Le lancement de l’algorithme k-means sur les variables centrées réduites nous a permet de concevoir la

Répartition de deux groupes (deux clusters) donc à diviser les données en cas groupes (classes) pour minimiser

les distances entre les points et les centres des classes.

Page 8: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

B. Classification Ascendante Hiérarchique On désire refaire la classification sur les modèles de voitures avec la Classification Ascendante Hiérarchique sur la On

a plusieurs choix pour l’option : distance, selon la fonction dist().

Expliquer l’utilité de cette fonction grâce à la commande « ? dist() »

Appliquer cette fonction sur l’entrepôt des voitures donnés

Ecrire la ligne de commande utilisée :

Décrire le principe d’utilisation de la fonction « hclust »

En déduire le dendrogramme associé :

Cette fonction calcule et renvoie la matrice de distance calculée à l'aide de la mesure de distance spécifiée pour

calculer les distances entre les lignes d'une matrice de données.

> d<-dist(voitures.cr ,method="euclidean")

HC<-hclust(d,method="average")

plot(HC)

Page 9: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

On va utiliser la fonction cutree pour couper le dendrogramme afin d’avoir 2 classes.

> classe<-cutree(HC,2)

Croiser les clusters avec la variable catégorielle illustrative ORIGIN

Compléter le tableau de contingence suivant :

1 2

Americain 148 97 European 68 0 Japanese 79 0

On Constate que le Premier groupe se forme de 3 type de voiture c’est hétérogène

Le deuxième groupe est homogène il s’agit de 100% (97 voiture américaine )

> table(voitures$origin,classe)

Page 10: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

II. Classification avec SAS

A. K-Means (Méthodes des Centres Mobiles) 1. Importation des données

2. Normalisation des données (centrage et réduction)

3. Application de la méthode des K-moyennes

PROC FASTCLUS DATA= A OUT= BOUTSTAT= CMEAN=D MAXITER=CONVERGENCE= DELETE= CLUSTER= DRIFT

MAXC= /RADIUS=

VAR liste des variables quantitatives étudiées ;

ID nom de la variable comportant le nom des individus ;

WEIGH Tvariable ;

RUN ;

N.B. souligné = facultatif

On doit spécifier soit l’option MAXC= ou RADIUS= option ou les deux.

FASTCLUS signifie FAST CLUSTERING (= classification rapide) A = Nom donné à la table SAS contenant les données

B = Nom de la table SAS, créée automatiquement par SAS contenant, entre autre, la variable CLUSTER(les

assignements de classes) et la variable DISTANCE (distance séparant l’individu du centre de la classe)

C =Nom de la table contenant un résumé de l’analyse (classes,...).

D= Nom de la table contenant les moyennes dans les classes et d’autres statistiques pour chaque classe : FREQ_:

effectif de la classe ; _RMSSTD_ : inertie intra-classe ; _NEAR_ :no de la classe la + proche ; _GAP_ : distance entre

le centre et l’autre centre le + proche ; _RADIUS_ : distance max entre 1 individu et son centre ; X, Y : coordonnées

du centre de la classe

DELETE=n supprime les centres avec ≤ n individus rattachés (pour éviter d’avoir pour centre un « outlier ») MAXC=n spécifie le nombre maximum de classes toléré, égal à 100 par défaut. MAXITER=n spécifie le nombre maximum d’itérations toléré pour recalculer les centres.

converge=0.02 : les itérations s’arrêtent quand plus aucun centre ne se déplace d’une distance > 0.02

Data cars;

infile'C:\SAS\cars_dataset.txt' 'expandtabs

firstobs=2; *La première ligne contient les noms des variables*

input mpg displacement horsepower weight acceleration

origin$;

run;

Proc standard mean=0 std=1 data=cars out=cars_std;

Var mpg displacement horsepower weight acceleration; run;

Page 11: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

DRIFT : pour remplacer la méthode des centres mobiles par celle des k-means (convergence plus rapide)

RADIUS=d : spécifie la distance minimale entre 2 centres initiaux (= 0 par défaut)

REPLACE=none : accélère la phase de sélection des centres initiaux en empêchant les substitutions des centres les

plus proches (choisir alors « radius » assez grand) –mieux vaut laisser l’option par défaut « replace=full »

4. Table de contingence

5. Application d’une analyse en composantes principales avec K-means

PROC FASTCLUS

DATA = cars

MAXCLUSTERS=2 OUT=Fastclus1;

VAR mpg displacement horsepower weight acceleration;

ID origin;

RUN;

Proc freq data=Fastclus1;

Tables origin * cluster;

run;

%macro acp(table,vars,ids);

Proc princomp data=&table out=acp vardef=wgt;

ods output Eigenvalues=eigenvalues Eigenvectors=eigenvectors;

var &vars;

run;

proc transpose data=eigenvalues out=teigenvalues(drop=_name_) prefix=lambda;

var eigenvalue;

run;

Proc sql;

select count(*) into :avars from eigenvalues;

quit;

data eigenvectors;

if _n_ = 1 then set teigenvalues;

set eigenvectors;

array c{*} prin1-prin%trim(&avars);

array l{*} lambda1-lambda%trim(&avars);

do i=1 to &avars;

c(i)=c(i)*sqrt(l(i));

end;

keep variable prin1-prin%trim(&avars);

run;

proc gplot data=eigenvalues;

symbol i=join v=dot pointlabel=none;

plot (eigenvalue difference)*Number / overlay legend;

plot2 (proportion cumulative)*Number / overlay legend;

run;

quit;

%mend;

%acp(carsFile,mpg displacement horsepower weight acceleration,ACP);

%macro acp_plot(axe1,axe2,id);

PROC GPLOT DATA=ACP;

PLOT prin&axe2*prin&axe1 = &id;

run;

%mend;

%acp_plot(1,2,cluster);

Page 12: Benharratharijtp2 classification

Data Mining

[email protected] ESPRIT©2013-2014

B. Classification Ascendante Hiérarchique

PROC CLUSTER DATA=A METHOD=methodeutiliséeOUTTREE=D SIMPLESTDRSQCCCPSEUDO;

VAR liste des variables quantitatives étudiées ;

ID nomid;

WEIGHT variable ;

PROC TREE DATA= D NCL=nombre de classes voulues OUT=C(rename=(_NAME_=nomid) RUN;

nomid=nom de la variable comportant le nom des individus A= table de données D=table stockant les informations nécessaires pour réaliser le dendrogramme C=table de stockage des numéros de classes STD : Standardisation des variables SIMPLE : statistiques simples sur les données RSQ : édition du R-squared et semi-partial R-squared CCC : édition du CCC PSEUDO : édition du pseudo-F METHOD= méthode d’agrégation utilisée. Il y a 11 méthodes, dont : AVERAGE, average linkage CENTROID : méthode des centroïdes COMPLETE : complete linkage SINGLE : single linkage WARD : méthode de ward

Appliquer la classification ascendante hiérarchique pour avoir 2 classes

PROC CLUSTER

DATA=cars_std

METHOD=AVERAGE

OUTTREE=ProjClusterAverage;

VAR mpg displacement horsepower weight acceleration;

ID Numero;

RUN ;

PROC TREE

DATA=ProjClusterAverage

OUT=ProjTreeAverage

NCL=2;

ID numero;

RUN ;

proc sort data=ProjTreeAverage;

by numero;

run;

DATA MeansClusterAverage ;

merge cars ProjTreeAverage; ;

RUN;

Proc sort DATA=MeansClusterAverage ;

BY numero;

run ;

Proc freq data=MeansClusterAverage;

Tables cluster * origin;

run;