• Aucun résultat trouvé

10.2 Matlab

10.2.9 Classification

-0.5 0 0.5 1 x2

Données normalisées originales

-1 -0.5 0 0.5 1 x1 -1 -0.5 0 0.5 1 x2

Superposition des composantes

-2 -1 0 1 2 ó ôõö ô÷ønte 1 ù ú ù û üý 0 0.5 1 þ ÿ C ÿ   nte 2

Projection sur les composantes Fractions de variance expliquée

1 2 ó ôõöô÷ønte 0 20 80 100 F  acti on de v ari ance

Figure10.10 – Illustration des données et des résultats d’une ACP.

La Figure 10.10 présente les données originales auxquelles l’analyse en composantes principales a été appli-quée (gauche) par un appel à la fonction pca. Le tableau composantes a permis de tracer sur la deuxième figure les deux composantes principales détectées, en rouge. La troisième figure représente les données dans la base des deux composantes principales. La quatrième figure montre les fractions de variance expliquée par chacune des composantes principales : on constate que la première composante explique à elle seule 97 % de la variance totale. On peut donc tout à fait réduire la dimensionnalité du problème à 1 en se limitant à cette composante principale comme unique variable permettant de représenter les variables.

Cartes auto-adaptatives

L’utilisation des cartes auto-adaptatives est présentée dans la section 10.2.7. Réseaux auto-encodeurs

Puisque les réseaux auto-encodeurs relèvent plutôt des réseaux complexes, leur mise en oeuvre est présentée en section 10.2.11.

10.2.9 Classification

Classification Learner

Alors que la plupart des méthodes de classification peuvent être mises en oeuvre dans Matlab dans des cripts, il existe une application très simple d’utilisation qui permet de toutes les tester et de comparer leurs résultats.

10.2. MATLAB 97 Le "Classification Learner" permet de tester les arbres de décision, l’analyse discriminante, les séparateurs à vaste marge, les K plus proches voisins et les méthodes ensemblistes, notamment.

Pour démarrer le "Classification Learner", il faut aller, dans la fenêtre principale de Matlab, dans l’onglet "APPS" et de le sélectionner dans la catégorie "Machine Learning and Deep Learning". Cela ouvre une grande fenêtre semblable à la Figure 10.11. Initialement, toutes les fonctionnalités sont inactives, il faut créer une nouvelle session et sélectionner les données à classifier depuis le workspace : le tableau de données doit contenir les données en lignes avec p colonnes pour les variables et une dernière colonne avec les étiquettes de catégorie. Après validation, Matlab revient à la fenêtre principale et affiche ces données de différentes couleurs en fonction des classes.

Figure 10.11 – Interface principale du Classification Learner, après avoir chargé un jeu de données. Les différentes méthodes peuvent être sélectionnées dans le menu déroulant en haut à gauche de la fenêtre. Le bouton "Train" permet alors d’entrainer chacune de ces méthodes sur les données chargées. La liste des méthodes testées apparaît dans la liste "History" à gauche, avec pour chaque méthode le critère "Accuracy", qui est la proportion d’exemples correctement étiquetées par la méthode. Les réglages par défaut de chacune des méthodes extraites du menu déroulant peuvent être customisés en cliquant sur l’engrenage "Advanced" dans la barre supérieure des icônes.

Pour chaque méthode entraînée, 4 icônes permettent d’accéder à des visualisations des bonnes et mauvaises classifications :

— Scatter Plot (Figure 10.12 (a)) : cette figure présente les points en différentes couleurs en fonction de leurs classes d’origine. Les ronds correspondent aux classes correctement prédites et les croix corres-pondent aux erreurs de prédiction.

— Confusion Matrix (Figure 10.12 (b)) : La matrice de confusion présente, sur ses lignes, les classes réelles des données et, sur ses colonnes, les prédictions. Si le classificateur est parfait, cette matrice doit être purement diagonale et chaque case de la diagonale contient le nombre de données de chaque classe. On voit sur l’exemple de la Figure 10.12 (b) que 4 données ont été mal classées : 2 données de la classe 2 ont été classifiées dans la classe 3, alors que 2 données de la classe 3 ont été classées dans les classes 1 et 2 (voir section 6.1.1).

— ROC Curve (Figure 10.12 (c)) : la courbe ROC présente l’évolution du taux de vrais positifs en fonction du taux de faux positifs (voir section 6.1.3). Le classificateur est d’autant plus efficace que l’aire sous la courbe "AUC" (Area Under Curve) est proche de 1.

— Parallel Coordinates Plot (Figure 10.12 (d)) : sur cette figure, il y a autant de barres verticales que de dimensions. Pour cet exemple, les données sont dans R2, donc il y a deux barres verticales correspondant aux variables. Chaque donnée est représentée par une ligne reliant sa coordonnée x1 normalisée sur la première barre à sa coordonnée x2 sur la deuxième barre. Les lignes sont colorées en fonction de la classe de la donnée. ces diagrammes donnent une vue générale des domaines des classes dans l’espace des données. Les données mal classées y sont aussi représentées avec des symboles spécifiques.

(a) -0.5 0 c    10.5 1 1.5 - -0.5 0 0.5 1     2

Predictions: model 6 (Quadratic SVM)

1 - Incorrect o t n o e o t 3n o e 3o t Model predictions (b) 1 Predicted class2 3 1 2 3 T rue cl ass Model 6 (Quadratic SVM) 20 1 18 1 2 18

(c) 0 0.2alse positive rate0.4 0.6 0.8 1 0 0  0  0  0  ! rue posi tiv e r ate Model 6 (Quadratic SVM) AU"# 0 0 $0 0 %, 0 0 & Positive class' R( )*+. /e

