Projet IDAPA

Accueil > Ressources > Outils pour SAS > Classification non supervisée avec SAS

Classification non supervisée avec SAS

Rapport Final (Voir le dossier ci- joint)

mardi 6 janvier 2009, par Rachid

L’objectif de la classification non supervisée est d’identifier un ensemble d’individu et donc d’affecter à chaque observation une "étiquette de classe" qui matérialise l’appartenance de l’observation à une classe. De plus, on souhaite pouvoir également affecter à toute nouvelle observation une étiquette de classe.

La classification est "non supervisée" parce qu’elle fait référence au fait qu’aucun "superviseur" n’est là pour nous dire à quelle population appartient telle ou telle observation.

Le problème est ici plus difficile puisque les observations disponibles ne sont pas initialement identifiées comme appartenant à telle ou telle population : il faudra déduire cette information lors de notre classification.

Classification non supervisée :

L’objectif de la classification non supervisée est d’identifier un ensemble d’individu et donc d’affecter à chaque observation une "étiquette de classe" qui matérialise l’appartenance de l’observation à une classe. De plus, on souhaite pouvoir également affecter à toute nouvelle observation une étiquette de classe.

La classification est "non supervisée" parce qu’elle fait référence au fait qu’aucun "superviseur" n’est là pour nous dire à quelle population appartient telle ou telle observation.

Le problème est ici plus difficile puisque les observations disponibles ne sont pas initialement identifiées comme appartenant à telle ou telle population : il faudra déduire cette information lors de notre classification.

Objectif :

Le projet a pour but de mettre en place une classification non supervisée d’un ensemble de client d’une banque , la difficulté du dossier qu’on présente repose sur le faite que d’une part , on a une table de 30332 clients et que chaque client à 18 caractéristiques.
Et que ces caractéristiques sont hétérogènes : des variables numériques et des variables qualitatives.
Liste des traitements effectués :
On a effectue plusieurs traitement sur la table clients_tbl :
1) Transfert de la table hébergé sur le serveur Daniel vers un répertoire local.
2) Conversion de la table clients_tblen format CSV.
3) Importation de la table clients_tblsur SAS.
4) Suppression des variables corrélés.
5) Normalisation des variables qualitatives.
6) Standardisation des variables.
7) Classification des individus par l’algorithme kmeans.
8) Classification des individus par l’algorithme CAH.
9) Analyse du profil de chaque classe.
10) Analyse discriminante.
1. Transfert de la table clients_tblvers un répertoire local :

La base de donnés client_tbl est héberger sur le serveur Daniel à l’IUT de Metz donc il fallait se connecter en mode SSH avec PUTTY puis transférer la table clients_tbl sur notre machine local en format CSV.
J’ai choisi d’utiliser le logiciel Toad Mysql qui est un logiciel gratuit et qui me permet de se connecter au serveur Daniel grâce à une interface agréable sans l’utilisation du logiciel Putty.
L’avantage de ce logiciel c’est son interface agréable qui nous permet d’effectuer la connexion en mode SSH puis le transfert de la table en mode csv.
L’inconvénient de Toad c’est qu’il est un logiciel propriétaire donc aucune possibilité (sans l’accord du propriétaire) d’exploiter le code source de ce programme afin d’automatiser la connexion entre notre base de données et notre programme en entrée et en sortie.
2. Conversion de la table clients_tblen format CSV.

Le format CSV Comma-separated values (CSV) est un format informatique présentant des données tabulaires sous forme de valeurs séparées par des virgules , ce format permet a SAS d’importer la table clients_tbl .

3. Importation de la table clients_tbl sur SAS.

L’importation d’un fichier CSV sur SAS s’effectue par deux méthodes : automatique ou en écrivant un programme d’importation.
Méthode automatique :
On peut importer un fichier CSV grâce à la fonction import wizard qu’on trouve dans le menu fichier de SAS, cette fonction nous permet d’importer le fichier clients_tbl et de générer un code SAS qui correspond à l’importation de ce fichier.
L’inconvénient de la méthode automatique c’est qu’elle tronque un champ dés la rencontre une virgule mais aussi s’il détecte la présence d’ un espace ,c’est le cas par exemple du champ DTADH qui a comme valeurs 1972-07-19 00:00:00 donc on se trouve avec un découpage 1972-07-19 et 00:00:00 ce qui produit une erreur sur SAS lors de la lecture des variables.
L’avantage de cette fonction c’est qu’elle est très pratique quand on a un fichier délimité par des virgules et sans espaces.

