Guide de débutant sur les forêts aléatoires en R

Bonjour là-bas, futurs data scientists ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde des forêts aléatoires en utilisant R. Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code auparavant - je serai votre guide amical à chaque étape. D'ici la fin de ce tutoriel, vous aurez votre propre forêt numérique ! Alors, allons-y, non ?

R - Random Forest

Installation des packages nécessaires

Avant de pouvoir planter nos arbres numériques, nous devons nous assurer d'avoir les bons outils. En R, ces outils sont sous forme de packages. Pensez aux packages comme des boîtes à outils remplies de fonctions spéciales qui rendent notre vie plus facile.

Pour notre aventure avec les forêts aléatoires, nous aurons besoin de deux packages principaux : randomForest et caret. Installons-les !

# Installer les packages nécessaires
install.packages("randomForest")
install.packages("caret")

# Charger les packages
library(randomForest)
library(caret)

Lorsque vous exécutez ces lignes, R ira sur Internet et téléchargera ces packages pour vous. C'est comme commander des outils en ligne et les faire livrer directement à votre porte numérique !

Comprendre les forêts aléatoires : les bases

Imaginez que vous êtes perdu dans une forêt et que vous avez besoin de trouver votre chemin. Vous pourriez demander à plusieurs personnes différentes des directions. Certaines pourraient être exactes, d'autres pourraient être éloignées, mais si vous suivez l'opinion majoritaire, vous trouverez probablement le bon chemin. C'est essentiellement comment fonctionne une forêt aléatoire !

Une forêt aléatoire est une méthode d'apprentissage par ensemble, ce qui signifie qu'elle utilise plusieurs arbres de décision pour faire des prédictions. C'est comme avoir un comité d'experts en arbres voter sur la meilleure décision.

Composants clés de la forêt aléatoire

  1. Arbres de décision : Ceux-ci sont les individus "votants" dans notre forêt.
  2. Bootstrapping : Chaque arbre est entraîné sur un sous-ensemble aléatoire des données.
  3. Aléa des caractéristiques : À chaque division dans l'arbre, uniquement un sous-ensemble aléatoire de caractéristiques est considéré.
  4. Agrégation : La prédiction finale est faite par agrégation des prédictions de tous les arbres.

Créer votre première forêt aléatoire

Commençons par un exemple simple en utilisant le jeu de données intégré iris. Ce jeu de données contient des mesures de différentes fleurs d'iris.

# Charger le jeu de données iris
data(iris)

# Définir un grain de sel pour la reproductibilité
set.seed(123)

# Créer un modèle de forêt aléatoire
rf_model <- randomForest(Species ~ ., data = iris, ntree = 500)

# Afficher le modèle
print(rf_model)

Dans ce code :

  • Nous chargeons le jeu de données iris.
  • Nous définissons un grain de sel pour assurer la reproductibilité (ainsi nous obtenons les mêmes résultats "aléatoires").
  • Nous créons un modèle de forêt aléatoire en utilisant randomForest(). La partie Species ~ . signifie que nous essayons de prédire l'espèce en utilisant toutes les autres variables.
  • Nous spécifions ntree = 500, ce qui signifie que notre forêt aura 500 arbres.

Lorsque vous exécutez ceci, vous verrez un résumé de votre modèle de forêt aléatoire. C'est comme obtenir un bulletin de notes pour votre forêt !

Faire des prédictions avec votre forêt aléatoire

Maintenant que nous avons notre forêt, utilisons-la pour faire des prédictions !

# Faire des prédictions sur le jeu de données iris
predictions <- predict(rf_model, iris)

# Créer une matrice de confusion
confusion_matrix <- table(predictions, iris$Species)

# Afficher la matrice de confusion
print(confusion_matrix)

# Calculer la précision
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("Précision:", round(accuracy, 4)))

Ce code :

  • Utilise notre modèle pour faire des prédictions sur le jeu de données iris.
  • Crée une matrice de confusion pour comparer nos prédictions avec les espèces réelles.
  • Calcule et affiche la précision de notre modèle.

