Arbres de Décision en Machine Learning
Arbres de Décision en Machine Learning
Algorithmes typiques :
• Arbres de décision
• Induction basée sur des règles
• Les réseaux de neurones
• K-Voisin le plus proche
• Forêts aléatoires
• Réseaux bayésiens
• SVM
3
Classification
Ensemble de données : (a) Ensemble d'apprentissage , (b)
Ensemble de validation , (c) Ensemble de test
Étant donné l’ensemble d’entrainement
o Utiliser l'ensemble d'entraînement pour créer le modèle
• Trouver un modèle pour le label en fonction des valeurs des
attributs
Utilisez l'ensemble de validation pour :
o Ajuster (optimiser) les paramètres du modèle
o Évaluer la qualité des prédictions du modèle
Utiliser un ensemble de Test pour estimer l’exactitude du
modèle
o Objectifs :
• Les enregistrements non vues doivent se voir attribuer une classe
aussi précisément que possible
• Le modèle doit pouvoir généraliser
• Déployer le modèle
4
Terminologie
Arbres de décision
• Un arbre de décision est une structure arborescente de type
organigramme où un nœud interne représente une attribut, la
branche représente une règle de décision et chaque nœud feuille
représente le résultat.
• Cette structure de type organigramme vous aide dans la prise de
décision.
• C'est une visualisation comme un organigramme qui imite
facilement la pensée au niveau humain .
• C'est pourquoi les arbres de décision sont faciles à comprendre et
à interpréter .
6
nœud racine
• Le nœud le plus élevé d'un arbre de décision est appelé
nœud racine .
• Il apprend à partitionner sur la base de la valeur de
l'attribut.
• Différentes structures arborescentes seront formées si
différentes "fonctions" sont utilisées pour diviser
l'arborescence à la racine.
7
Nœuds internes et feuilles
Ceux-ci sont appelés nœuds internes ou nœuds de décision
Outlook
Label
Sunny Overcast Rain
9
Construire des arbres
Données météo : jouer ou non?
Label
4 attributs
ID code Outlook Temperature Humidity Windy Play
a Sunny Hot High False No
b Sunny Hot High True No
14 enregsitrements Training Data
Outlook
12
Construire l'arbre
L'idée de tout algorithme d'arbre de décision est la suivante:
1. Divisez les données en enregistrements d’entrainement et de test.
2. Démarrer la construction de l'arborescence (sélectionner un attribut au niveau
d'un nœud racine et d'un nœud de décision)
3. Évaluer l'arbre en utilisant les mesures de performance (ASM: Attribute Selection
Measure)
4. Choisissez le meilleur arbre qui résout le problème.
Construire l'arbre : apprendre
13
Un arbre à partir de données
ID code Outlook Temperature Humidity Windy Play
a Sunny Hot High False No
b Sunny Hot High True No
c Overcast Hot High False Yes
d Rainy Mild High False Yes
e Rainy Cool Normal False Yes
f Rainy Cool Normal True No
g Overcast Cool Normal True Yes
h Sunny Mild High False No
i Sunny Cool Normal False Yes
j Rainy Mild Normal False Yes
k Sunny Mild Normal True Yes
l Overcast Mild High True Yes
m Overcast Hot Normal False Yes
n Rainy Mild High True No
14
DT : Algorithme
1. Commencez avec un ensemble de données d'entraînement appellé S. Il doit avoir
des attributs et un label.
2. Déterminer le meilleur attribut dans l'ensemble de données.
3. Divisez S en sous-ensemble qui contient les valeurs possibles pour le meilleur
attribut.
4. Créer un nœud d'arbre de décision contenant le meilleur attribut.
5. Générez de manière récursive de nouveaux arbres de décision en utilisant le
sous-ensemble de données créé à partir de l'étape 3 jusqu'à ce qu'une étape soit
atteinte où vous ne pouvez plus classer les données. Représentez la classe en
tant que nœud feuille.
ID code Outlook Temperature Humidity Windy Play
a Sunny Hot High False No
b Sunny Hot High True No
c Overcast Hot High False Yes
d Rainy Mild High False Yes
e Rainy Cool Normal False Yes
f Rainy Cool Normal True No
g Overcast Cool Normal True Yes
h Sunny Mild High False No
i Sunny Cool Normal False Yes
j Rainy Mild Normal False Yes
k Sunny Mild Normal True Yes
l Overcast Mild High True Yes
m Overcast Hot Normal False Yes
n Rainy Mild High True No
16
Limites de decision
Exemple : données (demande de prêt)
Approuver :
Oui/Non
20
Demande de prêt : la tâche
d'apprentissage
Apprendre un modèle de classification à partir des
données
Utiliser le modèle pour classer les futures demandes
de prêt en
o Oui (approuvé) et
o Non (non approuvé)
Quelle est la classe pour le cas/instance suivant ?
21
Un arbre de décision : exemple de
données sur les prêts
décision et nœuds feuilles (classes)
22
Un arbre de décision : exemple de
données sur les prêts
Non
23
Est-ce le seul arbre que nous pouvons créer ?
L'arbre de décision est-il unique ?
Trouver le meilleur
arbre est NP-difficile.
Tous les algorithmes de
construction d'arbres
actuels sont des
algorithmes
heuristiques 24
Mesure de sélection d'attribut -
Attribute Selection Measure
(ASM)
Construire l'arbre (ASM)
L’ASM est une heuristique permettant de sélectionner le critère
de division qui partitionne les données de la meilleure manière.
L' idée de base derrière tout algorithme d'arbre de décision
est la suivante :
1. Sélectionnez le meilleur attribut à l'aide des mesures de
sélection d'attributs (ASM) pour diviser les enregistrements.
2. Répéter récursivement le processus pour chaque enfant
26
Exemple: Sélection d’attributs
• Supposons que votre objectif
soit de prédire si un utilisateur Label 5 attributs
inconnu appréciera un cours
inconnu.
• À droite se trouve un dataset
d'évaluation de cours.
aimer
• 20 exemples: des évaluations
de cours et des réponses aux
questions que vous pourriez
poser.
28
Exemple: Sélection d’attributs
12 j'aime
Utile
8 je deteste
30
ASM "Entropy"
• L'entropie est une mesure du caractère aléatoire dans les
informations traitées.
• Plus l'entropie est élevée , plus il est difficile de tirer des
conclusions à partir de cette information.
• Lancer une pièce est un exemple d'action qui fournit des
informations aléatoires.
• C: Nombre de classes
• pi: Probabilité de sélectionner au hasard un
exemple dans la classe i
Exemple: Supposons un ensemble R = { a,a,a,b,b,b,b,b }
Entropie = -[ (3/8) Log 2 (3/8) + (5/8)Log 2 (5/8) ]
32
"Entropy": un attribut
14 enregistrements
au total
36
sunny rainy
overcast
Humidity yes wind
𝐼𝐺(𝑇, 𝑋)
𝐺𝑎𝑖𝑛 𝑅𝑎𝑡𝑖𝑜: 𝐺𝑅 𝑇, 𝑋 =
𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜(𝑋)
𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜 𝑋 = − 𝑃 𝑐 𝑙𝑜𝑔2 (𝑃(𝑐))
𝑐∈𝑋 41
Gain Ratio : exemple
Outlook Temp Humidity Wind Play
sunny hot high FALSE NO
sunny hot high TRUE NO
overcast hot high FALSE YES
rainy mild high FALSE YES
rainy cool normal FALSE YES
rainy cool normal TRUE NO
overcast cool normal TRUE YES
sunny mild high FALSE NO
sunny cool normal FALSE YES
rainy mild normal FALSE YES
sunny mild normal TRUE YES
overcast mild high TRUE YES
overcast hot normal FALSE YES
rainy mild high TRUE NO
𝐼𝐺(𝑇, 𝑋)
𝐺𝑎𝑖𝑛 𝑅𝑎𝑡𝑖𝑜: 𝐺𝑅 𝑇, 𝑋 =
𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜(𝑋) 42
Gain Ratio : exemple
3 3 2 2
Play: classes
OUTLOOK yes no total P(c) Pi(yes) Pi(no) E(c)
sunny 2 3 5 0.357143 0.4 0.6 0.970951
overcast 4 0 4 0.285714 1 0 0
rainy 3 2 5 0.357143 0.6 0.4 0.970951
TOTAL 9 5 14
p(yes) p(no) E(T) E(T,X) IG splitInfo GR
0.642857 0.357143 0.940286 0.693536 0.24675 1.577406 0.156428
0.247
𝐺𝑎𝑖𝑛𝑅𝑎𝑡𝑖𝑜 𝑆, 𝑂𝑢𝑡𝑙𝑜𝑜𝑘 = = 0.1566
1.577 43
Gain Ratio : exemple
classes
Temperature yes no total P(c) Pi(yes) Pi(no) E(c)
En utilisant les tableaux
hot
mild
2
4
2
2
4
6
0.285714 0.5 0.5 1
0.428571 0.666667 0.333333 0.918296
en face, on peut en
cool
TOTAL
3
9
1
5
4
14
0.285714 0.75 0.25 0.811278 déduire qu'Outlook a le
p(yes) p(no) E(T)
0.642857 0.357143 0.940286
E(T,X) IG splitInfo GR
0.911063 0.029223 1.556657 0.018773
Gain Ratio le plus élevé.
Donc le nœud racine
classes sera Outlook.
Wind yes no total Pc Pi(yes) Pi(no) E(c)
FALSE 6 2 8 0.571429 0.75 0.25 0.811278
TRUE 3 3 6 0.428571 0.5 0.5 1
TOTAL 9 5 14
p(yes) p(no) E(T) E(T,X) IG splitInfo GR Outlook
0.642857 0.357143 0.940286 0.892159 0.048127 0.985228 0.048849
sunny rainy
overcast
classes
Humidity yes no total Pc Pi(yes) Pi(no) E(c)
high 3 4 7 0.5 0.428571 0.571429 0.985228
normal 6 1 7 0.5 0.857143 0.142857 0.591673
TOTAL 9 5 14
p(yes) p(no) E(T) E(T,X) IG splitInfo GR
0.642857 0.357143 0.940286 0.78845 0.151836 1 0.151836
Gain Ratio : exemple
Outlook-sunny Table
Outlook Temperature Humidity Wind Play
sunny hot high FALSE NO
sunny hot high TRUE NO
sunny mild high FALSE NO
sunny cool normal FALSE YES
sunny mild normal TRUE YES
classes
Temperature yes no total P(c) Pi(yes) Pi(no) E(c)
hot 0 2 2 0.4 0 1 0
mild 1 1 2 0.4 0.5 0.5 1
cool 1 0 1 0.2 1 0 0
TOTAL 2 3 5
p(yes) p(no) E(T) E(T,X) IG splitInfo GR
0.4 0.6 0.970951 0.4 0.570951 1.521928 0.37515
Gain Ratio : exemple Humidity s'est avérée avoir le
GR la plus élevée. Donc le
classes
nœud de décision de la branche
Wind yes no total Pc Pi(yes) Pi(no) E(c)
FALSE 1 2 3 0.6 0.333333 0.666667 0.918296 Outlook-sunny sera Humidity.
TRUE 1 1 2 0.4 0.5 0.5 1
TOTAL 2 3 5
p(yes) p(no) E(T) E(T,X) IG splitInfo GR Créons les tableaux humidity-
0.4 0.6 0.970951 0.950978 0.019973 0.970951 0.020571 high et Humidity-normal
classes
Humidity-normal Table
Humidity yes no total Pc Pi(yes) Pi(no) E(c)
high 0 3 3 0.6 0 1 0 Humidity Wind Play
normal 2 0 2 0.4 1 0 0
TOTAL 2 3 5 normal FALSE YES
p(yes) p(no) E(T) E(T,X) IG splitInfo GR
0.4 0.6 0.970951 0 0.970951 0.970951 1 normal TRUE YES
Outlook
Humidity-high Table
Humidity Wind Play sunny rainy
overcast
high FALSE NO
Humidity ? ?
high TRUE NO
high normal
high FALSE NO
No Yes
Gain Ratio: exemple
Outlook-overcast
sunny rainy
overcast
Humidity yes ?
high normal
No Yes
Outlook Temp Humidity Wind Play
Outlook
sunny rainy
overcast
Humidity yes wind
𝐺𝑖𝑛𝑖𝑋𝑐 = 1 − 𝑝𝑖2
𝑖=1
𝐺𝑖𝑛𝑖𝑋𝑐 = 1 − 𝑝𝑖2
𝑖=1
Outlook
sunny rainy
overcast
Table: Outlook-sunny
Gini: exemple
Outlook-sunny Table
Outlook Temperature Humidity Wind Play
sunny hot high FALSE NO
sunny hot high TRUE NO
sunny mild high FALSE NO
sunny cool normal FALSE YES
sunny mild normal TRUE YES
Table: Outlook-sunny
Gini: exemple
classes
Temperature yes no total P(c) Pi(yes) Pi(no) GINIi
hot 0 2 2 0.4 0 1 0
mild 1 1 2 0.4 0.5 0.5 0.5
cool 1 0 1 0.2 1 0 0
TOTAL 2 3 5 W GINI 0.2
classes
Humidity yes no total Pc Pi(yes) Pi(no) GINIi
High 0 3 3 0.6 0 1 0
Low 2 0 2 0.4 1 0 0
TOTAL 2 3 5 W Gini 0
classes
Wind yes no total Pc Pi(yes) Pi(no) GINIi
FALSE 1 2 3 0.6 0.333 0.667 0.444
TRUE 1 1 2 0.4 0.5 0.5 0.5
TOTAL 2 3 5 W Gini 0.467
Outlook
sunny rainy
overcast
Humidity ? ?
high low
Outlook-sunny Humidity-high Table : Outlook-sunny
Outlook Temperature Humidity Wind Play Humidity
Outlook-sunny Humidity-normal
Outlook Temperature Humidity Wind Play
sunny cool normal FALSE YES
sunny mild normal TRUE YES
Outlook
sunny rainy
overcast
Humidity ? ?
high normal
No Yes
Table Outlook-overcast
Weather Data
Outlook Temperature Humidity Wind Play
overcast hot high FALSE YES
overcast cool normal TRUE YES
overcast mild high TRUE YES
overcast hot normal FALSE YES
sunny rainy
overcast
Humidity Yes ?
high low
No Yes
Table Outlook-rainy
Weather Data : Outlook-rainy
Outlook Temperature Humidity Wind Play
rainy mild high FALSE YES
rainy cool normal FALSE YES
rainy cool normal TRUE NO
rainy mild normal FALSE YES
rainy mild high TRUE NO
sunny rainy
overcast
Humidity Yes Wind
sunny rainy
overcast
Humidity Yes Wind
74
SKLearn
arbres de décision SKLearn
# Cet exemple provient du lien suivant
# https://scikit-learn.org/stable/modules/tree.html
from sklearn.datasets import load_iris
from sklearn import tree
import graphviz
# Charger les données d'iris
iris = load_iris()
# X contiendra les caractéristiques, y contiendra l'étiquette
X, y = iris.data, iris.target
print('La cible de classification:\ n',iris [‘target'])
print('Les noms des colonnes du jeu de données:\n',iris [' feature_names '])
print('Les noms des classes cibles:\n',iris [' target_names '])
La cible de classification:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0000000000000111111111111111111111111
1111111111111111111111111122222222222
2222222222222222222222222222222222222
2 2]
Les noms des colonnes du dataset:
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
Les noms des classes cibles:
['setosa' 'versicolor' 'virginica']
76
arbres de décision SKLearn
print('La description complète du dataset:\n',iris['DESCR'])
print('Le chemin vers l'emplacement du dataset:\n',iris['filename'])
:Summary Statistics:
77
arbres de décision SKLearn
# Utilisez le classificateur d'arbres de décision pour ajuster les données
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)
# Tracer l'arbre
tree.plot_tree(clf)
78
Sommaire
Sommaire
Un arbre de décision est une structure semblable à un organigramme
dans laquelle :
• Chaque nœud interne représente un « test » sur un attribut, un
• Chaque branche représente le résultat du test, et
• Chaque nœud feuille représente une étiquette de classe (décision prise après
calcul de tous les attributs).
• Les chemins de la racine à la feuille représentent des règles de classification.
Avantages :
o Sont simples à comprendre et à interpréter
o Avoir de la valeur même avec peu de données concrètes
o Aide à déterminer les pires, les meilleures et les valeurs attendues pour
différents scénarios
Inconvénients :
o Ils sont instables, ce qui signifie qu'un petit changement dans les données
peut entraîner un changement important dans la structure de l'arbre de
décision optimal.
o Ils sont souvent relativement imprécis.
On peut y remédier en remplaçant un arbre de décision unique par une
forêt aléatoire (Ensemble)
81
Ressources
Divers Ressources
o Youtube:
Introduction:
o https://www.youtube.com/watch?v=7VeUPuFGJHk
o https://www.youtube.com/watch?v=_L39rN6gz7Y
Construire des arbres :
o https://www.youtube.com/watch?v=ZVR2Way4nwQ
Sélection de fonctionnalités (données manquantes)
o https://www.youtube.com/watch?v=wpNl-JwwplA
Tutoriel (arbres de décision en Python)
o https://www.youtube.com/watch?v=RmajweUFKvM
Le classificateur d'arbre de décision :
o https://www.youtube.com/watch?v=ZVR2Way4nwQ
Régression d'arbre de décision :
o https://www.youtube.com/watch?v=UhY5vPfQIrA
Méthode de sélection des attributs (ASM)
o https://www.youtube.com/watch?v=5aIFgrrTqOw
o https://www.youtube.com/watch?v=-W0DnxQK1Eo
83
Divers Ressources
o Tutoriels :
Mesures de sélection d'attribut :
https://www.kdnuggets.com/2020/01/decision-tree-algorithm-explained.html
https://becominghuman.ai/decision-trees-in-machine-learning-f362b296594a
https://www.datacamp.com/community/tutorials/decision-tree-classification-python
https://stackabuse.com/decision-trees-in-python-with-scikit-learn/
https://www.hackerearth.com/practice/machine-learning/machine-learning-algorithms/ml-decision-
tree/tutorial/
https://towardsdatascience.com/understanding-decision-trees-for-classification-python-9663d683c952
o Documents :
https://en.wikipedia.org/wiki/Decision_tree_learning
https://scikit-learn.org/stable/modules/tree.html
84