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
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
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()
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))
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.
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.
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.
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)
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)
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;
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);
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;