Programme d’importation :

libname lib "chemin" ;
/* lecture de la table clients_tbl */
data lib.clients_tbl ;
infile ’chemin’ DLM=’,’ DSD MISSOVER FIRSTOBS=2 ;
input Id CDSEXE$ MTREV NBENF CDSITFAM$ DTADH & $19. CDTMT CDDEM$ DTDEM & $19. ANNEEDEM CDMOTDEM$ CDCATCL AGEAD RANGADH & $7. AGEDEM RANGAGEDEM & $7. RANGDEM & $6. ADH RANGADH & $7.
run ;

Le programme ci-dessus nous permet d’éviter les erreurs d’importation du fichier automatique grâce aux options suivantes :

FIRSTOBS=2 : Lecture de la première ligne comme métadonnées et la deuxième ligne comme données.
Option DSD MISSOVER : Lecture des quotes.
Identifiant & $19 : Le programme tronquait les dates au niveau des espaces exemple :
« 1976-06-10 00:00:00 » le programme affecte une taille de 19 caractères à identifiant et ne tronque pas au niveau de l’espace mais prend en compte tout toute la chaine de caractère.
4. Suppression des variables corrélés.
Notre fichier clients_tbl comporte un trop grand nombre de variables. Une exploration des liaisons entre les variables nous permet d’éliminer les variables corrélés avec d’autres variables et qui peuvent être déduite par relation linéaire avec ces derniers.
On a supprime les variables suivantes :
DTADH :
DTDEM :
AGEDEM :
RANGADH :
RANGAGEDEM :
RANGDEM :
5. Normalisation des variables qualitatives.
Dans la table clients_tblon a les variables catégorielles suivantes : cdcexe, cdsitfam, cddem, cdtmt, cdmotdem, cdcatcl donc ca nécessite un traitement particulier. Donc on doit effectue ce que l’on appelle la forme disjonctive ou forme normal d’une variable qualitative cdsexe par exemple à m variables indicatrices des modalités (11, 12, ….,1m) telles que 1j vaut 1 si on appartient à la modalité j, 0 sinon. Seule une des indicatrices vaut 1, celle qui correspond à la modalité prise. Les m indicatrices sont donc équivalents à la variable qualitative et on ne prend que m-1 indicatrices pour chaque variable qualitative puisque la dernière est redondante.

Disjonctive sous sas :

Pour mettre des variables catégorielles sous forme disjonctive sous SAS j’ai utilise la procédure corresp et transpose.
La procédure CORRESP permet de réaliser une analyse des correspondances multiples (ACM), c’est à dire une étude de la liaison entre plusieurs variables qualitatives et le résultat nous permet d’avoir une table avec 0 ou 1 ce qui correspond si la modalité est bien présente dans la variable ou pas.
On effectue par la suite une transposition des lignes en colonnes et on obtient une table de variable normalise.
NB : il y’avait redondance dans les noms des variables lors de la transposition ce qui provoquait des erreurs sur SAS d’où le besoin de renommer ces colonnes (Voir la partie SQL en début du fichier source).

6. Standardisation des variables :

Standardiser les variables ou les mettre sous format réduites et centrées consiste a centrée la variable puis la réduire.
Variable centrée : consiste à soustraire sa moyenne à chacune des valeurs initiales
Variable réduite : consiste à diviser toute ses valeurs par son écart type.
Centrer-réduire l’une de ses valeurs V revient alors à calculer :
Une variable centrée et réduite a une moyenne nulle et un écart type de un l’objectif de cette opération est d’avoir des variables indépendante de l’unité choisi.

Implémentation sous SAS :

Proc standard DATA=lib.clients_tbl2 out=lib.stdclients_tbl MEAN=0 STD=1 ;
var &var;
RUN ;

7. Classification des individus par l’algorithme kmeans.
Définition :
La classification est l’opération qui consiste à regrouper des objets (individus ou variables) en un nombre limité de groupes, les classes (ou segments, ou clusters) ,
Les classes de la classification regroupent les objets ayant des caractéristiques similaires et séparent les objets ayant des caractéristiques différentes (homogénéité interne et hétérogénéité externe), ce qui peut être mesuré par des critères tels l’inertie interclasse et l’inertie intercalasse.
Algorithme :

