Quand on souhaite fouiller un jeu de données, une étape préliminaire
essentielle est d'acquérir de l'intuition concernant ces données, leur
structuration, la répartition de la valeur des attributs, les
corrélations entre attributs, ...
Un jeu de données est un nuage de points dans un espace géométrique à
P dimensions. Si P = 2, l'humain peut facilement (d'un simple coup
d'œil) détecter des corrélations, même non linéaires, la
séparabilité des données de différentes classes, ... Toute, ou
presque, la difficulté vient du fait que P est bien plus grand que
2. Dans ce cas-là, notre sens de la vue est mis en défaut et il faut
trouver de nouveaux moyens pour explorer ces nuages. Une approche
purement géométrique consiste alors à multiplier les points
d'observation du nuage et trouver les plus intéressants, les plus
significatifs.
Pour cela, l'utilisation d'un outil de visualisation est
indispensable : nous allons utiliser le logiciel libre ggobi dont c'est l'objet. Insistons
bien sur le fait que nous n'allons pas modifier les données et encore
moins appliquer des algorithmes complexes ici. Tout est question de
visualiser un nuage de points multi-dimensionnel et d'essayer de
trouver le meilleur angle pour le regarder.
Cette exploration visuelle préliminaire d'un jeu de données permet
ensuite de mieux choisir les méthodes de fouille de données,
d'appliquer des pré-traitements aux données, de voir si les données se
regroupent nettement en plusieurs paquets, ...
Il est important de prendre son temps durant
la réalisation de ce TP et de comprendre ce que l'on fait,
c'est-à-dire, comprendre le rapport entre ce que l'on voit, les
manipulations que l'on fait et le jeu de données. Les questions sont
ordonnées. Il ne faut pas passer à la suite avant d'avoir terminé
chaque manipulation et avant d'avoir répondu aux questions.
De nombreuses aides apparaissent automatiquement dans ggobi quand on
place la souris au-dessus d'un bouton ou d'un menu et qu'on la laisse
immobile une fraction de seconde. Cette aide est bien faite :
utilisez-là pour mieux comprendre ce qui est dit dans ce sujet, mais
aussi pour essayer les possibilités offertes par ggobi, qui sont très
nombreuses et font de ggobi un outil très riche et très utile.
Nous allons découvrir ggobi en analysant un jeu de données concernant des olives. 572 olives sont décrites par 10 attributs : région (sud de l'Italie, nord de l'Italie, Sardaigne) et aire (4 aires dans le sud, 2 en Sardaigne et 3 dans le nord) de collecte ; teneur en 8 acides gras. Le jeu de données est décrit dans un fichier dénommé olive.xml. In fine, l'objectif est de déterminer si l'on peut prédire la zone de collecte d'une huile d'olive à partir de la mesure de sa teneur dans ces 8 acides gras.
Dans un shell, taper la commande /usr2/ggobi/bin/ggobi
& . Une fenêtre s'ouvre. Dans le menu « File », sélectionnez
« Open ... » et le fichier /usr2/ggobi/data/olive.xml.
Deux fenêtres s'ouvrent :
![]() |
fenêtre de contrôle |
![]() |
fenêtre XYPlot |
La fenêtre XYPlot représente d'une certaine manière le jeu de
données : c'est une projection du jeu de données dans le plan
constitué de ces deux premiers attributs, région et aire. C'est un
scatter plot ou XYPlot dans la terminologie propre à ggobi.
Question : plus haut, on vous a dit
qu'il y a 572 données ; seuls 9 points apparaissent dans cet
XYPlot. Qu'en pensez-vous ? De quoi s'agît-il vraiment ?
Aller dans le menu « Tools » et sélectionnez « Variable jittering
... ». Une fenêtre s'ouvre contenant notamment la liste des
attributs.
Le jittering consiste à bruiter les données, c'est-à-dire,
modifier légérement et aléatoirement la valeur de leurs attributs
(ici, les attributs que vous avez sélectionnez). Des points
surperposés deviennent ainsi distinguables...
À utiliser à bon escient désormais !
La fenêtre de contrôle comprend une zone à droite où vous pouvez
sélectionner les attributs qui sont utilisés pour la projection des
données. L'attribut région est sélectionné en X et l'attribut aire est
sélectionné en Y. Vous pouvez cliquer sur chacun des boutons X et Y en
regard du nom des attributs pour obtenir toutes les représentations
planaires possibles. Faites plusieurs essais, par exemple en
sélectionnant aire vs. acide palmitic, région vs. acide oleic, ...
Questions :
Vous aimeriez passer en revue tous les XYPlots en conservant fixe
l'axe des X sur l'attribut région, pendant que les autres attributs
défilent, l'un après l'autre, ni trop vite ni trop lentement, sur
l'axe des Y. Vous pouvez naturellement cliquer sur les différents
attributs, les uns après les autres, à la vitesse qui vous
convient... c'est pénible. ggobi permet de faire beaucoup mieux. Dans
la partie gauche de la fenêtre de contrôle, il y a un bouton indiquant
« No fixed axes » ; cliquer dessus et sélectionner « Fix X
» ; sélectionner l'attribut région pour qu'il soit en
abscisses ; cliquer sur le bouton « Cycle » ... et regarder. Le
curseur situé en dessous du bouton « Fix X » vous permet de régler la
vitesse de défilement. Essayez-le et voyez le résultat. Essayez aussi
de cliquer sur le bouton situé en dessous, étiqueté « Change direction
». Essayez aussi de ne fixer aucun des deux axes ; toutes les
paires d'attributs vont défiler.
Si vous voulez arrêter le défilement à un moment, cliquer simplement
sur « Cycle ».
Question : repérez des paires
d'attributs qui vous semblent assez fortement corrélés linéairement.
Question : dans le XYPlot eicosenoic
vs. arachidic, remarquez cette bande vers le bas du graphique. Qu'en
pensez-vous ?
On peut aussi afficher en même temps des XYPlots pour un ensemble
d'attributs. Dans le menu « Display », choisir « New Scatterplot
Matrix ». Une fenêtre apparaît avec 4x4 XYPlots correspondants aux 4
attributs sélectionnés dans la partie droite de la fenêtre de
contrôle. Vous pouvez changer cette sélection, ajouter et retirer des
attributs en utilisant le bouton de la partie gauche de la fenêtre de
contrôle.
Question : quelle est la différence
entre « Insert » et « Append » ?
Vous pouvez ainsi, d'un seul coup d'œil, ou presque, retrouver les
attributs fortement corrélés linéairement, ... que l'on avez repéré
plus haut en faisant défiler les attributs. L'intérêt cette fois est
d'avoir plusieurs graphiques sous les yeux en même temps...
Question : que représentent ces
graphiques sur la diagonale principale ?
Sélectionner « New Barchart » dans le menu « Display » de la fenêtre
de contrôle. Voyez le résultat qui se passe de commentaires !
Questions :
Les histogrammes, c'est joli, c'est simple à interpréter, mais cela à
des défauts. Selon le nombre d'intervalles que l'on utilise et selon
l'origine à laquelle on commence le découpage en intervalles, les
résultats peuvent être très différents. Des techniques plus
performantes ont donc été développées dans le même esprit qui est de
visualiser la distribution des valeurs d'un attribut.
Sélectionner « New Scatterplot Display » dans le menu « Display » de
la fenêtre de contrôle. On retrouve le XYPlot étudié plus haut. Dans le
menu « ViewMode », sélectionner « 1D Plot ». La partie gauche de la
fenêtre de contrôle comprend maintenant un bouton indiquant « ASH » en
dessous duquel on trouve une zone de paramétrage ASH puis une zone
pour passer d'un attribut à un autre. La partie droite contient la
liste des attributs ; le premier région, est sélectionné. Testez les
différents attributs.
Question : que représente la fenêtre
graphique d'après vous ?
Oui, cela ressemble effectivement à une distribution des valeurs de
chacun des attributs.
Question : repérez, à l'œil, la
distribution de chaque attribut. Comparez vos observations avec vos
observations effectuées plus haut en réponse à la même question en
utilisant des histogrammes.
Si dessus, on a évoqué un problème avec les histogrammes, sans en dire
plus. Pour illustrer la chose, prenez un papier et un
crayon. Supposons que l'on ait les données suivantes : 1 ;
1,75 ; 2 ; 2,25 ; 3 ; 5.
Faites un histogramme avec un intervalle de 1 (c'est-à-dire que vous
comptez sur la même barre les données comprises dans l'intervalle [x,
x+1[) avec pour origine 0, dans un premier, puis un second histogramme
avec pour origine 0,5.
Question : conclusion ?
Vous allez pouvoir reprendre votre souris...
Pour pallier les problèmes des histogrammes, la méthode ASH
(Averaged Shifted Histograms) fait, comme son nom l'indique
très clairement, la moyenne de plusieurs histogrammes décalés. ggobi
calcule 50 histogrammes en utilisant une certaine largeur
d'intervalles paramétrée dans la partie gauche de la fenêtre
de contrôle, par le curseur « ASH smoothness ».
Question : sélectionnez l'acide
palmitoleic et faites varier ce coefficient de lissage ASH. Que
constatez-vous ? Faites la même manipulation avec l'acide palmitic. En
fin de compte, quelle est la « véritable » distribution de la valeur
de ces attributs ? celle pour 0,02, pour 0,2, pour 0,5, pour une autre
valeur ?
Un XYPlot s'est joli et utile mais quand on veut visualiser un nuage
de points en 8 dimensions, une projection de ce nuage en 2D ne donne
pas toute l'information que l'on aimerait obtenir. Pour aller plus
loin, il existe la notion de tour, en particulier tour en 2D (ou 2D
tour dans ggobi). C'est un outil très puissant.
Un tour 2D consiste à projeter le nuage de points d'une certaine
manière (choisie aléatoirement) puis, partant de là, modifier
légèrement (automatiquement) au fil du temps cette projection. On
parcourt ainsi l'espace de toutes les projections possibles du nuage
de points. Cela revient littéralement à prendre le nuage de points (P
dimensionnels) et à le faire tourner devant les yeux ; il ne nous
reste plus qu'à choisir les angles qui fournissent les représentations
les plus intéressantes (celles qui mettent en évidence une
corrélation, une séparabilité, une segmentation, ...). Voyons comment
on réalise un tour 2D avec ggobi.
Reprenons le XYPlot linoleic vs. eicosenoic. Dans le menu «
ViewMode », sélectionner « 2D Tour ». La fenêtre de contrôle prend
l'aspect indiqué ci-dessous :
On distingue trois zones :
Pour en simplifier l'utilisation, on peut sélectionner les attributs
parmi lesquels on va faire le tour. Ici, on a sélectionné sept
attributs en cliquant sur les boutons qui leur sont associés. Pour
chacun des attributs sélectionnés, un cadran apparaît dans la partie
droite du panneau de contrôle. Sélectionnez tous les attributs depuis
la teneur en acide palmitoleic jusque celle de l'acide arachidic et
déselectionnez les attributs région et aire.
Sans plus tarder, cliquons sur le bouton indiqué « Pause » pour
démarrer le tour (pour figer temporairement le tour, il suffit de
recliquer sur ce bouton, d'où son nom).
Ça va un peu vite ! Glissez le curseur situé au-dessus du bouton «
Pause » et voyez le résultat. Admirez maintenant tranquillement le
nuage de points qui tourne dans le XYPlot. Remarquez que les cadrans
de contrôle associés aux 7 attributs considérés indiquent l'angle de
projection de l'attribut dans le plan. Les 7 cadrans de contrôle sont
superposés dans le XYPlot.
![]() |
fenêtre de contrôle pendant un tour 2D |
![]() |
fenêtre XYPlot pendant un tour 2D |
Nous nous intéressons ici à l'identification des points d'un nuage. Nous voyons deux méthodes. La première est très simple et consiste à afficher un identifiant quand la souris est positionnée sur un point du nuage (ou une barre de l'histogramme). La seconde est beaucoup plus puissante.
On peut identifier chaque point du nuage. Pour cela, dans le menu « ViewMode », sélectionner « Identify ». Ensuite, promenez votre souris sur le XYPlot : l'identificateur du point situé sous la souris est affiché : cet identificateur est ici son aire de collecte. Vous pouvez rendre tous les identifiants « collant » en cliquant sur « Make all sticky ». Les points étant tassés, cela ne donne rien de bien intéressant ici. Cliquez sur le bouton « Remove labels » pour les retirer.
Lors d'une utilisation normale de ggobi, on ouvre typiquement
plusieurs fenêtres avec des représentations différentes, pour observer
le jeu de données sous différents points de vue et sous différents
angles. Par exemple, ouvrez un XYPlot donnant la teneur en acide
linoleic vs. eicosenoic ainsi qu'un histogramme de la région de
collecte. On voudrait par exemple que les olives provenant de chacune
des trois régions soient indiquées avec des couleurs différentes
(rappelons-le, notre objectif est de déterminer si l'on peut trouver
à l'œil, un ou des critères pour discriminer les olives en
fonction de leur zone de collecte).
Ayant ouvert ces deux fenêtres graphiques, cliquez dans l'une et
regardez le contenu de la fenêtre de contrôle ; cliquez dans l'autre
et regardez encore le contenu de la fenêtre de contrôle. Vous
constatez que ce contenu change en fonction de la fenêtre dans
laquelle vous cliquez pour fournir des outils et des menus adaptés à
ce que représente la fenêtre.
Cliquez maintenant dans la fenêtre contenant l'histogramme. Ceci fait,
dans la fenêtre de contrôle, dans le menu « ViewMode », sélectionnez «
Brush ». Vous constatez que le contenu de la fenêtre de contrôle vient
de changer, vous fournissant un ensemble de boutons et menus que vous
allez utiliser, comme ci-dessous :
Questions :
Notez bien que le coloriage que l'on a effectué à partir de
l'histogramme aurait pu être fait depuis un XYPlot.
Pour que le coloriage reste, il faut sélectionner « Persistent » à la
place de « Transient ». On peut alterner, passer de l'un à l'autre
pour faire des essais (mode « Transient ») et pour colorier (mode «
Persistent »).
Coloriez (de manière persistente) des ensembles de points du nuage
dans le XYPlot en utilisant différentes couleurs pour différentes
zones et constatez...
Remarque : si vous coloriez une zone par erreur, vous avez le
bouton « Undo » à votre disposition.
Vous avez donc colorié différentes zones avec différentes
couleurs. Vous obtenez quelque chose comme ce qui suit (pas la peine
d'essayer d'obtenir exactement cela, c'est juste un exemple) :
Il est important pour les explications qui suivent que vous ayez
colorié des zones avec 4 ou 5 couleurs différentes.
Dans le menu « Tools », sélectionnez alors « Color and Glyh groups
... » qui entraîne l'apparition de la fenêtre suivante :
Chacune des couleurs que vous avez utilisé apparaît à gauche, sur une
ligne. Sur cette ligne est indiqué le nombre de points colorés de
cette couleur dans le nuage (colonne N). Si vous cliquez sur le bouton
« Shadow » d'une certaine ligne, vous mettez les points correspondants
dans l'ombre : leur nombre apparaît dans la colonne « Shadowed » et,
surtout, si vous regardez maintenant vos fenêtres graphiques, ces
points apparaissent en gris : ils sont à l'ombre.
Ayant mis des points à l'ombre, vous pouvez les exclure des graphiques
en cliquant sur le bouton « Exclude shadows ».
À quoi ça sert ? Plus haut, on a constaté que les olives de la région
1 sont séparables aisément des autres. Sur le graphique, les olives
des deux autres régions sont mélangées, comme on a pu le voir en
coloriant chacune de ces deux zones. La région 1 étant séparable, il
est bon de se concentrer sur les autres points. Ombrager et exclure
les points de la région 1 va permettre de se concentrer sur les autres
points, sans que notre vue soit perturbée par des points qui ne nous
intéresse plus pour l'instant.
Question : exclure les olives collectées
dans la région 1 et étudier les autres en faisant des tours. Peut-être
est-il utile de colorer les olives avec une couleur différente pour
chacune des deux régions... Quelle structure trouvez-vous ?
Remarque : les points ombragés exclus peuvent être revisualisés :
Question : suite aux manipulations que nous avons réalisées et celles que vous pouvez imaginer faire, êtes-vous capables de prédire la région et l'aire de collecte d'une olive connaissant sa teneur dans les 8 acides gras mesurés. Justifiez votre réponse. Êtes-vous au moins capable de prédire sa région, sinon son aire ?
Le site du logiciel ggobi contient
un ensemble de documentations très intéressantes sur la visualisation
de données en vue de leur fouille. Outre un tutoriel sur ggobi, on
trouvera plusieurs chapitres d'un livre en cours de rédaction intitulé
Interactive and Dynamic Graphics for Data Analysis dont la
lecture est plus que vivement recommandée.
Pas mal de détails sur les méthodes utilisées dans ggobi sont décrites
dans des publications disponibles sur la page de son « ancêtre », xgobi.
et quelques liens que j'ai utilisés pour comprendre certaines
techniques disponibles dans ggobi :