Cours d'Apprentissage Artificiel
ENSTA INT-22
A. Cornuéjols
________________________________________________________________
TP : Arbre de décision et boosting
Dans ce TP vous allez utiliser l'algorithme d'induction d'arbres de décision J48 fourni dans la boîte à outils weka, ainsi que la méthode de boosting, également disponible dans weka.
1- Induction d'arbres de décision
a) Lancez weka.
Une fenêtre générale s'ouvre. Cliquez sur l'onglet "Explorer". Une nouvelle fenêtre de contrôle s'ouvre. C'est elle que vous allez utiliser. Dans la suite, nous allons nous restreindre à une utilisation basique de l'apprentissage. Le logiciel propose de nombreuses fonctionnalités que vous pouvez explorer.
b) Pour réaliser un apprentissage, il faut d'abord charger une base de données. Cela se réalise en cliquant sur l'onglet "Preprocess", puis sur l'onglet "Open file".
Les fichiers doivent être sous le format .arff
Une fois un fichier de données chargé, vous pouvez visualiser la répartition par classe dans l'angle en bas à droite, sous forme d'histogrammes organisés suivant la valeur d'un attribut sélectionné à gauche.
c) L'onglet "Classify" permet d'effectuer des apprentissages supervisés.
La fonction d'apprentissage utilisée est sélectionnée grâce à l'onglet "Choose". Une fois une méthode choisie, il est possible de modifier les valeurs des paramètres par défaut de weka en cliquant directement sur le nom de la méthode (e.g. en cliquant sur "J48 -C 0.25 -M 2").
La mesure de performance s'effectue soit par validation croisée à 10 plis (option par défaut de weka), soit par sélection d'un sous-échantillon d'apprentissage et test sur le reste des données.
L'onglet "start" lance l'apprentissage.
Une fois celui-ci réalisé, la fenêtre "Classifier output" fournit des informations sur la fonction apprise, ainsi que sur les performances en généralisation à l'aide de plusieurs indices et d'une matice de confusion.
d) Vous réaliserez vos premières expériences sur le jeu de données : "diabetes". Dans ce jeu de données, 768 exemples appartenant à deux classes "tested_negative" et "tested_positive" sont décrits à l'aide de 9 attributs.
Choisissez la méthode trees -> J48, qui est une implantation de l'algorithme C4.5.
Vous pourrez dessiner l'arbre de décision obtenu.
Modifier la valeur du "confidence factor" qui contrôle le degré d'élagage. Qu'observez vous ?
Vous pourez également modifier le nombre minimal d'exemples qui doivent figurer dans une feuille de l'arbre.
e) Faites les mêmes expériences sur les jeux de données : ionosphere, breast-cancer et tic-tac-toe.
f) Plusgénéralement, vous pourrez chercher des bases de données (sous format .arff) dans les sites
- http://www.cs.umb.edu/~rickb/files/UCI/.
- http://www.cs.utsa.edu/~bylander/cs6243/weka/weka-3-4/data/
Vous essaierez J48 en particulier sur les bases : audiology (24 classes), autos (7 classes), collic.ORIG (2 classes), credit-g.arff (2 classes), iris (3 classes) et waveform-5000 (3 classes).
2- Application du boosting
Vous regarderez ensuite si le boosting permet d'améliorer les performances.
Vous étudierez l'utilisation de meta -> AdaboostM1, d'une part avec le classifieur faible "trees -> decisionstump" et, d'autre part, avec le classifieur "trees -> J48".
Sur les bases "ionosphere", "breast-cancer" et "tic-tac-toe", qu'observez-vous ?
Vous pourrez également élargir votre investigation à d'autres bases. (e.g. "collic", "credit", ...)
3- Mini-projet pour le vendredi 27 mai 2011
En poursuivant ce TP, vous réaliserez une expérimentation systématique des performances de J48 (avec plusieurs valeurs des paramètres "confidence factor" et "MinNumObj") et d'AdaboostM1 avec decisionstimp et J48 sur une dizaine de jeux de données. Vous essaierez d'expliquer les différences de performances observées, et en particulier pourquoi AdaBoost est bénéfique dans certains cas et pas dans d'autres.