1) On choisit k individus comme centres initiaux des classes
2) On calcule les distances entre chaque individu et chaque centre ci de l’étape précédente, et on affecte chaque individu au centre le plus proche, ce qui définit k classes
3) On remplace les k centres ci par les barycentres des k classes définies à l’étape 2
4) On regarde si les centres sont restés suffisamment stables ou si un nombre fixé ’itérations a été atteint :
• si oui, on arrête (dans notre cas 10 )
• si non, on revient à l’étape 2
Implémentation du Kmeans sous SAS (fastclus ) :
Fastclus :

C’est une procédure itérative à partir de la matrice des données par l’algorithme k-means sur des pôles initiaux sélectionnés selon l’algorithme leader (Hartigan). Cette méthode opère en 4 étapes :

1. Construction d’une représentation initiale des classes : sélection de maxc pôles d’attraction initiaux dans les premiers individus (algorithme leader contrôlé par l’option replace).
2. Construction d’une classification initiale : affectation un à un des individus au pôle le plus proche, avec mise à jour des pôles si option drift.
3. Itérations (affectation-représentation) contrôlées par l’option maxiter jusqu’à stabilisation des pôles.
4. Construction de la classification finale : affectation des n individus au pôle le plus proche.
Macro Kmeans :
%macro KMEANS(variable) ;
Proc fastclus SUMMARY data=lib.clients_tbl2 REPLACE=FULL MAXC=&variable MAXITER=50 CONVERGE=0.02 MEAN=lib.centres out=lib.sorti CLUSTER=segment delete=2 ;
var &var;
RUN ;
%mend KMEANS ;
%KMEANS(100) ;

Options du fastclus :
data= table SAS contenant la table clients_tbl2 ; la dernière crée après standarisation.
out= table sorti crée ; contient les données initiales, les variables cluster et distances associées aux classes crées et aux distances inter-pôles.
mean= table centres crée ; contient les valeurs de cluster et des statistiques sur les classes.
cluster= nom de la variable de classification crée dans out= ou mean= (cluster par défaut).
delete : supprime les centres avec ≤ 2 individus rattachés (pour éviter d’avoir pour centre un « outlier »).

Inconvénient :
Obligation de fixer a priori le nombre de classes.
Dépendance au choix des centres initiaux.
Avantage :

Rapidité (complexité en n) :on ne compare pas toutes les observations entre elle mais par rapport aux centres de classes

8. Classification des individus par l’algorithme CAH
Présentation de la méthode de classification hiérarchique ascendante :
La CAH est un processus de construction de classe basé sur le principe d’agrégation successive d’individu décrits par des caractéristiques jusqu’à l’obtention d’une seule classe , l’agrégation s’effectue par mesure de la distance , dans notre projet la méthode utilisée est celle de ward .
Le principal inconvénient de la CAH c’est qu’elle nécessite le calcul des distances entre individus pris deux à deux. Ce qui est prohibitif si on utilise par exemple notre fichier initial CLIENTS_tbl.
Schéma de l’algorithme :

1) les classes initiales sont les observations
2) on calcule les distances entre classes
3) les 2 classes les plus proches sont fusionnées et remplacées par une seule
4) on reprend en 2) jusqu’à n’avoir plus qu’une seule classe,qui contient toutes les observations
Implémentation sous SAS :

proc cluster DATA=lib.centres outtree=lib.parametre method=ward ccc pseudo ;

/*pour l’affichage de l’arbre */

proc tree ; run ;

Inconvénient de la CAH :

Complexité algorithmique non lineaire n3 ou nlog(n) : quand on applique la CAH sur le fichier initial clients_tbl le programme nécessite beaucoup de temps pour l’exécution.

CAH Mixte :

La CAH mixte permet de lever cette limitation tout en bénéficiant des avantages de la CAH classique. Partant du constat que l’on veut très souvent produire un nombre limité de classes, on commence par une méthode de KMEANS qui nous permet d’obtenir un fichier de classe ensuite on applique la classification ascendante sur les centres des classes. On coupe l’arbre produite a une hauteur jugé satisfaisante et qui permet d’obtenir une forte baisse d’inertie interclasse.
Pour connaitre le niveau de coupure il faut visualiser les courbes CCC , PSF et SPRSQ par cluster