Publicité

Benharratharijtp4 arbre de décision

Active job seeker à Vermeg
30 Nov 2015
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Publicité
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Publicité
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Publicité
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Publicité
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Publicité
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Benharratharijtp4 arbre de décision
Prochain SlideShare
Arbre de décisionArbre de décision
Chargement dans ... 3
1 sur 27
Publicité

Contenu connexe

Publicité

Dernier(20)

Benharratharijtp4 arbre de décision

  1. Data Mining 1 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 TP n°4 : Les Arbres de Décision Ben harrath arij 4INFINI Note Ce TP est à rendre en fin de séance. Objectifs : Comprendre l’Apprentissage Supervisé à travers la construction des Arbres de Décisions I. Construction d'un Arbre de Décision pour un « Jeu de Tennis» avec R Source : http://www.grappa.univ-lille3.fr/~ppreux/ensg/miashs/fouilleDeDonneesI/tp/arbres-de-decision/ Objectif : Construire un Arbre de Décision à partir de données climatiques, afin de prédire si on pourra jouer au Tennis ou non. 1. Chargement de la bibliothèque : Pour pouvoir construire des arbres de décision, on va utiliser la bibliothèque « rpart » de l'environnement R. Il faut tout d'abord la rendre accessible. Pour cela, on tape la commande suivante : 2. Importation de données : On commence par charger le jeu de données « Tennis1.txt ». Pour ce faire, placer cet entrepôt de données dans un data frame ‘Tennis’ : library (rpart) télécharger le package rpart « Partitionnement récursif pour les arbres de classification, régression et de survie » téééééééaa setwd("C:TP4”) tennis1<-read.table(file="tennis1.txt", row.names=1, header=T)
  2. Data Mining 2 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 La colonne « jouer » est la variable décisionnelle 3. Construction et Visualisation de l’arbre de décision : i. Les commandes suivantes permettent de construire l'arbre de décision. Tout d'abord, on doit spécifier quelques paramètres qui précisent comment l'arbre de décision doit être construit. On tape la commande suivante : La variable ad.tennis.cnt stocke les paramètres de l'algorithme. minsplit = 1 signifie que le nombre minimal d'exemples nécessaires à la création d'un nœud est 1. La valeur par défaut est 20. Comme le jeu de données contient moins de 20 exemples, utiliser la valeur par défaut ne produirait pas d'arbre du tout, juste une racine ! Le nom utilisé pour cette variable, ad.tennis.cnt suit la convention R : il indique qu'il s'agît d'un arbre de décision (préfixe ad), pour le jeu de tennis (tennis !) et qu'il s'agît des paramètres de contrôle (cnt) ; des points (.) séparent ces différentes informations. On va construire l'arbre de décision en indiquant :  l'attribut qui représente la variable cible à prédire : ‘la classe : Jouer’  les attributs qui doivent être utilisés pour effectuer cette prédiction (pour l'instant, ce seront les 4 autres attributs : Ciel, Température, HumiditéetVent)  l’entrepôt de données avec lequel on construit l'arbre : Tennis  le nom de la variable qui contient les paramètres : control = ad.tennis.cnt ad.tennis.cnt<- rpart.control (minsplit = 1) ad.tennis<- rpart (Jouer ~ Ciel+ Température +Humidité + Vent, tennis1, control = ad.tennis.cnt)
  3. Data Mining 3 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 La représentation graphique des Arbres de Décision avec R a deux formes : Représentation Textuelle et Représentation Graphique. Concernant le premier type de visualisation, l’arbre est donné sous forme de lignes imbriquées dont chacune correspondant à une classe séparatrice. R distingue une variable séparatrice majoritaire (nœud feuille) des classes non majoritaires par le caractère « * » ii. Afficher le résultat de la construction sous forme de texte: iii. Afficher le résultat de la construction sous forme graphique : NB : on utilisera les deux commandes plot et text La décision commence en testant sur la température il y a 4 non et 0 oui la probabilité de cas non est 1 donc c’est une décision
  4. Data Mining 4 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 plot(ad.tennis) text(ad.tennis) Modalisation des décisions on remarque l’absence de la variable vent car elle n’est pas décisive plot (ad.tennis, branch=.2, uniform=T, compress=T, margin=.1) text (ad.tennis, all=T, use.n=T, fancy=T)
  5. Data Mining 5 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 printcp(ad.tennis) plotcp(ad.tennis) tracer les résultats de validation croisée et Affiche la table de cp pour objet rpart équipée. Ici, il semble que l'erreur relative est réduite au minimum pour un arbre de 5 nœuds. Nous reviendrons l'arbre élagué aux pruneaux et le cp associée à la taille de notre arbre désiré
  6. Data Mining 6 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 4. La prédiction de la classe d'une donnée par un arbre de décision i. La fonction predict() utilise un arbre de décision pour prédire la classe de nouvelles données. Elle prend en paramètres l'arbre et un data frame qui contient les données dont il faut prédire la classe. Pour prédire la classe des données du jeu d'exemples (avec lesquels on a construit l'arbre de décision), on tapera la commande : ii. Utilisez l'arbre pour donner une prédiction pour l’entrepôt de données « Tennis2.txt » tennis2<-read.table(file="tennis2.txt", row.names=1, header=T) tennis2 predict(ad.tennis,tennis2) Nous constatons que la prédiction utiliser à travers le model d’arbre de l’entrepôt tennis 1 a pu prédire les conditions de jouabilité dans l’entrepôt tennis 2 avec la même erreur distinguable précédemment c’est-à-dire lorsque l’humidité est élevé, le vent est fort, la température est basse la jouabilité dans la prédiction est supposé être valide.
  7. Data Mining 7 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 II. Construction d’un modèle de classement à partir d’un arbre de décision pour les demandes de crédits Objectif : Construire un Arbre de Décision à partir de données sur des clients d’une banque afin de prendre une décision concernant l’acceptation ou le refus d’une demande de crédit. La décision est décrite par une variable qualitative Decision, ayant trois modalités : accepted, tolerated, ou refused, ce dernier cas ne sera pas pris en considération lors de la prise de décision par le modèle construit 1. Chargement de la bibliothèque : Pour pouvoir construire des arbres de décision, on va utiliser la bibliothèque « rpart » de l'environnement R. Il faut tout d'abord la rendre accessible. Pour cela, on tape la commande suivante : 2. Importation de données : On commence par charger le jeu de données « ScoreData.xls». Pour ce faire, placer cet entrepôt de données dans un data frame ‘score’ : 4. Construction de l'arbre de décision :  l'attribut qui représente la variable cible à prédire : ‘Decision’  les attributs qui doivent être utilisés pour effectuer cette prédiction (pour l'instant, ce seront tous les autres attributs : ‘.’)  l’entrepôt de données avec lequel on construit l'arbre : score #chargement des données : échantillon d’apprentissage Library(xlsReadWrite) score.app<-read.xls(file=file.choose(),sheet=1) ad.score.cnt<- rpart.control (minsplit = 10) #importation de library Library(rpart)
  8. Data Mining 8 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014  le nom de la variable qui contient les paramètres : control = ad.score.cnt La représentation graphique des Arbres de Décision avec R a deux formes : Représentation Textuelle et Représentation Graphique. Concernant le premier type de visualisation, l’arbre est donné sous forme de lignes imbriquées dont chacune correspondant à une classe séparatrice. R distingue une variable séparatrice majoritaire (nœud feuille) des classes non majoritaires par le caractère « * » Afficher le résultat de la construction sous forme de texte: Afficher le résultat de la construction sous forme graphique : NB : on utilisera les deux commandes plot et text ad.score<- rpart (Decision ~., score.app, control = ad.score.cnt) Résultat plot(ad.score) text(ad.score)
  9. Data Mining 9 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 4 La racine de neud d’erreur est 0.4664 0
  10. Data Mining 10 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 tracer les résultats de validation croisée Ici, il semble que l'erreur relative est réduite au minimum pour un arbre de 10 nœuds. Nous reviendrons l'arbre élagué aux pruneaux et le cp associée à la taille de notre arbre désiré 5. Evaluation de l’arbre de décision i. Prédiction sur le même échantillon La fonction predict() utilise un arbre de décision pour prédire la classe de nouvelles données. Elle prend en paramètres l'arbre et un data frame qui contient les données dont il faut prédire la classe. Pour prédire la classe des données du jeu d'exemples (avec lesquels on a construit l'arbre de décision), on tapera la commande : #prédiction sur le même échatillon pred.classe<- predict(ad.score,score.app,type="class") print(summary(pred.classe)) plot(pred.classe) Il s’agit de 44 accepted et82 Refused et 23 Torlerated
  11. Data Mining 11 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 Matrice de de Confusion (Table de Contingence) Cette matrice construit un tableau croisé entre la cible observée (Decision) et la prédiction du modèle (pred.classe) La table mc se comporte comme une matrice à 2 dimensions, on en déduit le taux d’erreur En déduire les pourcentages suivants : Les Classes de Prédiction Accepted Refused Tolerated Accepted 40 3 1 Refused 2 72 1 Tolerated 2 7 21 #matrice de confusion mc <- table(score.app$Decision,pred.classe) print(mc) plot(mc)
  12. Data Mining 12 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 ii. Calcul du taux de l’erreur : Calculer le taux d’erreur en appliquant la formule suivante : erreur = Somme des éléments hors diagonale principale / Nombre total des observations. iii. Utilisez l'arbre pour donner une prédiction pour l’échantillon du test iv. 6. La prédiction de la classe d'une donnée par un arbre de décision Prédiction sur un échantillon de test (2ème feuille du fichier ScoreData.xls) Utilisez l'arbre pour donner une prédiction pour l’échantillon de test 7. Modification des paramètres de construction de l’arbre : i. Décrire l’utilité de la fonction rpart.control : #taux d'erreur TauxErreur<- (mc[2,1]+mc[1,2])/sum(mc) score<-read.xls(file=file.choose(),sheet=2) > pred.classe<- predict(ad.score,score,type="class") Résultat et interprétation Dans la prédiction de l’échantillon test nous obtenons les différent cas ainsi que la décision prise au niveau de 3 différents résultats : accepté, refusé ou toléré. Ceci décidé à travers l’arbre de décision établi c’est-à-dire : ad.score. Il permet donc d’automatiser la prise d’accords, refus ou tolérance de crédit pour les différents clients. Il permet de contrôler les différents aspects en fonction d’une segmentation de nombre de lignes décrite par le paramètre minsplit et d’ajuster les modèles.
  13. Data Mining 13 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 ii. En fixant les paramètres suivants, donner le nouvel arbre de décision : Minsplit = taille minimale pour segmenter = 50 Minbucket = effectif d’admissibilité = 20 8. Utilisation du package « tree » : Paramètres d’apprentissage : nobs = nombre d’obs. dans l’éch. d’apprentissage ; mincut = effectif d’admissibilité, minsize = taille min. pour segmenter Apprentissage : classe vs. toutes les autres variables du data.frame control<- rpart.control( minsplit = 50 , minbucket = 20 ) Aad.score<- rpart (Decision ~., score.app, control = control) print(Aad.score) library (tree ) cnt<- tree.control(nobs=nrow(score.app), mincut=20, minsize=50) Arb<- tree(Decision ~ ., data=score.app,control=cnt) print(Arb)
  14. Data Mining 14 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 9. Utilisation du package « party » : Travail demandé : 1. Construire des modèles de prise décision sur les entrepôts de données : Faillite_entrep credit-german 2. Donner un rapport sur chaque modèle library(party) party <- ctree_control(minsplit=20,minbucket=10) arbre<- ctree(Decision ~ ., score.app, controls= party) plot(arbre)
  15. Data Mining 15 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 Faillite_entrep > library (rpart) > Faillite<-read.table(file="Faillite_entrep.txt", row.names=1, header=T) Notre variable de décision est ET ad.Faillite.cnt<- rpart.control (minsplit = 1) ad.Faillite <- rpart (ET ~., Faillite, control = ad.Faillite.cnt) On constate que la prise de décision commence si F est 0 donc la probabilité de F est 1 plot (ad.Faillite, branch=.2, uniform=T, compress=T, margin=.1) text (ad.Faillite, all=T, use.n=T, fancy=T)
  16. Data Mining 16 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 L’erreur de nœud de decision est 0.45652 La taille de l'arbre est réalisée avec la validation croisée comme avant, où le taux d'erreur relative de «chute» les échantillons hors-sac dans l'arborescence existante est tracée avec erreurs types pour chaque groupe
  17. Data Mining 17 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 La modalisation de l’arbre de Faillite des entreprises Ici, il semble que l'erreur relative est réduite au minimum pour un arbre de 8 nœuds. Nous reviendrons l'arbre élagué aux pruneaux et le cp associée à la taille de notre arbre désiré
  18. Data Mining 18 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 > summary(ad.Faillite) Call: rpart(formula = ET ~ ., data = Faillite, control = ad.Faillite.cnt) n= 46 CP nsplit rel error xerror xstd 1 0.76190476 0 1.0000000 1.1904762 0.1608724 2 0.09523810 1 0.2380952 0.5714286 0.1418182 3 0.04761905 2 0.1428571 0.4761905 0.1332150 4 0.02380952 3 0.0952381 0.3809524 0.1224161 5 0.01000000 7 0.0000000 0.4285714 0.1281221 Node number 1: 46 observations, complexity param=0.7619048 predicted class=NF expected loss=0.4565217 class counts: 21 25 probabilities: 0.457 0.543 left son=2 (20 obs) right son=3 (26 obs) Primary splits: AD < 1.74 to the left, improve=13.918390, (0 missing) FD < 0.075 to the left, improve=12.403230, (0 missing) RA < 0.035 to the left, improve= 9.782609, (0 missing) AV < 0.695 to the right, improve= 1.895854, (0 missing) Surrogate splits: FD < 0.075 to the left, agree=0.848, adj=0.65, (0 split) RA < 0.035 to the left, agree=0.848, adj=0.65, (0 split) AV < 0.265 to the left, agree=0.674, adj=0.25, (0 split) Node number 2: 20 observations, complexity param=0.0952381 predicted class=F expected loss=0.1 class counts: 18 2 probabilities: 0.900 0.100
  19. Data Mining 19 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 left son=4 (18 obs) right son=5 (2 obs) Primary splits: FD < 0.13 to the left, improve=3.6000000, (0 missing) RA < 0.06 to the left, improve=0.7111111, (0 missing) AD < 0.585 to the right, improve=0.7111111, (0 missing) AV < 0.27 to the right, improve=0.6000000, (0 missing) Node number 3: 26 observations, complexity param=0.04761905 predicted class=NF expected loss=0.1153846 class counts: 3 23 probabilities: 0.115 0.885 left son=6 (1 obs) right son=7 (25 obs) Primary splits: AV < 0.695 to the right, improve=1.6276920, (0 missing) AD < 2.16 to the left, improve=1.5576920, (0 missing) RA < 0.01 to the left, improve=0.3221851, (0 missing) FD < 0.155 to the left, improve=0.2326923, (0 missing) Node number 4: 18 observations predicted class=F expected loss=0 class counts: 18 0 probabilities: 1.000 0.000 Node number 5: 2 observations predicted class=NF expected loss=0 class counts: 0 2 probabilities: 0.000 1.000 Node number 6: 1 observations predicted class=F expected loss=0 class counts: 1 0 probabilities: 1.000 0.000 Node number 7: 25 observations, complexity param=0.02380952
  20. Data Mining 20 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 predicted class=NF expected loss=0.08 class counts: 2 23 probabilities: 0.080 0.920 left son=14 (5 obs) right son=15 (20 obs) Primary splits: AD < 2 to the left, improve=1.2800000, (0 missing) AV < 0.39 to the left, improve=0.4800000, (0 missing) RA < 0.105 to the right, improve=0.1185965, (0 missing) FD < 0.145 to the right, improve=0.1010526, (0 missing) Node number 14: 5 observations, complexity param=0.02380952 predicted class=NF expected loss=0.4 class counts: 2 3 probabilities: 0.400 0.600 left son=28 (3 obs) right son=29 (2 obs) Primary splits: AD < 1.86 to the right, improve=1.066667, (0 missing) FD < 0.16 to the left, improve=0.900000, (0 missing) RA < 0.055 to the left, improve=0.900000, (0 missing) AV < 0.285 to the left, improve=0.900000, (0 missing) Surrogate splits: RA < 0.075 to the right, agree=0.8, adj=0.5, (0 split) AV < 0.34 to the left, agree=0.8, adj=0.5, (0 split) Node number 15: 20 observations predicted class=NF expected loss=0 class counts: 0 20 probabilities: 0.000 1.000 Node number 28: 3 observations, complexity param=0.02380952 predicted class=F expected loss=0.3333333 class counts: 2 1
  21. Data Mining 21 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 probabilities: 0.667 0.333 left son=56 (1 obs) right son=57 (2 obs) Primary splits: FD < 0.175 to the left, improve=0.3333333, (0 missing) RA < 0.065 to the left, improve=0.3333333, (0 missing) AD < 1.935 to the left, improve=0.3333333, (0 missing) AV < 0.285 to the left, improve=0.3333333, (0 missing) Node number 29: 2 observations predicted class=NF expected loss=0 class counts: 0 2 probabilities: 0.000 1.000 Node number 56: 1 observations predicted class=F expected loss=0 class counts: 1 0 probabilities: 1.000 0.000 Node number 57: 2 observations, complexity param=0.02380952 predicted class=F expected loss=0.5 class counts: 1 1 probabilities: 0.500 0.500 left son=114 (1 obs) right son=115 (1 obs) Primary splits: FD < 0.285 to the right, improve=1, (0 missing) RA < 0.095 to the right, improve=1, (0 missing) AV < 0.34 to the right, improve=1, (0 missing) Node number 114: 1 observations predicted class=F expected loss=0 class counts: 1 0 probabilities: 1.000 0.000 Node number 115: 1 observations
  22. Data Mining 22 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 predicted class=NF expected loss=0 class counts: 0 1 probabilities: 0.000 1.000 library (tree ) cnt<- tree.control(nobs=nrow(Faillite,), mincut=20, minsize=50) Arb<- tree(ET ~ ., data= Faillite,,control=cnt) print(Arb) library(party) party <- ctree_control(minsplit=20,minbucket=10) arbre<- ctree(ET ~ ., Faillite,,, controls= party) plot(arbre)
  23. Data Mining 23 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 credit-german
  24. Data Mining 24 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 credit<-read.table(file="credit-german.txt",sep="t",header=T) ad. credit. cnt<- rpart.control (minsplit = 1) ad. credit <- rpart (class ~., credit, control = ad.credit.cnt plot (ad. credit, branch=.2, uniform=T, compress=T, margin=.1) text (ad. credit, all=T, use.n=T, fancy=T)
  25. Data Mining 25 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 plot (ad. credit) text (ad. credit) L’erreur de nœud de décision est 0.3 La taille de l'arbre est réalisée avec la validation croisée comme avant, où le taux d'erreur relative de «chute» les échantillons hors-sac dans l'arborescence existante est tracée avec erreurs types pour chaque groupe
  26. Data Mining 26 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014 Ici, il semble que l'erreur relative est réduite au minimum pour un arbre de 14 nœuds. Nous reviendrons l'arbre élagué aux pruneaux et le cp associée à la taille de notre arbre désiré library (tree ) cnt<- tree.control(nobs=nrow(credit), mincut=20, minsize=50) Arb<- tree(class ~ ., data= credit,control=cnt) print(Arb)
  27. Data Mining 27 Mohamed Heny SELMI© data-mining@esprit.tn ESPRIT 2013-2014
Publicité