Stéphane Yanan
Yves Legris
Le 20 Novembre 2016
Méthode introduite par Leo Breiman en 2001
Idées plus anciennes : Bagging (1996), arbres dedécisions CART (1984)
Preuves de convergences récentes (2006, 2008)
Historique & référence
Les forêts aléatoires consistent à faire tourner en parallèle un grand nombre d’arbres de décisions construits aléatoirement, avant de les moyenner.
Une forêt (Forest)= un ensemble d'arbres
Aléatoire (Random) = Choix au hasard d'un sous arbre
En termes statistiques, si les arbres sont décorrélés, cela permet de réduire la variance des prévisions.
Explication
Bagging ou Random Forests : utiliser le hasard pour améliorer les performances d’algorithmes de «faibles» performances. C’est applicable à différents algorithmes et RF est un aménagement spécifique à CART.
Explication
3 choses importantes concernant Random Forest :
Out Of Bag (OOB) estimate error
Le nombre d'arbre (number of trees)
Le nombre de variable testés à chaque division (mtry)
Le but du jeu est d’obtenir l’OOB le plus petit possible. Pour minimiser cette valeur, on peut régler deux éléments : le nombre d’arbres construits par l’algorithme (ntree) et le nombre de variables testées à chaque division (mtry).
Explication
Ici, on voit que plus le nombre d'arbre est grand, plus l'OOB diminue
Performant pour la prédiction
Objectif : obtenir des arbres les plus décorrélés possible, de façon à ce qu'ils soient indépendants
A utiliser lors d'un grand nombre de variable explicative, ou dans les grandes dimensions (ex : bio-puces, signaux, images ...)
Ne pas utiliser pour implémenter des règles de décision
Effet boite noire, comme pour les réseaux de neuronnes
Ensemble de données choisi : IRIS
150 exemples de critères observé sur 3 espèces différentes
Chaque exemple est composé de 4 attributs
Fichier iris.arff
@ATTRIBUTE sepallength REAL
@ATTRIBUTE sepalwidth REAL
@ATTRIBUTE petallength REAL
@ATTRIBUTE petalwidth REAL
@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica}
Échantillon de donnée d'apprentissage
Statistique de nos valeurs
3 espèces différentes :
Setosa (en bleu)
Versicolor (en rouge)
Virginica (en turquoise)
Cross-validation : 10
Résultat obtenu
Temps : 0.07 secondes - Taux d'erreur : 4.67% (7)
La moyenne des True Positive, correspond au positive correctement prédit, est de 0.953
La moyenne des False Positive, correspond au négative prédit à tort comme des classes positives est de 0.023
La Precision est de 0.953, (c’est une détermination de l’exactitude, c’est le rapport des cas positifs prédits qui étaient exacts au nombre total de cas positifs prédits).
Détails par classe
ArbreDecision(T)
si "condition d'arret"
retourner feuille(T)
sinon
choisir le "meilleur" attribut parmi un sous ensemble choisi aléatoirement
pour chaque valeur v de l'attribut i
T[v] = {(x, y) de T tels que x_i = v}
t[v] = ArbreDecision(T[v])
fin pour
retourner noeud(i, {v -> t[v]})
fin si
Échantillonage des attributs :
On tire uniformément au hasard un sous-ensemble A′ ⊂ A de taille m′ ≤ m (pour la régression, les auteurs suggèrent m′ ≈ m/3) dont on choisira le meilleur attribut. L’objectif de cette opération est de décorréler les arbres produits, la corrélation entre les prédicteurs réduisant les gains potentiels en précision dus au bagging.
Critère d’arrêt :
Les arbres construits sont aussi profonds que possible, i.e. le critère d’arrêt est une condition forte (|Tf| < 10, | Yf| = 1, ...), dans les limites d’un temps de calcul raisonnable. Ainsi, un prédicteur apprendra toutes les relations entre les données à sa portée, le surapprentissage et la sensibilité au bruit qui en résultent étant compensés par le bagging.
1
1
2
2
Comparaison avec l'algorithme J48
Temps : 0.01 secondes - Taux d'erreur : 4% (6)
Résultat obtenu
Les résultats montrent que l'algorithme Random Forest prend plus de temps pour classer les données et nous donne moins de précision.
L’algorithme J48 nous offre une meilleure précision avec une légère augmentation du temps pour la classification.
Le taux d’erreur est plus élevé avec l’algorithme RandomForest comparer à J48.
De plus l’algorithme J48 nous donne la possibilité de générer un arbre ce qui n’est pas possible avec le RandomForest sous l'environnement Weka.