Forêt aléatoire

Machine Learning avec des modèles à base d’arbres en R

Sandro Raabe

Data Scientist

Forêt aléatoire

  • Adaptée aux données à haute dimension
  • Simple à utiliser
  • Bonnes performances par défaut
  • Implémentée dans plusieurs packages : ranger, randomForest
  • Interface tidymodels pour ces packages : rand_forest() (dans le package parsnip)
Machine Learning avec des modèles à base d’arbres en R

Idée

  • Idée de base (comme le bagging) : entraîner des arbres sur des échantillons bootstrap
  • Différence clé : prédicteurs aléatoires d'un arbre à l'autre $\rightarrow$ forêt aléatoire
Machine Learning avec des modèles à base d’arbres en R

Intuition

schéma de forêt aléatoire

Machine Learning avec des modèles à base d’arbres en R

Coder : spécifier un modèle de forêt aléatoire

  • Nom de fonction : rand_forest()

Hyperparamètres :

  • mtry : nombre de prédicteurs vus à chaque nœud, valeur par défaut :
    $$\left\lfloor\sqrt\text{num predictors}\right\rfloor$$
  • trees : nombre d'arbres dans la forêt
  • min_n : taille minimale autorisée d'un nœud
rand_forest(

mtry = 4,
trees = 500,
min_n = 10) %>%
# Set the mode set_mode("classification") %>%
# Use engine ranger or randomForest set_engine("ranger")
Machine Learning avec des modèles à base d’arbres en R

Coder : spécifier un modèle de forêt aléatoire

spec <- rand_forest(trees = 100) %>%

set_mode("classification") %>%
set_engine("ranger")
Spécification du modèle Random Forest

(classification)
Arguments principaux : trees = 100
Moteur de calcul : ranger
Machine Learning avec des modèles à base d’arbres en R

Entraîner une forêt

spec %>% fit(still_customer ~ ., data = customers_train)
objet modèle parsnip

Temps d'ajustement :  631ms 
Résultat Ranger

Nombre d'arbres :                  100 
Taille de l'échantillon :          9116 
Nombre de variables indépendantes :  19 
Mtry :                              4 
Taille cible des nœuds :           10
Machine Learning avec des modèles à base d’arbres en R

Importance des variables

rand_forest(mode = "classification") %>%
    set_engine("ranger", importance = "impurity") %>%

fit(still_customer ~ ., data = customers_train) %>%
vip::vip()

graphique d'importance des variables

Machine Learning avec des modèles à base d’arbres en R

Plantons une forêt aléatoire !

Machine Learning avec des modèles à base d’arbres en R

Preparing Video For Download...