Fouille de données
TP « visualisation de données avec ggobi »
Master MIASHS, Tronc commun
Université de Lille 3
Semestre 2
Objectifs du TP

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.

À faire

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.

Premier contact avec ggobi : la fenêtre XYPlot

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 :

vue de la fenêtre de contrôle fenêtre de contrôle
vue du scatter plot du jeu de données olives 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 ?

Histogrammes

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 :

Graphiques 1D

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 ?

Les tours

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 :

vue du panel de contrôle d'un tout 2D

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.

vue de la fenêtre de contrôle pendant un tour 2D fenêtre de contrôle pendant un tour 2D
vue du scatter plot pendant un tour 2D fenêtre XYPlot pendant un tour 2D
Statistiques et transformations des attributs
Dans le menu « Tools », sélectionnez « Variable manipulation ». Un tableau apparaît indiquant les statistiquews des attributs : valeurs max, min, moyenne, médiane, ... On peut aussi afficher la liste des attributs en les triant en fonction de la valeur d'un attribut donné en cliquant sur le nom de l'attribut. On peut aussi mettre à l'échelle un attribut ou le borner.
Identification et sélection des points

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 :

vue de la fenêtre de contrôle pour le brushing

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) :

XYPlot lineloic vs eicosenoic colorié barchart colorié XYPlot palmitic vs eicosenoic colorié

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 :

XYPlot lineloic vs eicosenoic colorié

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 :

Autres sujets
Pour en finir avec ces huiles d'olive

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 ?

Liens : des lectures passionnantes en perspective

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 :

Valid XHTML 1.0! Valid CSS!