Chapitre 4 - Random Forest Fichier

publicité
Random Forest
u  Quels
sont les principes des méthodes de classification
supervisée ?
u  Comment interprète-t-on un arbre de classification ou de
régression (modèle univarié) ?
u  Pourquoi et comment élaguer un arbre de classification ou
de régression ?
u  Quels sont les avantages des arbres testés avec
randomForest ?
Écologie numérique
V. Jassey
1
Random Forest: principe
u  Principe
du test:
- 
Utiliser un grand nombre d’arbres de décision construits
chacun avec un sous-échantillon différent de l’ensemble
des données (bootstraping)
- 
Pour chaque construction d’arbre, la décision à un nœud
(répartition des objets) est faite en fonction d’un sousensemble de variables tirées au hasard: on tire
aléatoirement m variables parmi les p disponibles et on
cherche parmi celles-ci la meilleure coupure (avec toujours
le même critère).
- 
Utilise l’ensemble des arbres de décision produits pour
faire la prédiction/choisir le nombre de groupes, avec un
choix fait à la majorité.
- 
Classification: variable prédite est de type facteur;
Régression: variable prédite de type numérique
2
Random Forest: Exemple 1
Arbre 1
vieux
jeune
Malade
Bonne
santé
Bonne
santé
grand
Malade
Malade
Bonne santé
petit
Bonne santé
Malade
Arbre 2
vieux
Population d’épicéa:
Jeune, vieux, mâle, femelle,
grand, petit
Prédiction:
Bonne santé, malade
jeune
Bonne santé
Mâle
Bonne santé
Malade
Femelle
Malade
3
Différence avec les arbres standard
u  Chaque
arbre est testé avec du bootstraping:
Bootstrap: ré-échantillonne le jeux de donnée avec N
échantillons => donne un nouveau jeux de donnée à
chaque fois pour construire les arbres
u  Pour
chaque nœud on considère seulement m
variables sélectionnée aléatoirement
u  Pas
d’élagage
u  Réalise
k arbres et on réalise une moyenne des
résultats
4
Random Forest: Importance des variables
et évaluation
u 
Idée: si vous « brouillez » les valeurs d'une variable et que la
précision de votre arbre ne change pas beaucoup, alors la
variable n’est pas si importante.
u 
Les objets Random Forest sont plus difficiles à interpréter que les
arbres simples => comprendre quels variables sont importantes
peut aider
u 
La répartition des objets en classes peut générer de l’impureté:
on veut choisir uniquement les variables qui divisent le nombre
d’objets en classes ‘pures’.
u 
Le coefficient de Gini mesure ces impuretés
n = nombre de classes au sein de la variable
ciblée
pi = est le ratio au niveau de cette classe
(objets répartis au niveau de la division)
5
Random Forest: Out-of-Bag error (OOB error)
Données:
Ré-échantillonnage des
données:
Vieux, grand => bonne santé
Vieux, grand => bonne santé
Vieux, petit => malade
Vieux, petit => malade
Echantillons « Out-of-bag »:
Jeune, grand => bonne santé
Jeune, grand => bonne santé
Jeune, petit => malade
Jeune, petit => malade
Jeune, grand => bonne santé
Jeune, petit => bonne santé
Jeune, petit => bonne santé
Jeune, grand => bonne santé
Jeune, grand => bonne santé
Vieux, petit => malade
Vieux, petit => malade
vieux
jeune
Malade
grand
Bonne santé
Bonne santé
petit
OOB error = ¼ = 0.25
Malade
6
Random Forest: Exemple 2 classification
Jeu de données dune: détecter les relations possibles entre des microorganismes et
des variables environnementales dans des bas-marais (pauvre à extrêmement riche
en nutriments).
132 observations, 70 espèces et 15 variables explicatives (chimie de l’eau)
5 groupes => création d’un objet
cutree avec k = 5 groupes
7
Random Forest: Exemple 2 de classification
> rf.spebw = randomForest(spebw.g~., spe, ntree=500, mtry=1)
ntree: nombre d’arbre de décision a effectué
mtry: nombre de variables (espèces) sélectionnée pour chaque noeud dans l’arbre
> rf.spebw
Call: randomForest(formula = spebw.g ~ .,
data = spe, ntree = 500,
mtry = 10,
proximity = T)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 10
OOB estimate of error rate: 9.85%
8
Random Forest: Exemple 2 de classification
Classement des variables les plus
importantes.
Quelques espèces importantes pour
la classification.
9
Random Forest: Exemple 2 de classification
rf.spebw = randomForest(spebw.g~., env, ntree=500, mtry=10, proximity=T)
Call: randomForest(formula = spebw.g ~ ., data =
env, ntree = 500,
mtry = 10, proximity = T)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 10
OOB estimate of error rate: 27.27%
10
Random Forest: Exemple 2 de classification
rf.ca = randomForest(env$Ca ~., spe, ntree=500, mtry=50, proximity=T)
Call: randomForest(formula = env$Ca ~ ., data = spe, ntree = 500, mtry = 50,
proximity = T)
Type of random forest: regression
Number of trees: 500
No. of variables tried at each split: 50
Mean of squared residuals: 1484.589
% Var explained: 57
MDSplot(rf.specw, spebw.g, palette=NULL, pch=16, cex=env$cond/200)
11
Random Forest: Exemple 2 de classification
rf.ca = randomForest(env$Ca ~., spe, ntree=500, mtry=50, proximity=T)
Call: randomForest(formula = env$Ca ~ ., data = spe, ntree = 500, mtry = 50,
proximity = T)
Type of random forest: regression
Number of trees: 500
No. of variables tried at each split: 50
Mean of squared residuals: 1484.589
% Var explained: 57%
MDSplot(rf.specw, spebw.g, palette=NULL, pch=16, cex=env$cond/200)
En réalité = 3 groupes bien
distincts
Riche en Calcium
Moyennement
riche en Calcium
Pauvre en Calcium
12
Random Forest versus arbres classiques
Random Forest
+ Utile pour des réponses
qualitatives et quantitatives
(régression / classification)
+ Donne les variables
d’importance
+ Bonne performance
+ OOB error
+ Robuste (bootstraping)
-  ‘Black Box’
-  Lent parfois
Arbres de classification
classique
+ Rapide
+ Discrimination visuelle
+ Bonne performance
+ Choix pour couper l’arbre
+ Elagage possible
+ Arbres faciles à interpréter
-  Performance médiocre
-  Pas de sélection de variable clé
(ex. Calcium)
-  Besoin d’un bon CV pour faire les
prédictions
13
Téléchargement