Travaux pratiques avec RapidMiner Master Informatique de Paris 6 Spécialité IAD Parcours EDOW Module Algorithmes pour la Fouille de Données Janvier 2012 Prise en main Généralités RapidMiner est un logiciel open source gratuit de data mining, très utilisé dans le monde industriel. Il permet de mettre en place rapidement une chaîne complète de traitement de données, de la saisie des données à leur classification. Il est disponible sur le site http://rapid-i.com, où l'on trouve d autres types de ressources (tutoriaux, ) Organisation en projets et interface générale A l'ouverture du programme, RapidMiner vous propose soit de commencer un nouveau schéma de traitement de données, un projet, soit d'en ouvrir un existant. Choisissez 'new', ce qui vous amène à choisir un dossier qui stockera votre espace de travail. Choisissez 'NewLocalRepository' et entrez un nom. On arrive maintenant à l'écran de travail proprement dit, cet espace de travail se divise en cinq zones principales : La zone centrale servira à dessiner le schéma du flux de données : il partira d'une source, qui passera successivement à travers plusieurs outils (préparation des données, traitement, évaluation de performances...). Le catalogue des outils, à gauche, où nous irons chercher les composants à utiliser dans la zone centrale. Ces composants peuvent être des sources de données, des modificateurs de données, des algorithmes de data mining, des évaluateurs de performances. Nous les utiliserons chacun à leur tour, un peu à la fois. Pour chaque outil utilisé, la zone de droite listera ses paramètres. La zone des informations en bas à droite renseigne sur le fonctionnement de l'outil courant. En bas, la fenêtre des messages d'erreurs. Premier projet Le premier projet consiste à ouvrir un fichier de données, et à l'inspecter, afin d'avoir une idée de sa configuration et des caractéristiques des données qui le composent. Nous utilisons l exemple classique des Iris de Fischer. Cet ensemble regroupe la description de 150 iris, de trois sortes
différentes. Chaque individu est décrit par 4 paramètres entiers : la longueur et la largeur des pétales et des sépales, et la cinquième valeur est la sorte d'iris de l'exemple. Le but du jeu est d'écrire un algorithme qui, à partir des quatre premiers paramètres, devine correctement la sorte d'iris. En regardant les données, comme nous allons le faire par la suite on pourra se rendre compte visuellement de la complexité (ou de la facilité) de cette tâche. Importation de données Récupérez le fichier iris.xls, et recopiez-le dans votre espace de travail. Dans la fenêtre des Outils de RapidMiner, allez chercher l'outil Import>Data>Read Excel. Sur cet outil, figure un point rouge, avec un panneau routier 'Attention' : il y a un problème avec cet outil, il est expliqué dans la fenêtre message. Le problème ici est simple, cet outil n'est pas encore relié à un fichier. Utilisons le sorcier pour associer un fichier à cet outil : sélectionnez la boîte Read Excell, puis cliquez sur le bouton Import Configuration Wizard de la zone des paramètres puis suivez les étapes. Step 1 : sélectionnez le fichier iris.xls que vous venez de charger. Step 2 : Rien à faire ici, puisque le fichier ne contient qu'une feuille (sinon, sélectionnez la feuille qui vous interesse). Step 3 : Possibilité de rajouter des annotations : on passe. Step 4 : Fixer le rôle et le type des paramètres. Le sorcier a déjà fait une partie du travail, les seules modifications à apporter ici concernent la dernière colonne : l'attribut Class est polynominal (plus de deux valeurs textuelles) et il joue le rôle d'un label (la classe à deviner) : faites les modifications et cliquez sur Finish. Si tout s'est passé dans les règles, l'avertissement a disparu. Connectez maintenant la cosse de sortie (out) de l'outil à la cosse res sur le bord droit de la zone des schémas. Vous remarquez qu'une nouvelle cosse non connectée est apparue : elle est prête à servir si nous voulons accéder à plus d'informations. Les résultats produits par RapidMiner sont ceux pour lesquels un chemin conduit à une de ces cosses res. Le schéma étant terminé, on peut lancer le processus, qui consiste ici à produire un certain nombre de statistiques élémentaires sur les données en entrée. Pour cela, cliquez sur le triangle bleu dans la barre des icônes en haut de l'environnement. Répondez, dans l'ordre No, Yes, Yes aux trois questions qui vous sont posées : No : on n'a pas besoin de sauvegarder ce schéma. Yes : on ferme les éventuels résultats obtenus précédemment (sinon, il y a des risques de confusion). Yes : on bascule dans la perspective contenant les résultats. Lecture des résultats Le premier process a été exécuté, on a changé d'écran et on peut maintenant consulter les résultats. Aucune manipulation de données n'ayant eu lieu, ces résultats sont essentiellement des statistiques sur les données lues, ainsi que des visualisations. Il y a quatre façons de consulter les informations sur les données, qui correspondent à quatre boutons.
Meta Data View Des informations sur les données : - Rôle de chaque champ (ou attribut) : standard (regular) ou caractéristique (label : ce que les algorithmes de classification devront deviner). - Nom de l'attribut. - Type : numérique, date, polynominal... - Statistiques élémentaires. - Intervalles de valeurs. - Valeurs manquantes Data View : la liste de tous les exemples avec leurs valeurs. Plot View offre la possibilité de visualiser les données sous de nombreux angles. Annotations permet d'ajouter des commentaires ou des informations au fichier de données. Visualisation des données Passez dans Plot View. Vous pouvez choisir le type de graphique (menu Plotter), l'attribut correspondant à chaque axe de coordonnées, et la couleur des points. Explorez les différentes possibilités. En colorant les points relativement à l'attribut class, quels sont les deux attributs qui vous semblent permettre de bien distinguer les exemples de classes différentes? Ajout d un module de classification Reprenez le schéma précédent (on revient dans la perspective de définition de schéma en cliquant sur le bouton représentant un crayon et un bloc-note). Dans la fenêtre des outils, choisissez Decision Tree (Modelling>Classification>Tree Induction >Decision Tree), et intercalez-le à droite de l'outil de lecture des données. Decision Tree reçoit en entrée un ensemble d'exemples dont un des attributs est un label et construit un arbre de décision qui essaie de deviner ce label en se servant des autres attributs. Il a deux sorties : mod le modèle, i.e. l'arbre de décision lui-même : connectez-le à la borne res. exa : l'ensemble d'exemples présenté à l'entrée. Connectez-le aussi à la borne res : on pourra ainsi examiner l'arbre et les données originales. Exécutez le schéma : vous avez maintenant deux onglets dans la perspective résultat : un pour les données (la même que tout à l'heure), l'autre pour l'arbre de décision. - Comparez les attributs qu'il utilise pour prendre ses décisions avec les observations que vous avez pu faire sur les données initiales Raffinement des attributs en entrée du classifieur Le classifieur (dans notre cas, un arbre de décision) a utilisé les attributs des exemples pour prendre sa décision. Mais peut-être que ce ne sont pas les dimensions des iris qui sont importantes. C'est peut-être la surface des pétales, ou le rapport entre la longueur des pétales et la longueur des sépales? Pour vérifier ces hypothèses, nous allons intercaler entre les données initiales et l'arbre de
décision un outil de génération d'attributs (DataTransformation>AttributeSet Reduction and Transformation>Generation>Generate Attributes). Editez la liste des descriptions de fonctions (fenêtre paramètres de Genarate Attributes), et créez un nouvel attribut SurfacePetale en multipliant la longueur et la largeur des pétales. Le nouvel attribut n'a pas de rôle: intercalez un outil Set Role (Data Transformation>Name and Role Modification>Set Role) et définissez le nouvel attribut comme regular. - Comparez l'arbre obtenu avec le précédent. Introduire un nouvel attribut a-t-il été utile? - Testez d'autres créations d'attributs. Utiliser de la validation croisée Réaliser un nouveau projet en rechargeant les données iris en n oubliant pas dedonner à la classe le rôle de label. Nous allons réaliser une validation croisée à 5 folds et au final récupérer le modèle (arbre de décision) appris sur l ensemble des données. On commence par insérer le méta composant X-validation après le nœud de chargement des données puis on double clique sur le nœud X-validation. C est un méta-nœud on tombe sur une nouvelle fenêtre. Dans la partie apprentissage «training», nous plaçons un arbre de décision «Decision Tree». Dans la partie test «Testing», nous plaçons tour à tour l applicateur du modèle sur la partie test des données «Apply Model» et l outil de mesure des performances en classement «Performance (Classification)». Nous choisissons le critère «taux d erreur» (classification error). Remarquez les différentes connexions entre les composants, puis en entrée et sortie du métacomposant. Pour que les résultats de la validation croisée (matrice de confusion et taux d erreur) soient accessibles dans les sorties du logiciel, nous devons l ajouter dans les résultats. Nous connectons VALIDATION (3ème slot) au slot RES du processus pour cela. L arbre de décision élaboré sur la totalité des données doit être affiché à l issue des calculs. Nous l appliquerons sur les données non étiquetées. Enfin, nous souhaitons le sauver dans un fichier au format PMML (Predictive Model Markup Language (PMML)). Lorsqu un élément (données, modèles, etc.) est exploité de différentes manières en aval d un composant, nous devons le démultiplier à l aide du composant MULTIPLY. Remarquons le slot utilisé en sortie de VALIDATION (1er slot : «mod» pour modèle). Pour afficher l arbre, nous l ajoutons dans les résultats du processus. Nous remarquons qu un slot supplémentaire est alors disponible en sortie de MULTIPLY. Ajouter le composant WRITE PMML pour exporter le modèle au format PMML. Spécifier le nom du fichier. Pour appliquer le modèle sur les observations non étiquetées et sauvegarder les résultats (descripteurs + classe attribuée) dans un fichier de sortie au format CSV, nous ajoutons la séquence suivante dans le processus. Importation du fichier «iris_unlabeled.csv» à l aide de READ CSV. Il contient les descripteurs mais pas la classe. Nous devons veiller à typer correctement les variables (REAL ou NOMINAL) en calquant notre définition avec celle des données d apprentissage. APPLY MODEL sert à appliquer le classifieur sur les données non étiquetées. WRITE CSV se charge de sauver les données dans un nouveau fichier que nous avons nommé «adult_with_predictions.csv».
Plusieurs fenêtres sont générées à l issue des calculs. Dans l onglet TREE, nous avons accès à l arbre de décision. La représentation graphique n est pas très lisible compte tenu de la taille de l arbre. Dans l onglet «Performance Vector», nous avons accès à la matrice de confusion et au taux d erreur en validation croisée. Enfin, on peut lire le fichier des prédictions «iris_with_predictions.csv» dans un tableur. Projet Vous devez exploiter rapidminer et fournir des archives de projets capables de réaliser une tâche de Brain Computer Interface. Les données sont disponibles sur ma page www-connex.lip6.fr/~artieres. Ce que vous devez faire est concevoir une chaîne de traitement permettant de classifier ces données avec un taux le plus bas possible d erreur, obtenu en validation croisée à 10 folds. Les données BCI sont des enregistrements de l activité cérébrale de 316 individus par 28 électrodes sur une période de 500ms, échantillonnée à 10ms. Chaque élément est une matrice 28*50 soit un vecteur de dimension 1400 organisé comme suit : les 50 valeurs de la première électrode sur toute la période, puis les 50 valaurs de la seconde électrode, etc. Il y a deux classes correspondant à deux mouvements auxquels pense l individu pendant la capture de son activité cérébrale, du type bouger son bras gauche ou bouger le bras droit. Vous pourrez avoir à exploiter des opérateurs de transformation des données (generate attribute, select attribute). A vous de voir si ceux présents dans rapidminer sont suffisants. Vous pouvez également aller modifier les données à l extérieur de rapidminer (par exemple sous octave) pour créer une nouvelle version du jeux de données.