Cours&INT*22&&&&Introduction&à&l’Apprentissage&Artificiel&»&
Apprentissage+supervisé++
par+inférence+d’arbres+de+décisions+
Ce#TP#a#pour#objectif#d’expérimenter#l’apprentissage#supervisé#en#utilisant#des#méthodes#d’induction#
d’arbres# de# décision.# Pour# ce# faire,# la# «#boîte# à# outils# de# fouille# de# données#»#Orange#sera#utilisée#
(voir#http://orange.biolab.si/).#
1. Créez#un#répertoire#pour#les#TPs#du#cours#INTJ22.#Placez#vous#dans#ce#répertoire.#
2. Allez# chercher# les# fichiers# de# données#disponibles# dans# le# répertoire#
http://www.lri.fr/~antoine/Courses/ENSTA/TPJADJensta.tar#et#copiez#les#dans#votre#répertoire#
courant.#
3. Ouvrez#le#fichier#‘spirale.tab’#à#l’aide#d’un#éditeur#de#texte#et#observez#la#structure#d’un#fichier#
de#données#en#format#.tab#adapté#au#traitement#par#la#boîte#à#outils#Orange.#Tous#les#fichiers#
de#données#que#vous#voudrez#traiter#avec#Orange#devront#suivre#ce#format.##
!" #$%&'(')(*+%)(,'(-.$+)/'0(
Orange# est# un# ensemble# d’outils# de# fouille# de# données# et# d’Apprentissage# Artificiel# écris# dans# le#
langage# Python# et# qui# utilisent# un# noyau# C# pour# la# rapidité# d’exécution.# C’est# un# logiciel# facile# à#
prendre# en# main# car# il# repose# sur# de# la# «#programmation# graphique#»# dans# laquelle# on# dispose# des#
«#widget#»#correspondants#à#des#traitements#particuliers#dans#une#fenêtre#graphique.#(voir#figure#1).#
#
1%/2$'(!#:#Schéma#d'application#et#d'évaluation#de#la#méthode#KNN.#Les#données#sont#acquises#grâce#au#widget#«#File#».#Elles#
peuvent#être#visualisées#avec#le#widget#«#Scatterplot#».#Elles#sont#traitées#par#une#méthode#de#classification#supervisée#de#
plus#proche#voisins#«#kJNearest#Neighbours#».#L’évaluation#des#performances#en#généralisation#se#fait#grâce#au#widget#«#Test#
Learners#»#et#les#résultats#sont#ici#analysables#à#l’aide#d’une#Matrice#de#Confusion#et#d’une#Courbe#ROC.##
#
On#lance#Orange#par#la#commande#:#orangeJcanvas#
3" 4567$%')8'&(&2$(,'&(,9))7'&(+$:%;%8%'<<'&(')(3=(
On#commence#par#traiter#le#jeu#de#données#‘2classes_lin.tab’.#
#
2#
>2'&:%9)(!#:#Combien#d’attributs#décrivent#les# exemples#?#SontJils# à#valeurs#nominales,#discrètes#ou#
continues#?#
>2'&:%9)(3#:#Quelles#sont#les#valeurs#possibles#pour#la#variable#de#sortie#?#
Utilisez#des#widgets#pour#charger#la#base#de#données#2classes_lin.tab,#pour#obtenir#des#informations#
sur#les#données#et#pour#visualiser#les#exemples#sur#un#graphique.#
>2'&:%9)(?#:#Quel#est#selon#vous#le#concept#cible#?#
Nous#allons#étudier#comment#la#méthode#d’apprentissage#par#arbre#de#décision#permet#d’apprendre#
ce#concept#cible.#Placez#le#widget#‘Classification#Tree#dans#la#fenêtre#Orange#et#reliez#le#à#‘File’.#Placez#
ensuite#en#aval#les#widgets#‘Classification#Tree#Viewer’#et,#en#parallèle,#‘Classification#Tree#Graph’.#Ces#
widgets#permettent#de#visualiser#l’arbre#appris.##
>2'&:%9)(@#:#Combien#de#nœuds#et#de#feuilles#contient#l’arbre#?#Quelle#est#sa#profondeur#?#Combien#yJ
aJtJil#d’exemples#dans#chaque#feuille#?#
On#utilisera#le#paramétrage#suivant#dans#‘Classification#Tree’#:##
Attribute(sélection(criterion#=#Infomation#Gain#;##
Binarization#=#No#binarization#;##
Pre3pruning(=#Min#instances#in#leaves#=#2#;#Stop#splitting#nodes#with#a#majority#classe#of#95%#;##
Post3Pruning#=#Recursively#merge#leaves#with#same#majority#class.#
>2'&:%9)(A#:#Dessinez#sur#le#graphe#des#exemples#(obtenu#grâce#au#widget#‘Scatterplot’),#les#frontières#
de#décision#de#l’arbre#obtenu.#
Modifiez#les#paramètres#et#observez#les#conséquences#de#ces#changements.#
Nous# allons# maintenant# *'&2$'$( <+( 6'$;9$*+)8'( ,2( 89)8'6:( +66$%&#par#la#méthode#des#arbres#de#
décision.# Pour# cela,# nous# utiliserons# le# widget# ‘Test# Learners’# (dans# l’onglet# ‘Evaluate’).# Dans# ce#
premier#TP,#nous#nous#concentrerons#sur#la#précision#en#prédiction#(CA#:#«#Classification#Accuracy#»).##
>2'&:%9)(B#:#Comparez#les#taux#de#bonne#prédiction#en#utilisant#successivement#:#
La#précision#de#resubstitution#(‘Test#on#train#data’)#
La#précision#en#‘random#sampling’#
La#précision#en#validation#croisée#(à#10#plis)#
Que#remarquezJvous#?#EstJce#conforme#à#nos#attentes#?#
Refaites#les#mêmes#mesures#en#modifiant#la#profondeur#de#l’arbre#appris#:#de#1#à#5.#
Que#peutJon#en#conclure#sur#la#difficulté#du#concept#cible#?#
?" 4567$%')8'&(&2$(,'&(,9))7'&(+$:%;%8%'<<'&(')(3=(C(&6%$+<'":+D(
Refaire#les#mêmes#traitements#en#utilisant#le#fichier#‘spirale.tab’.#
@" 4567$%')8'&(&2$(<'&(,9))7'&(+$:%;%8%'<<'&(C(E'+$:F,%&'+&'":+D(
Utilisez# des# widgets# pour# charger# la# base# de# données# ‘heart_disease.tab’,# pour# obtenir# des#
informations#sur#les#données#et#pour#visualiser#les#exemples#sur#un#graphique.#
>2'&:%9)(!#:#Combien#d’attributs# décrivent#les# exemples#?#SontJils#à# valeurs#nominales,#discrètes#ou#
continues#?#
#
3#
>2'&:%9)(3#:#Quelles#sont#les#valeurs#possibles#pour#la#variable#de#sortie#?#
>2'&:%9)( ?#:# Déterminez# les# valeurs# des# paramètres# de# l’arbre# de# décision# (en# particulier# la#
profondeur)#qui#maximisent#le#taux#de#prédiction.#
Distinguez#bien#le#taux#de#prédiction#en#resubstitution,#en#‘randomJsampling’#et#en#validation#croisée.#
A" G%&'(')(H2I$'(,'(6$7:$+%:'*'):&(&2$(<'&(,9))7'&(
On#va#tester#l’effet#de#la#,%&8$7:%&+:%9)#des#variables#laide#du#widget#‘Discretize#(voir#figure#2#pour#
le#schéma#des#widgets).#
((
1%/2$'(3#:#Schéma#général#montrant#en#particulier#l’utilisation#des#étapes#de#prétraitements.##
#
>2'&:%9)( !#:# Essayez# plusieurs# modes# de# discrétisation# et# observez# les# résultats# en# terme# de#
performance#et#en#terme#d’arbres#obtenus.#
On#testera#ensuite#l’effet#de#la#sélection#d’attributs#grâce#au#widget#‘Select#Attributes’.#
>2'&:%9)( 3#:# Sélectionnez# plusieurs# sousJensembles# des# attributs# et# observez# les# effets# sur# la#
performance#et#sur#les#arbres#obtenus.#
B" 4567$%')8'&(89):$J<7'&(&2$(<'(:+25(,'(D$2%:(':(<'&(I+<'2$&(*+)K2+):'&(
Nous# allons# maintenant# tester# les# capacités# d’apprentissage# d’arbres# de# décisions# en# fonction# de#
plusieurs#facteurs#:#la#complexité(du(concept(cible(caché,#du#nombre(d’exemples(disponibles,#du#taux(
de(bruit#et#du#taux(de(valeurs(manquantes.##
#
4#
Afin# d’évaluer# la# capacité# d’apprentissage# par# arbres# de# décision,# nous# allons# générer# des# jeux# de#
données#décrits#par#un#nombre#N#dattributs#ettiquetés#selon#un#concept#cible#que#nous#définirons#
en#terme#d’un#arbre#de#décision.#De#cette#manière,#nous#pourrons#voir#si#l’arbre#appris#correspond#à#
l’arbre#cible#que#nous#avons#défini.##
Rq#:#le#programme#permet#d’engendrer#des#arbres#avec#un#facteur#de#branchement#quelconque#(voir#
le# paramètre# nb_valeurs),#mais#pour# des# raisons# de# simplicité,#nous# nous#limiterons#ici#des#arbres#
binaires#(deux#branches#/#nœud)#et#à#deux#classes#:#‘+’#et#‘J‘.##
La# fonction# 8$'+:%9)FD+&'LM+&'F'5'*6<'&N( )DF+::$%D2:&N( )DF'5'*6<'&N( O$D$'P%D<'Q#du#module#
:6F+,"6R#permet#de#créer#une#base#d’exemples.##
E.g.#8$7+:%9)FD+&'(L-D,F'5'*6<'&F!SF!SS":+D0N(!SN(!SSN(TUO!UN(TSN(UVUWN(T!N(TUO?UN(TSNUXUWN(T!NUVUWWWWQ#crée#
une#base#de#100#exemples#décrits#sur#10#attributs#et#étiquetés#selon#l’arbre#cible#['A1',#[0,#'+'],#[1,#['A3',#
[0,'J'],#[1,'+']]]].##
>2'&:%9)(!#:#créez#des#bases#dexemples#avec#des#nombres#variables#dattributs#(#6)#et#des#nombres#
variables#d’exemples#étiquetées#selon#l’arbre#:##
['A1',##[0,##['A6',##[0,#'+'],##
###[1,##['A2',#[0,##['A5',#[0,#'+'],#[1,#'J']]],##
#####[1,#'+']]]]],##
#[1,#['A3',#[0,#'J'],##
###[1,##['A2',##[0,# ['A4',#[0,#'+'],#[1,#'J']]],##
####[1,#'J']]]]]]#
Dessinez#l’arbre#correspondant.#
Pour#quelles#valeurs#des# nombres#d’attributs#et#nombres#d’exemples#peutJon#retrouver#une#
bonne# approximation# de# l’arbre# cible#:# les# bons# attributs,# éventuellement#bien#placés#dans#
l’arbre#appris#?#
Nous# allons# maintenant# étudier# l’effet( du( taux( de( bruit( et# du(taux(de(valeurs(manquantes#sur#
l’apprentissage.#Pour#cela,#après#avoir#créé#une#base#dexemples#selon#la#méthode#précédente,#vous#
utiliserez#la#fonction#D$2%:'F'5'*6<'&(LM+&'Y92$8'N(M+&'P%D<'N(O::$%D2:N(#92$8'):N(*+)K2+):'&Q#pour#
bruiter#ces#données.##
Le# paramètre# O::$%D2:#permet#de#spécifier#sur#quel#attribut#on#souhaite#faire#porter#le#
bruitage#(e.g.#‘A1’).#Si#Attribut#vaut#False,#tous#les#attributs#seront#bruités.#
Le#paramètre##92$8'):#spécifie#le#pourcentage#de#valeurs#bruitées.#(E.g.#30#pour#30%)#
Le#paramètre#*+)K2+):'&#détermine#le#type#de#bruit#subit#par#la#BaseSource.#Si#manquantes#
vaut#False,#alors#il#s’agit#d’un#bruit#de#description,#si#manquantes#vaut#True,#alors#il#s’agit#d’un#
bruitage#par#valeurs#manquantes.#
Ainsi,# D$2%:'F'5'*6<'&( LU:$''F!SF!SS":+DUN( U:$''FD$2%:F!SF!SS":+DUN( 1+<&'N( ZSN( 1+<&'Q#crée#la#base#
d’exemples#tree_bruit_10_100.tab#partir#de#la#base#tree_10_100.tab#en#bruitant#tous#les#attributs#
avec#un#taux#de#70%#(70%#des#valeurs#sont#modifiées).#
Vous#pourrez#examiner#le#code#de#la#fonction#avec#profit.##
>2'&:%9)(3#:#Bruitez#des#bases#sources#sur#un#seul#attribut#selon#des#taux#variables#et#mesurez#l’effet#
sur#l’apprentissage.#
>2'&:%9)(?#:#idem,#mais#en#bruitant#tous#les#attributs.#
>2'&:%9)(@#:#Refaire#les#mêmes#expériences#en#imposant#des#valeurs#manquantes#(sur#un#attribut#et#
sur#tous#les#attributs).#
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !