Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours 2 - Arbres de Decision

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 44

Classification, Apprentissage,

Décision
● MCC :
– (CC+Exam)/2
– CC : pas de projet, notes sur les rendus de TP (et
plus si affinités)
● Eléments du cours sur la page :
http://pageperso.lif.univ-mrs.fr/~remi.eyraud/CAD/

1
Arbres de Décision
&
Forêts aléatoires

2
Les arbres de décision
Un arbre de décision est un arbre orienté dont :
Les noeuds internes sont étiquetés par un test applicable à
tout individu, généralement sur un attribut de description.
Les arcs contiennent les résultats du test.
Les feuilles sont étiquetés par une classe par défaut.

3
Les arbres de décision (2)

Une feuille est repérable par sa position : la liste (unique)


des valeur des arcs qui permettent d'y accéder.
Un arbre de décision est donc un classifieur organisé de
manière arborescente.
Ce classifieur a une traduction immédiate en terme de
règles de décision, mutuellement exclusives et
ordonnées (si ... alors ... sinon ...).
2 qualités principales :
Facilement interprétables
Classification rapide
4
Classification supervisée par arbre
de décision
Problème : Construire un arbre de décision à partir d'un
échantillon de données
Caractéristiques des données :
Apprentissage supervisé : nécessite un expert
Attributs à valeurs discrètes (vs continus)
Question : quel attribut choisir en premier ? En
second ? ...

5
Classification avec des arbres de
décision exemple : formalisation
Exemple : Evaluation du risque cardiaque à partir d'une
table Individu contenant les attributs :
Age (entier positif)
Fumeur (O ou N)
Taille (entier positif)
Poids (entier positif)
Sexe (H ou F)
On demande à un cardiologue d'étiqueter une partie de la
base (disons 5%) en 2 classes : individu à risque ou
non.
6 6
Classification avec des arbres de
décision exemple : discrètisation
Ces attributs doivent être discrètisés :
Age (entier positif)
Taille (entier positif)
Poids (entier positif)
Proposition :
Age en trois catégories : jeune (<20 ans), actif (entre 21 et 50),
senior (>50)
On applique une formule liant taille et poids et on obtient un
attribut Corpulence prenant trois valeurs : faible, moyenne,
forte.
7 7
Classification avec des arbres de
décision exemple : échantillon
Voici les données étiquetées par le cardiologue :
Sexe Fumeur Corpulence Risque
F O faible N
F O forte O
F O faible O
F N forte O
H O faible O
H N moyenne N
H N forte N
F N moyenne O
H N forte O
F N moyenne O
8 8
Fouille avec des arbres de décision
exemple (apprentissage)
Choix de la racine de l'arbre : le pivot qui “disperse” le
mieux les 2 classes
Age ? Corp. ?

Moyenne
>20 <50

le

fo
>5
0

ib
<2

rte
0

fa
1N, 1O 2N, 3O 0N, 3O 1N, 2O 1N, 2O 1N, 3O

Sexe ? Fum. ?
H
F

1N, 5O 2N, 2O 1N, 3O N2N, 4O


9
Fouille avec des arbres de décision
exemple (apprentissage)
Choix de la racine de l'arbre : le pivot qui “disperse” le
mieux les 2 classes
Age ? Corp. ?

Moyenne
>20 <50

le

fo
>5
0

ib
<2

rte
0

fa
1N, 1O 2N, 3O 0N, 3O 1N, 2O 1N, 2O 1N, 3O

Sexe ? Fum. ?
H
F

1N, 5O 2N, 2O 1N, 3O N2N, 4O


10
Fouille avec des arbres de décision
exemple (apprentissage)
On continue récursivement sur chacune des branches à
partir de : Age ?

>20 <50

>5
0
<2

0
1N, 1O 2N, 3O O
On a (première branche à gauche) :

Sexe ? Corp. ? Fum. ?


Moyenne
le

fo
ib
H

N
F

rte
fa

1N, 1O 0N, 0O 1N, 0O 0N, 0O 0N, 1O 1N, 1O 0N, 0O


11
Fouille avec des arbres de décision
exemple (apprentissage)
L'arbre courant à ce moment : Age ?

>20 <50

>5
0
<2

0
Corp. ? 2N, 3O O

Moyenne
le

fo
ib

rte
fa

N ? O
Après calcul, en testant sur l'attribut Sexe (puis
corpulence) dans la branche restant à déterminer on
disperse entièrement les classes.
12
Fouille avec des arbres de décision
exemple (apprentissage)
Résultat final : Age ?

>20 <50
>50
<20

