• Aucun résultat trouvé

Clustering et partitionnement

10.2 Matlab

10.2.7 Clustering et partitionnement

K-moyennes

La méthode des K-moyennes s’applique en appelant : [idx,C,sumd,D] = kmeans(data,K)

qui reçoit un tableau data à n lignes et p colonnes, et le nombre K de clusters à identifier. La fonction renvoie :

— idx : un vecteur n × 1 qui contient les indices d’affectation des n données à l’un des K clusters, — C : un tableau K × p des coordonnées des centroïdes des clusters,

— sumd : un vecteur K × 1 des distances intra-clusters,

— D : un tableau n × K des distances de chaque données i à chacun des centroïdes des clusters. Clustering hiérarchique et dendrogramme

Pour calculer et tracer un dendrogramme de clustering hiérarchique (voir section 4.4 et exemple de la Figure 10.1), Matlab a besoin :

— de faire appel à la fonction pdist pour calculer la distribution distrib des distances (euclidienne ou autre) entre données deux-à-deux à partir des données contenues en lignes dans data,

— de créer la structure de dendrogramme, par la fonction linkage, en appliquant la méthode de clustering hiérarchique,

— de tracer ce dendrogramme dans une fenêtre de figure avec la fonction dendrogram : distrib = pdist(data,’euclidean’);

clustTree = linkage(distrib,’average’); dendrogram(clustTree,0);

DBSCAN

La méthode DBSCAN est très simple à utiliser dans Matlab. Elle requiert de définir tout d’abord les deux paramètres permettant de définir un voisinage : epsilon et minpts. Le paramètre epsilon définit le rayon du voisinage dans lequel la méthode va compter le nombre de voisins pour savoir si une donnée est isolée ou au sein d’une zone dense. Le seuil de densité est défini par minpts. Ces deux paramètres sont fournis à la fonction dbscan, ainsi que la matrice des données data, elle renvoit les indices des clusters de chaque donnée, indicesclusters. On peut alors très rapidement tracer une projection de ces clusters avec la fonction gscatter qui applique des symboles identiques aux données possédant les mêmes valeurs dans indicesclusters.

0 0.5 1 1.5 2

Figure 10.1 – Exemple de dendrogramme généré par Matlab à partir de 841 données extraites d’un procédé de carbonatation.

epsilon = 1; minpts = 5;

indicesclusters = dbscan(data,epsilon,minpts); gscatter(data(:,1),data(:,2),indicesclusters);

Le vecteur indicesclusters contient les indices de clusters des données : 1, 2, 3, ... pour les données appartenant à des clusters denses, et −1 pour les données isolées. Le nombre de clusters est donc donné par max(indicesclusters), et le nombre de points isolés par le nombre de −1 présents dans ce vecteur.

Carte auto-adaptative de Kohonen

Les cartes auto-adaptatives de Kohonen étant une forme particulière de réseau de neurones, elles peuvent soit être construites dans un script, ce qui est assez délicat pour débuter, soit être mises en oeuvre grâce à l’outil "Neural Networks" de Matlab. Pour illustrer son application, on utilisera un ensemble de 600 données dans R2

représentées sur la Figure 10.2 et qui contiennent clairement 2 clusters.

-1 â ãäå â ãäæ â ãä ç -0.2 0 0.2 ã ä ç ã äæ ã äå 1 x1 -1 -0.5 0 0.5 1 x2

Figure10.2 – Données utilisées pour un clustering par cartes auto-adaptatives de Kohonen.

La première étape pour construire une carte auto-adaptative consiste à lancer l’outil "Neural Networks" de Matlab. Il suffit de taper dans la fenêtre de commande : nnstart. Cela ouvre alors la fenêtre d’accueil de l’outil (Figure 10.3). Il faut alors cliquer sur le "Clustering app".

Après une nouvelle fenêtre d’accueil et un clic sur Next, on aboutit à la page de sélection des données (Figure 10.4). On peut alors sélectionner les données à partitionner, soit en les sélectionnant directement avec le menu déroulant qui donne accès aux variables du workspace, soit avec le bouton "..." qui permet de lire des fichiers. Il faut alors bien préciser si les données sont en lignes ou en colonnes : Matlab les lit en colonnes par défaut, alors qu’elle sont plus couramment présentées en lignes dans les tableaux de données.

La fenêtre "Network Architecture" permet de fixer le nombre de neurones pour la carte (Figure 10.5). Par défaut, la valeur vaut 10, ce qui signifie que la carte sera de taille 10 × 10. Elle aura également une trame hexagonale par défaut. Puisque notre exemple contient 2 entrées et 100 neurones, il y a donc 200 poids à entrainer. Comme le jeu de données contient 600 données, cela semble raisonnable, mais on aurait pu réduire la taille de la carte.

