Vous êtes sur la page 1sur 3

Apprentissage, Reseaux de neurones et Modeles graphiques (RCP209)

Cartes topologiques
et
Classification Ascendante Hierarchique (CAH) sur les neurones de la carte

Chargement de la SomToolbox.
- Allez a : http://www.cis.hut.fi/somtoolbox/
- Cliquez sur Download
- Chargez somtoolbox2 Mar 17 2005.zip
- Faire unzip somtoolbox2 Mar 17 2005.zip
- Vous avez alors un repertoire somtoolbox contenant les fonctions du logiciel
- Charger aussi la documentation : Both PS and PDF (zipped)

Donnees simulees
Utilisez les instructions suivantes pour generer les donnees Data
>> n=100;
>> E1=[0.1 0.2]; E2=[0.2 0.1]; E3=[0.1 0.1]; E4=[0.2 0.1]; E5=[0.1 0.2];
>> M1=[1 1]; M2=[1 2]; M3=[2 1]; M4=[2 2]; M5=[1.5 1.5];
>> X1=[(randn(n,1)* E1(1))+M1(1), (randn(n,1)*E1(2))+M1(2)];
>> X2=[(randn(n,1)* E2(1))+M2(1), (randn(n,1)*E2(2))+M2(2)];
>> X3=[(randn(n,1)* E3(1))+M3(1), (randn(n,1)*E3(2))+M3(2)];
>> X4=[(randn(n,1)* E4(1))+M4(1), (randn(n,1)*E4(2))+M4(2)];
>> X5=[(randn(n,1)* E5(1))+M5(1), (randn(n,1)*E5(2))+M5(2)];
>> D=[X1;X2;X3;X4;X5];
>> i1 = 1:length(X1);
>> i2 = i1(end) + (1:length(X2));
>> i3 = i2(end) + (1:length(X3));
>> i4 = i3(end) + (1:length(X4));
>> i5 = i4(end) + (1:length(X5));
>> labs = cell(size(D,1),1);
>> for i = 1:length(i1) labs{i1(i)} = un; end
>> for i = 1:length(i2) labs{i2(i)} = deux; end
>> for i = 1:length(i3) labs{i3(i)} = trois; end
>> for i = 1:length(i4) labs{i4(i)} = quatre; end
>> for i = 1:length(i5) labs{i5(i)} = cinq; end
>> cnames = {X, Y};
>> plot(X1(:,1),X1(:,2),r.)
>> hold on
>> plot(X2(:,1),X2(:,2),g.)
>> plot(X3(:,1),X3(:,2),b.)
>> plot(X4(:,1),X4(:,2),k.)
>> plot(X5(:,1),X5(:,2),m.)
>> save Data D labs cnames

1
Apprentissage
Executer les instruction suivantes une a une pour comprendre les differentes etapes de lapprentissage.
>> addpath somtoolbox
>> load Data
Definition de la Structure des Donnees
>> sData = som data struct(D,name,Cinq Gaussiennes,labels,labs,comp names,cnames);
Tapez sData pour voir les differents champs de cette structure
Tapez help som data struct pour plus de details
Initialisation de la structure de la carte topologique
>> msize = [6 6];
>> insize = size(sData.data,2);
>> lattice = rect; % rect ou hexa
>> shape = sheet; % sheet, cyl, ou toroid
>> sMap = som map struct(insize,msize,msize, lattice, shape);
Initialisation des poids de la carte topologique
>> sMap = som randinit(sData, sMap);% som randinit ou som lininit
Visualisation des donnees et de la carte initiale.
>> figure(Position,[100 100 500 500])
>> plot(D(:,1),D(:,2),b+);
>> hold on
>> som grid(sMap,Coord,sMap.codebook)
>> axis on
>> title(Donnees et structure de la grille);
Entranement de la carte : Phase 1 (Auto organisation)
>> figure(Position,[100 100 500 500])
>> epochs = 100;
>> radius ini = 3;
>> radius fin = 1;
>> Neigh = gaussian; % gaussian, cutgauss, bubble ou ep
>> tr lev = 3;
>> [sMap,sT] = som batchtrain(sMap, sData,trainlen,epochs, . . .
>> radius ini,radius ini,radius fin,radius fin, neigh,Neigh,tracking,tr lev);
>> xlabel(AUTO ORGANISATION)
Entranement de la carte : Phase 2 (Convergence)
>> epochs = 100;
>> radius ini = 1;
>> radius fin = 0.1;
>> figure(Position,[100 100 500 500])
>> [sMap,sT] = som batchtrain(sMap, sData,trainlen,epochs, . . .
>> radius ini,radius ini,radius fin,radius fin, neigh,Neigh,tracking,tr lev);
>> xlabel(CONVERGENCE)
Visualisation des donnees et de la carte obtenue par apprentissage.
>> figure
>> plot(D(:,1),D(:,2),b+)
>> hold on
>> som grid(sMap,Coord,sMap.codebook), hold off, axis on
>> title(Apres apprentissage en 2 phases : phase de convergence);
>> hold on
>> [Bmus, Qerrors] = som bmus(sMap, sData);
Donnees captees par une neurone particulier
>> neur=6
>> exemples captes = find(Bmus == neur);

2
>> hold on
>> plot(D(exemples captes,1),D(exemples captes,2),r+)
>> plot(sMap.codebook(neur,1),sMap.codebook(neur,2),go)
Qualite de la carte
>> [qe conv,te conv]=som quality(sMap,sData)
Labeliser les neurones de la carte en utilisant le vote majoritaire
>> sMap = som label(sMap,clear,all)
>> Labl = cell(size(sMap.codebook,1),1);
>> for ii = 1:size(sMap.codebook,1), Labl{ii} = num2str(ii); end
>> sMap = som label(sMap,add, all, Labl);
>> sMap = som autolabel(sMap,sData,vote);
>> figure(Position,[750 50 500 500]);
>> som show(sMap,empty,cell number and Labels);
>> som show add(label,sMap,subplot,1);

EXERCICES

A) CAH sur les neurones de la carte


1. Utilisez la commande help de Matlab sur la fonction som cllinkage de la <<somtoolbox>>.
2. Regrouper les referents de la carte en 5 classes (en utilisant la CAH)
3. Comparez les resultats obtenus selon lindice dagregation utilise.

Remarque : vous pouvez faire 10 tests en fonction des arguments << connect >>
et << linkage >>.
connect = neighbors ou any
linkage = single, average, complete, centroid, ou ward
B) Probleme reel : classification des Iris
Les Iris de Fisher correspondent a 150 fleurs decrites par 4 variables quantitatives : longueur
du sepale, largeur du sepale, longueur du petal et largeur du petal.
Les 150 fleurs sont reparties en 3 differentes especes : iris setosa, iris versicolor et iris virginica
Chaque classe est composee de 50 fleurs. La classe setosa est lineairement separable des deux
autres, alors que versicolor et virginica ne le sont pas.
Le fichier iris don.mat contient les vecteurs dentree en dimension 4 decrivant les 150 iris. Le
fichier iris cls.mat contient les classes des 150 iris.
Pour lire ces fichiers faire :
load -ascii iris don.mat
load -ascii iris cls.mat
Utiliser 100 fleurs pour apprendre une carte topologique.
Labeliser chaque cellule de la carte en utilisant les labels des 100 fleurs utilisees en ap-
prentissage.
Classer les 50 fleurs restantes en utilisant la carte.
Evaluer lerreur de classification

Vous aimerez peut-être aussi