Contenu du cours
Classification Avec Python
Classification Avec Python
Le Caractère Aléatoire de la Forêt
La Forêt Aléatoire utilise de nombreux Arbres de Décision, par défaut 100, mais vous pouvez en utiliser encore plus. Générer autant d'Arbres peut être difficile en ne modifiant que les hyperparamètres, c'est pourquoi une approche aléatoire est utilisée. Heureusement, les Arbres de Décision sont sensibles aux changements de données et d'hyperparamètres, ce qui entraîne un ensemble diversifié d'Arbres.
Il y a deux sources de hasard dans la Forêt Aléatoire :
- Échantillonnage des données pour chaque arbre ;
- Échantillonnage des caractéristiques pour chaque nœud de décision de chaque arbre.
Échantillonnage des données
Pour obtenir un ensemble d'entraînement différent pour chaque arbre de décision dans une forêt, nous utilisons la méthode bootstrap (également appelée bagging).
L'idée est d'échantillonner avec remplacement un ensemble de données de la même taille pour chaque arbre. La taille de l'ensemble de données de chaque arbre est, par défaut, la même que celle de l'ensemble de données initial.
L'échantillonnage avec remplacement peut être considéré comme la sélection aléatoire d'un point de données d'un ensemble d'entraînement, un peu comme tirer une carte d'un jeu de cartes. Cependant, chaque fois qu'un point de données est sélectionné, il n'est pas retiré de l'ensemble d'entraînement, de sorte qu'un point de données peut être choisi plusieurs fois.
De cette façon, chaque arbre est entraîné sur un ensemble de données différent, ce qui rend déjà les arbres diversifiés.
Une autre façon de rendre les arbres plus aléatoires et beaucoup plus rapides est le max_features.
Échantillonnage des caractéristiques
Un Arbre de Décision à chaque Nœud de Décision trouve le meilleur seuil et calcule l'Impureté de Gini pour toutes les caractéristiques. C'est là que la plupart du temps d'entraînement est consacré. Dans une Forêt Aléatoire, seule une partie des caractéristiques est généralement considérée à chaque Nœud.
Dans Scikit-learn, une racine carrée du nombre total de caractéristiques est considérée par défaut. Par exemple, si l'ensemble de données contient 9 caractéristiques, 3 caractéristiques aléatoires seront considérées à chaque Nœud, et si l'ensemble de données en comprend 10000 – 100 seront considérées. Mais le nombre de caractéristiques peut être contrôlé par un paramètre max_features
(discuté sous peu).
Ainsi, nous échantillonnons également les caractéristiques pour chaque nœud, mais cette fois avec remplacement, ce qui signifie que la même caractéristique ne peut pas être choisie deux fois pour un même Nœud.
Vous pouvez contrôler le nombre de caractéristiques données à chaque nœud de décision en utilisant max_features
.
Par défaut, max_features='sqrt'
signifie la racine carrée de toutes les caractéristiques.
Une autre option populaire est max_features='log2'
, qui prend un log2 de toutes les caractéristiques.
Vous pouvez également définir une proportion ; par exemple, max_features=0.1
signifie que 10% des caractéristiques seront utilisées à chaque nœud de décision.
En résumé, la forêt aléatoire est construite de sorte que chaque arbre ait son propre ensemble de données échantillonné, et chaque nœud de décision des arbres utilise son propre ensemble de caractéristiques échantillonnées.
En conséquence, nous obtenons des arbres de décision suffisamment diversifiés pour améliorer la performance d'un modèle.
Merci pour vos commentaires !