Fiche 08 : Arbre de d´ecision
Master 1 I2L 2014 / 2015
Le but de ce TP est de concevoir un arbre de d´ecision et l’algorithme d’apprentissage ID3.
Vous trouverez un code source java sur le site web. Ce code contient :
— Une classeDataFrame qui permet de g´erer les exemples issus d’un fichier texte,
— Une classeNode qui repr´esente un noeud d’un arbre,
— Une classeDecisionTreequi repr´esente un arbre de d´ecision. Cette classe est incompl`ete et vous devez compl´eter les m´ethodes predict,randomTree etid3.
— Une classeMain qui teste ce code et les m´ethodes `a compl´eter.
1 Data Frame
Plusieurs m´ethodes de DataFrame permettent de g´erer l’ensemble des exemples. Les exemples sont enregistr´es dans un fichier texte `a la mani`ere d’une base de donn´ees. La premi`ere ligne de ce fichier est le nom des attributs, et chaque ligne correspond `a un exemple avec la valeur des attributs.
Questions :
1.a) Que contient le champsnames? 1.b) Quel champs enregistre les exemples ?
1.c) Modifier la m´ethode testDataFrame de la classe Main pour s´electionner les exemples dont l’at- tribut ”Humidity” est ”High”.
2 Arbre et Noeud
La classe Node repr´esente un noeud d’un arbre. On rappelle que la racine d’un arbre est noeud. Le champs attributeIdcorrespond au num´ero de la colonne de l’attribut dans le data frame. Le nom de l’attribut pouvant ˆetre enregistrer dans le champ label.
Questions :
a) Dessiner l’arbre du test testPredict.
b) Quelle est la diff´erence entre les deux constructeurs ?
c) Quel champs permet d’enregistrer les valeurs des attributs pour chaque branche du noeud ?
1
3 DecisionTree
La classeDecisionTree contient la racine de l’arbre, une m´ethode predict(DataFrame)qui calcule la pr´ediction de l’arbre sur l’ensemble des exemples, une m´ethode learnRandomTree qui construit un arbre de d´ecision al´eatoirement, et une m´ethodelearnID3 qui construit un arbre de d´ecision `a l’aide de l’algorithme ID3.
Questions :
3.a) Compl´eter la m´ethodeString predict(Example example) qui calcule la pr´ediction de l’arbre sur l’exemple donn´e.
3.b) Compl´eter la m´ethode Node randomTree(DataFrame df, int target, ArrayList<Integer>
attributes)qui construit l’arbre de d´ecision al´eatoirement.
3.c) Compl´eter la m´ethodeNode id3(DataFrame df, int target, ArrayList<Integer> attributes) qui construit l’arbre de d´ecision `a l’aide de ID3. Bien entendu, vous pouvez cr´eer des m´ethodes utilis´ees par l’algorithme ID3.
3.d) Tester avec les exemples du cours contenu dans le fichierexample.dat.
4 Validation
Les fichiersbreast-*.cvs contiennent les exemples de diagnostic d’une maladie respiratoire.
Questions :
4.a) D´efinir une classe qui permettent de calculer le taux d’erreur d’un arbre de d´ecision.
4.b) Apprendre un arbre de d´ecision `a partir de l’´echantillon d’apprentissage du fichierbreast-training.cvs et tester l’arbre sur l’´echantillon du fichierbreast-test.cvs.
4.c) D´efinir une m´ethode de cross-validation et calculer la validation crois´ee sur l’´echantillon du fichier breast-all.cvs avec K= 10.
5 Elagage
Questions :
5.a) D´efinir l’algorithme C4.5 avec une technique d’´elagage bottom-up.
2