La matrice de confusion montre combien de prédictions ont été correctes pour chaque espèce. Les éléments diagonaux représentent les prédictions correctes.

Importance des caractéristiques

Une des grandes choses à propos des forêts aléatoires, c'est qu'elles peuvent nous dire quelles caractéristiques (variables) sont les plus importantes pour faire des prédictions. Jetons un coup d'œil !

# Obtenir l'importance des caractéristiques
importance <- importance(rf_model)

# Tracer l'importance des caractéristiques
varImpPlot(rf_model, main = "Importance des caractéristiques")

Ce code créera un graphique montrant quelles caractéristiques ont été les plus utiles pour faire des prédictions. C'est comme demander à notre forêt quels marqueurs de sentier ont été les plus utiles pour trouver le chemin !

Validation croisée : Tester la force de notre forêt

Pour vraiment tester à quel point notre forêt est bonne en navigation, nous devons voir comment elle se comporte sur des données qu'elle n'a pas vues auparavant. Nous pouvons le faire avec la validation croisée.

# Configurer la validation croisée
ctrl <- trainControl(method = "cv", number = 5)

# Entraîner le modèle avec validation croisée
rf_cv <- train(Species ~ ., data = iris, method = "rf", trControl = ctrl)

# Afficher les résultats
print(rf_cv)

Ce code :

  • Configure une validation croisée 5-fold.
  • Entraîne un nouveau modèle de forêt aléatoire en utilisant cette validation croisée.
  • Affiche les résultats, y compris la précision pour chaque folds.

La validation croisée est comme envoyer notre guide de forêt traverser différentes parties de la forêt pour voir comment il se comporte dans diverses conditions.

Ajuster notre forêt : Trouver le nombre parfait d'arbres

Tout comme dans une vraie forêt, avoir trop peu ou trop d'arbres peut être un problème. Trouvons le nombre optimal d'arbres pour notre forêt aléatoire.

# Définir une plage de nombres d'arbres à essayer
tree_nums <- c(100, 200, 500, 1000)

# Créer un vecteur vide pour stocker les précisions
accuracies <- vector("numeric", length(tree_nums))

# Boucler sur différents nombres d'arbres
for (i in 1:length(tree_nums)) {
rf_model <- randomForest(Species ~ ., data = iris, ntree = tree_nums[i])
predictions <- predict(rf_model, iris)
accuracies[i] <- mean(predictions == iris$Species)
}

# Créer un dataframe des résultats
results <- data.frame(Trees = tree_nums, Accuracy = accuracies)

# Afficher les résultats
print(results)

# Tracer les résultats
plot(tree_nums, accuracies, type = "b",
xlab = "Nombre d'arbres", ylab = "Précision",
main = "Précision vs Nombre d'arbres")

Ce code :

  • Essaye différents nombres d'arbres (100, 200, 500, 1000).
  • Calcule la précision pour chaque nombre d'arbres.
  • Crée un graphique montrant comment la précision change avec le nombre d'arbres.

Conclusion

Félicitations ! Vous venez de faire pousser votre première forêt aléatoire en R. Nous avons couvert les bases de la création d'une forêt aléatoire, de la fabrication de prédictions, de l'évaluation de l'importance des caractéristiques, de la performance avec la validation croisée et même l'ajustement de notre forêt.

N'oubliez pas, tout comme les vraies forêts, les forêts aléatoires prospèrent sur la diversité. Elles fonctionnent mieux lorsque vous avez une variété de caractéristiques et une bonne quantité de données. Alors, allaitez de nombreux bosquets, jeune data scientist !

Voici un tableau de référence rapide des principales méthodes que nous avons utilisées :

Méthode Description
randomForest() Crée un modèle de forêt aléatoire
predict() Fait des prédictions à l'aide du modèle
importance() Calcule l'importance des caractéristiques
varImpPlot() Trace l'importance des caractéristiques
train() Entraîne un modèle avec validation croisée
trainControl() Configure les paramètres de validation croisée

Bonne croissance de forêt, et puissent vos prédictions toujours être précises !

Credits: Image by storyset