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