Corp. ? Sexe ? O
Moyenne
le

fo
ib

H
F
rte
fa

N ? O O Corp. ?

Moyenne
le

fo
ib

rte
fa

O N N
On peut alors classer toutes les données d'apprentissage.
13
Arbre de décision de risque
empirique minimal
Il est toujours possible de trouver un arbre de décision
minimisant le risque empirique (= erreur sur
l'échantillon) sur un jeu de données. Mais cet arbre
est bien souvent un mauvais classifieur. Pourquoi ?
Le plus petit arbre de décision compatible avec les
données est l'hypothèse la meilleure en
généralisation. Pourquoi ?
La théorie de l'apprentissage statistique de Vapnick
permet de répondre formellement à ces questions.
Trouver le plus petit arbre de décision compatible avec
un échantillon est un problème NP-complet :-( 14
Qu'est-ce qu'on peut faire ?

Construire un petit arbre de décision compatible avec le


maximum de données.
Conforme à 2 principes :
Le rasoir d'Occam (XIV siècle) :
“Les multiples ne doivent pas être utilisés sans nécessité”
(pluralitas non est ponenda sine necessitate)
Autrement dit : entre deux représentations équivalentes, il
faut choisir la moins complexe.
Le principe MDL (Minimum Description Length) :
Soit D l'échantillon. Apprendre c'est trouver l'hypothèse
H minimisant ||H|| + ||D|H||, c'est à dire un compromis
entre la taille de l'hypothèse et celle du codage des
données par cette hypothèse. 15
Algorithmes d'apprentissage
d'arbres de décision
Plusieurs algorithmes : CART [Breiman84],
C4.5[Quinlan94].
Algorithmes en deux étapes :
Construction d'un petit arbre de décision compatible
Elagage de l'arbre
Première étape :
Idée principale : Diviser récursivement et le plus
effcacement possible l'échantillon d'apprentissage par
des tests défnis à l'aide des attributs jusqu'à obtenir
des sous-échantillons ne contenant (presque) que des
exemples appartenant à une même classe.
Méthodes de construction Top-Down, gloutonnes et
récursives. 16
Algorithmes d'apprentissage
d'arbres de décision
On a besoin de trois opérateurs permettant de :
Décider si un noeud est terminal
Si un noeud n'est pas terminal, lui associer un test
Si un noeud est terminal, lui affecter une classe
Algorithme générique :
arbre ← arbre vide ; noeud_courant ← racine
Répéter
Décider si le noeud courant est terminal
Si le noeud est terminal alors lui affecter une classe
Sinon sélectionner un test et créer autant de noeuds fils qu'il
y a de réponses au test
Passer au noeud suivant (si il existe)
Jusqu'à obtenir un arbre de décision consistant 17
Les trois opérateurs (en général)
Un noeud est terminal lorsque :
Soit (presque) tous les exemples correspondant à ce noeud
sont dans la même classe,
Soit il n'y a plus d'attribut non utilisé dans la branche
correspondante,
On attribue à un noeud terminal la classe majoritaire (en
cas de conflit, on peut choisir la classe majoritaire dans
l'échantillon, ou en choisir une au hasard),
On sélectionne le test qui fait le plus progresser la
classification des données d'apprentissage. Comment
mesurer cette progression ? CART utilise l'indice de
Gini et C4.5 utilise le calcul d'entropie. 18
Indice de Gini
Soit S l'échantillon et S1, S2, ... Sk sa partition suivant les
classes (S1 sont les données de S de la classe 1, etc.)
Gini(S) = ∑i |Si|/|S|*(1-|Si|/|S|) = ∑i≠j |Si|/|S|*|Sj|/|S|
Supposons qu'on a un problème à 2 classes (k=2), et
posons x = |S1|/|S|. Alors |S2|/|S| = 1-x. On a donc :
Gini(S) = 2x(1-x)
Cette fonction (idem pour k quelconque) :
a des valeurs dans [0,1]
S'annule pour x = 0 et x= 1 (tous éléments d'une seule classes)
Sont maximales pour x = 1/2 (autant d'éléments de chaque
classe) 19
Gain et sélection du test avec Gini
Soit p la position courante de l'arbre en construction et T
un test. On définit :
Gainf (p,T) = Gini(Sp) - ∑j Pj * Gini(Spj)
où Sp est l'échantillon associé à p et Pj est la proportion
des éléments de Sp qui satisfont la j-ème branche de T.
Maximiser le gain revient à minimiser ∑j Pj * f(Spj)
Gain maximal : l'attribut permet de classer correctement toutes les
données
Gain nul : données sont aussi mal classées après le test qu'avant
Sélectionner l'attribut dont le gain est maximal correspond à une
stratégie gloutonne : rechercher le test faisant le plus progresser
la classification localement. 20
Exemple d'utilisation de l'algo de
CART avec Gini
Résultat

G
G
G
G
P
P
P
P

21
Sur l'exemple des matchs
Avec le critère de Gini et en désignant les attributs
descriptifs Dom, Bal, MCC et MPG nous avons :

<4G,4P>
DOM ?

V F

<3G,2P> <1G,2P>

Gain(ε,Dom) = Gini(S)-(5/8Gini(S1) + 3/8 Gini(S2))


= Gini(S) - 5/8*2*3/5*2/5 – 3/8*2*1/3*2/3
R = Gini(S) - 7/15 22
Sur l'exemple des matchs
Avec le critère de Gini et en désignant les attributs
descriptifs Dom, Bal, MCC et MPG nous avons :

<4,4> Bal ?

V F

<3,1> <1,3>

Gain(ε,Dom) = Gini(S)-(4/8Gini(S1) + 4/8 Gini(S2))


= Gini(S) - 4/8*2*3/4*1/4 – 4/8*2*1/4*3/4
= Gini(S) - 3/8 23
Sur l'exemple des matchs
Avec le critère de Gini et en désignant les attributs
descriptifs Dom, Bal, MCC et MPG nous avons :

<4,4> MCC ?

V F

<2,3> <2,1>

Gain(ε,Dom) = Gini(S)-(5/8Gini(S1) + 3/8 Gini(S2))


= Gini(S) - 5/8*2*2/5*3/5 – 3/8*2*2/3*1/3
= Gini(S) - 7/15 24
Sur l'exemple des matchs
Avec le critère de Gini et en désignant les attributs
descriptifs Dom, Bal, MCC et MPG nous avons :

<4,4> MPG ?

V F

<2,2> <2,2>

Gain(ε,Dom) = Gini(S)-(4/8Gini(S1) + 4/8 Gini(S2))


= Gini(S) - 4/8*2*2/4*2/4 – 4/8*2*2/4*2/4
= Gini(S) - 1/2 25
Sur l'exemple des matchs
Avec le critère de Gini et en désignant les attributs
descriptifs Dom, Bal, MCC et MPG nous avons :
Gain(ε,Dom) = Gini(S) - 7/15
Gain(ε,Bal) = Gini(S) - 3/8
Gain(ε,MCC) = Gini(S) - 7/15
Gain(ε,MPG) = Gini(S) - 1/2
Le gain maximal est obtenu pour le test sur les attributs
Balance positive et Mauvaises conditions
climatiques. Il faut alors faire un choix (aléatoire)
entre ces deux attributs. 26
Sur l'exemple des matchs
Supposons que l'on choisisse l'attribut “balance
positive” à la racine. L'arbre courant est alors :
<4,4> Bal ?

V F

<3,1> <1,3>
1 2

Il faut alors recommencer récursivement (et


indépendamment) le calcul du gain en position 1
et en position 2 pour choisir les tests à ces
niveaux. 27
Sur l'exemple des matchs (résultat)

28
Autre fonction de test : l'entropie
● Il y a d'autres indices que Gini pour tester la
dispersion des classes. Le plus utilisé est
l'entropie :
Soit S l'échantillon et S1, S2, ... Sk sa partition
suivant les classes (S1 sont les données de S de
la classe 1, etc.). L'entropie de l'échantillon
est :
Entropy(S) = ∑i |Si|/|S|* log(|Si|/|S|)

29
Problème des arbres de décision
Un arbre peut avoir une erreur apparente nulle mais
une erreur réelle importante, c'est-à-dire être bien
adapté à l'échantillon mais avoir un pouvoir de
prédiction
faible.
Problème de
surapprentissage

30
Eviter le sur-apprentissage
On peut utiliser un ensemble de validation pour arrêter
la construction de l'arbre quand l'estimation de
l'erreur ne diminue plus.
On peut construire l'arbre en entier, puis l'élaguer

31
Elagage d'arbre de décision (CART)
Supposons qu'on a construit un arbre T0.
α = ∆Remp(S) / Tp|-1 où ∆Remp(S) est le nombre d'erreurs
supplémentaires que commet l'arbre de décision sur S
lorsqu'on l'élague à la position p et où |Tp|-1 mesure le
nombre de feuilles supprimées.
Ti+1 est obtenu en élaguant Ti en un nœud en lequel α est
minimal. Soit T0, ... , Ti, ... , Tt la suite obtenue, Tt
étant réduit à une feuille. On sélectionne l'arbre Ti dont
le nombre d'erreurs calculé sur un ensemble de
validation Sval est minimal.
32
Retours à l'exemple
On dispose de l'ensemble de validation suivant :

L'arbre T0 est l'arbre construit précédemment.


T1 est l'arbre obtenu en élaguant à partir de la position 2
T2 est obtenu en élaguant à partir de la position 1.
T3 est réduit à une feuille, portant la classe gagné.
L'algorithme d'élagage retournera alors l'arbre T2. 33
Résultat de CART sur l'exemple

34
Elagage d'arbre de décision (C4.5)
L'idée est d'élaguer en estimant l'erreur : si la somme
(pondérée) des erreurs des fils est supérieure à celle du
père, alors on élague.
On peut aussi tenir compte de l'intervalle de confiance :
[e-u√(e(1-e)/n); e+u√(e(1-e)/n)] pour un u donné.
C4.5 compare les bornes sup. de l'intervalle de confiance
Exemple sur un nœud binaire p ayant deux fils p1 et p2
C4.5 élague si
|Sp1|/|S|*(e(p1)-u√(e(p1)(1-e(p1))/|Sp1|) +
|Sp2|/|S|*(e(p2)-u√(e(p2)(1-e(p2))/|Sp2|)
est supérieur à |Sp|/|S|*(e(p)-u√(e(p)(1-e(p))/|Sp|)
35
Complément sur les attributs
Les propriétés vues sur les attributs binaires s'étendent
aux attributs n-aires
Attributs discrets : il est possible (si on veut des arbres
binaire par exemple) de regrouper a priori des
valeurs des attributs.
Attribut continus : processus de discrétisation (souvent
à l'aide d'inégalités).
Attributs à valeurs manquantes :
En classement : prendre la branche majoritaire
En apprentissage : donner un valeur suivant la distribution
(locale ou globale sur l'échantillon) 36
Pour être complet
On peut facilement introduire une matrice de coût
de prédictions erronées : cela permet de pénaliser
un type d'erreur plus qu'un autre.

Des attributs n-aires peuvent prendre un grand


nombre de valeurs : il est possible de les
pénaliser pour retarder leur apparition dans
l'arbre.

37
Forêts aléatoires (Random forests)
Instabilité des arbres de décision: Un des
inconvénients principaux des méthodes
d'apprentissage par arbres de décision est leur
instabilité. Sur des données réelles, un attribut est
choisi plutôt qu'un autre se joue à peu de chose.
Or le choix d'un attribut-test, surtout s'il est près
de la racine, influence grandement le reste de la
construction. Ces algorithmes ont une variance
importante.
➔ Une solution est d'apprendre plusieurs arbres

sur l'échantillon d'apprentissage et de faire un


vote sur les nouvelles données 38
Forêts aléatoires : algorithme
Entrée : un ensemble S de n données
1) Créer K ensemble de données en réalisant un tirage
avec remise
2) Apprendre K arbres de décision, un par ensemble de
données
3) Retourner la forêt

Quand une nouvelle donnée doit être classée, on


regarde la classe que donne chacun des K arbres : la
forêt retourne la classe majoritaire (décision par vote
majoritaire) 39
k-plus proches voisins
(aka k-ppv ou k-nn)

40
k-plus proches voisins
● Objectif : pouvoir prédire la classe d'un nouvel exemple
en utilisant les exemples déjà connus
● Principe :
– regarder la classe des k exemples les plus proches (k=1, 3,
…)
– Affecter la classe majoritaire dans le voisinage au nouvel
exemple
Exemple : 2 classes, dimension 2, k=1

A
B

41
Algorithme
● Soit S ={(x,y) | x ∈ X ⊆ Rd, y∈ Y}
● Soit x' l'exemple à classer
k-ppv(S, x') :
pour chaque exemple (x,y) dans S :
Calculer la distance D(x,x')
pour chaque x'' dans k-voisinage(x') :
Ajouter 1 au nombre d'occurrences de y''
Attribuer à x' la classe la plus fréquente
42
Cas d'égalité
● Que faire en cas d'égalité ?
– Augmenter k de 1
– Tirer au hasard la classe parmi les ambiguës
– Pondération des exemples par leur distance à x'

43
Pour aller plus loin
● Complexité : O(d|S|)
● On peut :
– Réduire l'ensemble d'apprentissage a priori
– Organiser les données dans des structures
permettant d'accélérer la décision

44

Vous aimerez peut-être aussi