Algorithmes de classification - Forêt aléatoire

introduction

Random forest est un algorithme d'apprentissage supervisé qui est utilisé à la fois pour la classification et la régression. Mais cependant, il est principalement utilisé pour les problèmes de classification. Comme nous le savons, une forêt est composée d'arbres et plus d'arbres signifie une forêt plus robuste. De même, l'algorithme de forêt aléatoire crée des arbres de décision sur des échantillons de données, puis obtient la prédiction de chacun d'eux et sélectionne finalement la meilleure solution par vote. C'est une méthode d'ensemble qui est meilleure qu'un arbre de décision unique car elle réduit le surajustement en faisant la moyenne du résultat.

Fonctionnement de l'algorithme de forêt aléatoire

Nous pouvons comprendre le fonctionnement de l'algorithme Random Forest à l'aide des étapes suivantes -

  • Step 1 - Commencez par sélectionner des échantillons aléatoires à partir d'un ensemble de données donné.

  • Step 2- Ensuite, cet algorithme construira un arbre de décision pour chaque échantillon. Ensuite, il obtiendra le résultat de la prédiction de chaque arbre de décision.

  • Step 3 - Dans cette étape, le vote sera effectué pour chaque résultat prévu.

  • Step 4 - Enfin, sélectionnez le résultat de prédiction le plus voté comme résultat de prédiction final.

Le schéma suivant illustrera son fonctionnement -

Implémentation en Python

Tout d'abord, commencez par importer les packages Python nécessaires -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Ensuite, téléchargez le jeu de données iris à partir de son lien Web comme suit -

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

Ensuite, nous devons attribuer des noms de colonne à l'ensemble de données comme suit -

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

Maintenant, nous devons lire l'ensemble de données dans le cadre de données pandas comme suit -

dataset = pd.read_csv(path, names=headernames)
dataset.head()
longueur sépale largeur sépale pétale largeur des pétales Classe
0 5.1 3,5 1,4 0,2 Iris-setosa
1 4,9 3.0 1,4 0,2 Iris-setosa
2 4.7 3.2 1,3 0,2 Iris-setosa
3 4.6 3.1 1,5 0,2 Iris-setosa
4 5,0 3,6 1,4 0,2 Iris-setosa

Le prétraitement des données sera effectué à l'aide des lignes de script suivantes -

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

Ensuite, nous diviserons les données en train et test split. Le code suivant divisera l'ensemble de données en 70% de données d'entraînement et 30% de données de test -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

Ensuite, entraînez le modèle à l'aide de la classe RandomForestClassifier de sklearn comme suit -

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

Enfin, nous devons faire des prédictions. Cela peut être fait à l'aide du script suivant -

y_pred = classifier.predict(X_test)

Ensuite, imprimez les résultats comme suit -

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

Production

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

Avantages et inconvénients de Random Forest

Avantages

Voici les avantages de l'algorithme Random Forest -

  • Il surmonte le problème du surajustement en faisant la moyenne ou en combinant les résultats de différents arbres de décision.

  • Les forêts aléatoires fonctionnent bien pour une large gamme d'éléments de données qu'un seul arbre de décision.

  • La forêt aléatoire a moins de variance qu'un arbre de décision unique.

  • Les forêts aléatoires sont très flexibles et possèdent une très grande précision.

  • La mise à l'échelle des données ne nécessite pas d'algorithme de forêt aléatoire. Il maintient une bonne précision même après avoir fourni des données sans mise à l'échelle.

  • La mise à l'échelle des données ne nécessite pas d'algorithme de forêt aléatoire. Il maintient une bonne précision même après avoir fourni des données sans mise à l'échelle.

Les inconvénients

Voici les inconvénients de l'algorithme Random Forest -

  • La complexité est le principal inconvénient des algorithmes de forêt aléatoire.

  • La construction de forêts aléatoires est beaucoup plus difficile et prend du temps que les arbres de décision.

  • Plus de ressources de calcul sont nécessaires pour implémenter l'algorithme Random Forest.

  • C'est moins intuitif dans le cas où nous avons une grande collection d'arbres de décision.

  • Le processus de prédiction utilisant des forêts aléatoires prend beaucoup de temps par rapport à d'autres algorithmes.