6. K-Means
6.1. K-Means sans choisir les centres initiaux
Programme
Résultat
6.2. K-Means avec choix des centres initiaux
6.2.1. Seed avec la méthode Average
Programme
Résultat
6.2.2. Seed avec la méthode Complete
Programme
Résultat
6.2.2. Seed avec la méthode Median
Programme
Résultat
6.2.2. Seed avec la méthode Single
Programme
Résultat
6.2.2. Seed avec la méthode Ward
Programme
Résultat
6.3. Conclusion
6. K-Means :
SAS a une procédure qui exécute l'algorithme du K-Means, c'est la procédure PROC
FASTCLUS
PROC FASTCLUS : Ré-allocation itérative à partir de la matrice des données par
l'algorithme k-means (Mac-Queen) sur des pôles initiaux sélectionnés selon
l'algorithme leader (Hartigan). Cette méthode est adaptée à un nombre n
important d'individus (100 à 100 000).
6.1. K-Means sans choisir les centres initiaux :
Si on ne spécifie pas les points de départ, SAS les choisit tout seul, par
contre, on peut lui imposer de ne faire que quatre sous-groupes, car dans les
classifications hiérarchiques précédentes, on a vu qu'il y avait quatre
sous-groupes.
Programme :
Le programme SAS est le suivant : Proc Fasclus.sas
PROC FASTCLUS
DATA=Proj
MAXCLUSTERS=4 ;
VAR v1-v7 ;
ID nom ;
RUN ;
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
SAS peut faire une procédure Fasclus sans avoir besoin à priori de
classification hiérarchique, mais on arriverait à de meilleurs résultats en se
servant des résultats précédents.
6.1. K-Means avec choix des centres initiaux :
On peut spécifier les centres initiaux de PROC FASTCLUS, c’est ce qu’on va faire
ici, pour avoir des résultats plus fins. On va aussi se servir de la procédure
Candisc qui va nous permettre de représenter les classes trouvées en deux
dimensions.
6.2.1. Seed avec la méthode Average :
Programme :
Le programme SAS est le suivant : Proc Fasclus Average.sas
PROC CLUSTER
DATA=Proj
METHOD=AVERAGE
OUTTREE=ProjClusterAverage
NOSQUARE
NOPRINT ;
VAR v1-v7 ;
ID nom ;
RUN ;
PROC TREE
DATA=ProjClusterAverage
OUT=ProjTreeAverage
NCL=5 ;
ID nom ;
RUN ;
proc sort data=ProjTreeAverage;
by nom;
run;
DATA MeansClusterAverage ;
merge Proj ProjTreeAverage; ;
RUN;
Proc sort DATA=MeansClusterAverage ;
BY cluster ;
run ;
PROC PRINT
DATA=MeansClusterAverage;
RUN ;
PROC MEANS
DATA = MeansClusterAverage
NOPRINT ;
BY Cluster;
VAR v1-v7 ;
OUTPUT OUT=MeanSeedAverage ;
RUN;
PROC SORT DATA=MeanSeedAverage ;
BY _STAT_ ;
RUN;
DATA ttt ;
SET MeanSeedAverage (FIRSTOBS=6 KEEP=_STAT_ v1-v7) ;
RUN;
DATA SeedAverage ;
SET ttt (OBS=5) ;
RUN ;
PROC PRINT
DATA=SeedAverage ;
RUN ;
PROC FASTCLUS
DATA=Proj
MAXCLUSTERS=5 CLUSTER=clus1 OUT=Fastclus1 SEED=SeedAverage;
VAR v1-v7 ;
ID nom ;
RUN ;
proc candisc data=Fastclus1 out=Can noprint ;
class clus1 ;
var v1-v7 ;
legend1 frame cframe=ligr label=none cborder=black position=center
value=(justify=center);
axis1 label=(angle=90 rotate=0) minor=none;
axis2 minor=none;
proc gplot data=Can;
plot Can2*Can1=Clus1/frame cframe=ligr legend=legend1 vaxis=axis1 haxis=axis2;
run;
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
On obtient aussi des graphiques : Graph.
Les variances des Groupes trouvés en utilisant les centres initiaux de la
méthode Average sont plus faibles que lorsque l’on ne choisit pas les centres
initiaux.
En regardant le Graphe, on remarque quatre groupes assez homogènes et on
constate aussi que le comté isolé Highland ne prend aucun autre comté avec lui
dans le groupe qu’il forme à lui tout seul.
6.2.2. Seed avec la méthode Complete :
Programme :
Le programme SAS est le suivant : Proc Fasclus Complete.sas
Dans la suite de la page, pour consulter les programmes SAS, il suffit d’aller
sur les liens.
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
On obtient aussi des graphiques : Graph.
Au niveau de la variance des groupes trouvés, les résultats sont pratiquement
les mêmes que pour la méthode Average.
Enfin, le fait de ne pas prendre Highland dans un groupe implique que les
groupes observés sur le graphique semblent plus compactes qu’avec la méthode
Average.
6.2.3. Seed avec la méthode Median :
Programme :
Le programme SAS est le suivant : Proc Fasclu Median.sas
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
On obtient aussi des graphiques : Graph.
Cette méthode n’apporte pas grand chose par rapport à la méthode Average pour
ces données, les variances sont les mêmes et les groupes sont aussi compactes.
Par contre on remarque ici qu’un des comtés isolés (un groupe à un seul élément)
a réussi à prendre deux comtés dans son groupe.
6.2.4. Seed avec la méthode Single :
Programme :
Le programme SAS est le suivant : Proc Fasclus Single.sas
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
On obtient aussi des graphiques : Graph.
On a beaucoup plus de groupes avec cette méthode, mais c’est ici que la variable
Within STD est la plus faible.
6.2.5. Seed avec la méthode Ward :
Programme :
Le programme SAS est le suivant : Proc Fasclus Ward.sas
Résultat :
Lorsqu'on exécute le programme, on obtient : Résultat
On obtient aussi des graphiques : Graph.
Comme pour les classifications hiérarchiques, la méthode Ward présente les mêmes
résultats que la méthode Complete.
6.3. Conclusion :
Toute ces méthodes ne changent que très peu, elles nous donnent quasiment les
mêmes résultats, les variances intra et les variances extra ne varient pas
beaucoup. Sauf en ce qui concerne les nombres de groupes.
Sauf pour la méthode Single qui présente des variances intra et des variances
extra un peu plus intéressantes mais c’est au détriment du nombre de groupes.
On remarquera aussi que les variances intra et les variances extra sont plus
importantes lorsque l’on ne choisit pas les centres initiaux.
|