Area under curv5789 ):

Current class fier

(d) -2.0 std -1.5 std -1.0 std -0.5 std mean ; <=>? @A ;B=<? @A ;B=>? @A ; D=<? @A

Predictions: model 6 (Quadratic SVM)

E G HI J K L M E G HI J K L2 NOQorrect N-S V WX Yrect 2 - Correct Z O Sncorrect [OQorrect [OSncorrect Model predictions

Figure10.12 – Résultats de la classification de données.

Une fois que la méthode de classification a ainsi été choisie et éventuellement optimisée en termes d’hyper-paramètres, il est possible d’exporter le classificateur entrainé sous forme d’un code pour lui soumettre d’autres données sans repasser par l’interface du "Classification Learner". Deux types d’exports sont possibles :

— Le bouton "Generate Function" crée une fonction, et l’ouvre dans les scripts Matlab, qui permettra de re-entraîner la méthode sélectionnée sur de nouvelles données, ou un ensemble plus large de données, directement en mode script. Cet export est conseillé pour pouvoir ensuite tout faire depuis un script. — Le bouton "Export Model" exporte le classificateur entraîné dans le workspace où il pourra être utilisé

pour faire de nouvelles prédictions. Par contre, il ne sera que dans le workspace et tout sera perdu à la fermeture de la fenêtre Matlab (ou en cas de bug quelconque). Le premier export sous forme de fonction est donc conseillé.

Cartes auto-adaptatives de Kohonen

Toute la création des cartes auto-adaptatives peut être réalisée par l’outil "Neural Networks" de Matlab : ces étapes d’entrianement de la carte sont détaillées en section 10.2.7. Après entrainement, la fenêtre d’évaluation permet de traiter cette carte pour "classer" de nouvelles données (Figure 10.13).

Dans la section en haut à droite "Optionnaly perform additional tests", il est possible de sélectionner des données depuis le workspace ou depuis un fichier. Le bouton "Test Network" exploite alors la carte entrainée précédemment pour placer les nouvelles données sur la carte. Les boutons "Plot SOM Neighbour Distances" et "Plot SOM Weight Planes" (Figures 10.7 (a) et (b)) rappellent uniquement les cartes de distances et de poids du réseau.

Les boutons "Plot SOM Sample Hits" et "Plot SOM Weight Positions" présentent les nouvelles données sur la carte auto-adaptative et dans l’espace de données (Figure 10.14 (a) et (b)).

Classification par réseau de neurones

La classification dans Matlab peut aussi se faire en mode script. Pour démarrer, il est utile de faire ap-pel à l’outil "Neural Network" qui possède un mode "Pattern recognition and classification" : la commande nnstartdans la fenêtre de commande ouvre l’interface présentée sur la Figure 10.3, qui donne accès au mode Classification. Toutes les étaptes suivantes sont communes au mode Régression "Curve Fitting" et seront donc présentées de manière générale dans la section 10.2.10. La seule différence importante est liée à la structure du réseau. En mode "Fitting", le réseau par défaut utilise une couche de sortie à activation linéaire alors qu’en

10.2. MATLAB 99

Figure10.13 – Fenêtre d’exploitation des cartes auto-adaptatives de l’outil "Neural Networks" pour la classi-fication avec carte de Kohonen.

(a) 0 2 4 6 8 10 -1 0 1 2 3 4 5 6 7 8 Hits 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 (b)

mode "Classification", le réseau par défaut utilise une couche de sortie à activation softmax (voir section 6.5 et Figure 6.11). Cette différence nécessite de formater les données d’un certaine manière pour que l’outil "Neural Network" réussisse à comprendre les données.

Formatage pour la classification binaire

Considérons 8 points de R2dans le carré [0; 1] × [0; 1] de coordonnées (x1; x2) et appartenant soit à la classe A soit à la classe B. Connaissant les points, stockés en colonnes dans le tableau DataInputs (2×8), on construit le tableau DataTargets avec 2 lignes (car 2 classes) et 8 colonnes (car 8 données) avec des 0 et des 1 comme indiqué ci-dessous :

DataInputs = [0.6575 0.6799 0.2514 0.7332 0.5721 0.5864 0.4206 0.8572; \% x_1 0.7374 0.2379 0.8330 0.8245 0.6663 0.1079 0.4726 0.5604]; \% x_2

DataTargets = [ 1 1 0 1 1 1 0 1; \% classe A

0 0 1 0 0 0 1 0]; \% classe B

Dans cet exemple, la classe a été arbitraitement affectée telle que la classe est A si x1> 0.5 et B si x1< 0.5.

Formatage pour la classification multiclasse

Imaginons maintenant que ces mêmes données puissent appartenir à 4 classes, correspondant aux 4 quadrants du carré [0; 1] × [0; 1], alors on construira les tableaux de données tels que :

DataInputs = [0.6575 0.6799 0.2514 0.7332 0.5721 0.5864 0.4206 0.8572; \% x_1 0.7374 0.2379 0.8330 0.8245 0.6663 0.1079 0.4726 0.5604]; \% x_2 DataTargets = [ 0 1 0 0 0 1 0 0; \% classe A 0 0 0 0 0 0 1 0; \% classe B 0 0 1 0 0 0 0 0; \% classe C 1 0 0 1 1 0 0 1]; \% classe D

Une fois ces tableaux construits et stockés dans le workspace, il peuvent être chargés depuis l’outil "Neural Network" afin d’entrainer le réseau et d’extraire les résultats (voir section 10.2.10). Les données sont ici présentées en colonnes, mais elles peuvent aussi être formatées en lignes.

Documents relatifs