La fenêtre suivante est celle d’entrainement (Figure 10.6). Initialement, seul le bouton "Train" est actif, il provoque l’entrainement du réseau. Ensuite, les 4 boutons à droite deviennent accessibles, ils permettent de voir les résultats :

10.2. MATLAB 93

Figure10.3 – Fenêtre d’accueil de l’outil "Neural Network".

Figure10.4 – Fenêtre de sélection des données de l’outil "Neural Clustering".

Figure 10.5 – Fenêtre de sélection du nombre de neurones de la carte de Kohonen.

— Plot SOM Neighbour Distances (Figure 10.7 (a)) : cette carte présente les distances entre neurones voisins de la carte. Chaque neurone est symbolisé par un hexagone gris : les liens d’un neurone avec ses voisins sont colorés en jaune lorsque la distance est petite, donc lorsque les deux neurones se ressemblent, et en couleur sombre lorsque la distance est élevée, donc lorsque les deux neurones ne se ressemblent pas. Les cases sombres indiquent les frontières entre clusters. On observe ici une zone sombre qui coupe la carte en deux, indiquant qu’on peut identifier deux clusters dans ces données.

— Plot SOM Weight Planes (Figure 10.7 (b)) : Ces 2 cartes représentent les poids du réseau. Puisque chaque entrée est reliée à chaque neurone, on a donc 100 poids pour l’entrée x1 et 100 poids pour l’entrée x2. Ces deux cartes visualisent les valeurs de ces 100 + 100 poids.

— Plot SOM Sample Hits (Figure 10.7 (c)) : Cette carte indique pour chaque neurone le nombre de données pour lesquelles ce neurone est le "neurone gagnant", c’est-à-dire celui auquel elles ressemblent le plus. On voit clairement deux paquets de données qui se regroupent à droite et à gauche, correspondant aux deux clusters. On observe également des cases vides sur cette carte, ce sont des neurones qui ne sont proches d’aucune donnée : on les repère bien sur la Figure (d) car ils se retrouvent au centre du cercle que constituent les données.

— Plot SOM Weight Positions (Figure 10.7 (d)) : Puisque chaque neurone est de même dimension qu’une donnée, on peut également les représenter dans l’espace des données. Cette carte superpose les données et les neurones. La carte de Kohonen peut être interprétée comme un filet déformable qu’on a étiré pour qu’il colle aux données. On voit bien que l’essentiel des noeuds de ce filet sont regroupés autour des deux clusters, mais qu’il existe aussi des noeuds qui s’étendent le long des deux "bras" qui relient ces deux clusters. (a)-1 0 2 è é ê 10 0 1 2 3 è 5 é ë ê

SOM Neighbor Weight Distances

(b) 0 2 ì í î 10 0 2 ì í î

Weights from Input 1

0 2 ì í î 10 0 2 ì í î

Weights from Input 2

(c)-1 0 2 ï ð ñ 10 0 1 2 3 ï 5 ð ò ñ Hits 7 5 1 1 7 6 3 2 3 3 10 8 1 3 2 3 1 8 2 4 10 7 10 4 0 3 2 2 3 7 6 15 14 9 4 0 8 5 15 4 9 10 11 9 6 0 9 8 15 14 13 16 7 5 0 11 6 10 11 9 4 16 10 8 0 4 11 13 13 6 7 1 3 4 2 0 4 11 7 8 4 1 4 3 2 2 1 1 7 12 3 6 2 3 6 7 4 1 5 7 (d)

Figure10.7 – Résultats de la création d’une carte auto-adaptative.

La fenêtre suivante (non présentée) permet (i) de ré-entrainer le réseau en le réinitialisant, (ii) de recommencer en modifiant la taille du réseau, (iii) d’importer un jeu de données de plus rgande taille, ou (iv) de réaliser des tests sur de nouvelles variables. Cette dernière possibilité peut être exploitée pour de la classification (voir section 10.2.9).

La fenêtre de déploiement de solutions (Figure 10.8) permet de (i) générer des fonctions Matlab pour réutiliser la carte, (ii) d’exporter la carte dans un objet Simulink ou (iii) d’exporter une image du diagramme. Enfin, la fenêtre de sauvegarde (Figure 10.9) permet (i) de générer des scripts Matlab, simple ou "advanced", qui permettront de refaire exactement le même type d’entrainement sans passer par l’interface, ou (ii) d’exporter le réseau et ses sorties directement dans le workspace sous forme de structures ou de tableaux.

10.2. MATLAB 95

Figure10.8 – Fenêtre de génération de versions d’export.

Documents relatifs