Dans cet article, nous verrons comment construire un Classificateur de forêt aléatoire en utilisant le Bibliothèque Scikit-Learn de Langage de programmation Python et pour ce faire, nous utilisons le Ensemble de données IRIS qui est un ensemble de données assez courant et célèbre.
Forêt aléatoire
Le Forêt aléatoire ou Random Decision Forest est un algorithme d'apprentissage automatique supervisé utilisé pour la classification, la régression et d'autres tâches utilisant des arbres de décision. Les forêts aléatoires sont particulièrement adaptées à la gestion d'ensembles de données volumineux et complexes, à la gestion d'espaces de fonctionnalités de grande dimension et à la fourniture d'informations sur l'importance des fonctionnalités. La capacité de cet algorithme à maintenir une précision prédictive élevée tout en minimisant le surapprentissage en fait un choix populaire dans divers domaines, notamment la finance, la santé et l’analyse d’images, entre autres.
Classificateur de forêt aléatoire
Le classificateur de forêt aléatoire crée un ensemble de arbres de décision à partir d’un sous-ensemble sélectionné au hasard de l’ensemble de formation. Il s'agit d'un ensemble d'arbres de décision (DT) à partir d'un sous-ensemble sélectionné au hasard de l'ensemble de formation, puis il collecte les votes de différents arbres de décision pour décider de la prédiction finale.
Classificateur de forêt aléatoire
De plus, le classificateur de forêt aléatoire peut gérer à la fois les tâches de classification et de régression, et sa capacité à fournir des scores d'importance des caractéristiques en fait un outil précieux pour comprendre l'importance des différentes variables de l'ensemble de données.
Comment fonctionne la classification aléatoire des forêts
La classification forestière aléatoire est une technique d'apprentissage d'ensemble conçue pour améliorer la précision et la robustesse des tâches de classification. L'algorithme construit une multitude d'arbres de décision pendant la formation et génère le classe c'est le mode des classes de classement. Chaque arbre de décision de la forêt aléatoire est construit à l'aide d'un sous-ensemble de données d'entraînement et d'un sous-ensemble aléatoire de caractéristiques introduisant de la diversité parmi les arbres, ce qui rend le modèle plus robuste et moins sujet au surajustement.
L'algorithme de forêt aléatoire utilise une technique appelée bagging (Bootstrap Aggregating) pour créer ces divers sous-ensembles.
Durant la phase de formation, chacun arbre est construit en partitionnant de manière récursive les données en fonction des fonctionnalités. À chaque diviser, l'algorithme sélectionne la meilleure caractéristique du sous-ensemble aléatoire, en optimisant le gain d'informations ou l'impureté Gini. Le processus se poursuit jusqu'à ce qu'un critère d'arrêt prédéfini soit satisfait, comme atteindre une profondeur maximale ou avoir un nombre minimum d'échantillons dans chaque nœud feuille.
Une fois la forêt aléatoire entraînée, elle peut faire des prédictions, en utilisant les votes de chaque arbre pour une classe, et la classe avec le plus de votes devient la classe prédite pour les données d'entrée.
Sélection de fonctionnalités dans les forêts aléatoires
Sélection de fonctionnalité dans Random Forests est intrinsèquement intégré à la construction d’arbres de décision individuels et au processus d’agrégation.
Pendant la phase de formation, chaque arbre de décision est construit à l'aide d'un sous-ensemble aléatoire de fonctionnalités, contribuant à la diversité entre les arbres. Ce processus, connu sous le nom de regroupement de fonctionnalités, permet d'éviter la domination d'une seule fonctionnalité et favorise un modèle plus robuste.
L'algorithme évalue divers sous-ensembles de caractéristiques à chaque point de division, sélectionnant la meilleure caractéristique pour la division des nœuds en fonction de critères tels que le gain d'informations ou l'impureté de Gini. Par conséquent, les forêts aléatoires intègrent naturellement une forme de sélection de fonctionnalités, garantissant que l'ensemble bénéficie d'un ensemble diversifié de fonctionnalités pour améliorer la généralisation et réduire le surapprentissage.
Classificateur de forêt aléatoire dans l'apprentissage automatique
Étape 1 : Chargement de l'ensemble de données
python3
Hiba Boukhari
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn> import> datasets> # Loading the iris plants dataset (classification)> iris> => datasets.load_iris()> |
>
>
Étape 2 : Vérification du contenu de l'ensemble de données et des noms des fonctionnalités qui y sont présents.
python3
print> (iris.target_names)> |
>
>
Sortir:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print> (iris.feature_names)> |
>
>
Sortir:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Étape 3 : Former la répartition des tests
python3
# dividing the datasets into two parts i.e. training datasets and test datasets> X, y> => datasets.load_iris( return_X_y> => True> )> # Splitting arrays or matrices into random train and test subsets> from> sklearn.model_selection> import> train_test_split> # i.e. 70 % training dataset and 30 % test datasets> X_train, X_test, y_train, y_test> => train_test_split(X, y, test_size> => 0.30> )> |
>
>
Étape 4 : Importez le module Random Forest Classifier.
python3
# importing random forest classifier from assemble module> from> sklearn.ensemble> import> RandomForestClassifier> import> pandas as pd> # creating dataframe of IRIS dataset> data> => pd.DataFrame({> 'sepallength'> : iris.data[:,> 0> ],> 'sepalwidth'> : iris.data[:,> 1> ],> > 'petallength'> : iris.data[:,> 2> ],> 'petalwidth'> : iris.data[:,> 3> ],> > 'species'> : iris.target})> |
>
>
Aperçu de l'ensemble de données
python3
# printing the top 5 datasets in iris dataset> print> (data.head())> |
>
>
Sortir:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0>
Étape 5 : Formation du modèle
que signifie xd
python3
# creating a RF classifier> clf> => RandomForestClassifier(n_estimators> => 100> )> # Training the model on the training dataset> # fit function is used to train the model using the training sets as parameters> clf.fit(X_train, y_train)> # performing predictions on the test dataset> y_pred> => clf.predict(X_test)> # metrics are used to find accuracy or error> from> sklearn> import> metrics> print> ()> # using metrics module for accuracy calculation> print> (> 'ACCURACY OF THE MODEL:'> , metrics.accuracy_score(y_test, y_pred))> |
>
>
Sortir:
ACCURACY OF THE MODEL: 0.9238095238095239>
Étape 6 : Prédictions
Python3
# predicting which type of flower it is.> clf.predict([[> 3> ,> 3> ,> 2> ,> 2> ]])> |
>
>
Sortir:
array([0])>
Cela implique que c'est soyeux type de fleur car nous avons obtenu les trois espèces ou classes dans notre ensemble de données : Setosa, Versicolor et Virginie.
Vérifiez les fonctionnalités importantes
Nous allons maintenant découvrir également les fonctionnalités importantes ou sélectionner des fonctionnalités dans l'ensemble de données IRIS en utilisant les lignes de code suivantes.
python3
# using the feature importance variable> import> pandas as pd> feature_imp> => pd.Series(clf.feature_importances_, index> => iris.feature_names).sort_values(ascending> => False> )> feature_imp> |
>
>
Sortir:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Forêts aléatoires chez Python Scikit-Learn la bibliothèque est livrée avec un ensemble de hyperparamètres qui vous permettent d'affiner le comportement du modèle. Comprendre et sélectionner les hyperparamètres appropriés est crucial pour optimiser les performances du modèle.
Paramètres du classificateur de forêt aléatoire
- n_estimateurs : Nombre d'arbres dans la forêt.
- Un plus grand nombre d'arbres conduit généralement à de meilleures performances, mais au détriment du temps de calcul.
- Commencez avec une valeur de 100 et augmentez si nécessaire.
- profondeur max: Profondeur maximale de chaque arbre.
- Des arbres plus profonds peuvent capturer des modèles plus complexes, mais risquent également un surajustement.
- Expérimentez avec des valeurs comprises entre 5 et 15 et envisagez des valeurs inférieures pour des ensembles de données plus petits.
- max_features : Nombre d'entités prises en compte pour le fractionnement sur chaque nœud.
- Une valeur courante est « sqrt » (racine carrée du nombre total de fonctionnalités).
- Ajustez en fonction de la taille de l’ensemble de données et de l’importance des fonctionnalités.
- critère: Fonction utilisée pour mesurer la qualité fractionnée (« gini » ou « entropie »).
- L'impureté Gini est souvent légèrement plus rapide, mais les deux ont généralement des performances similaires.
- min_samples_split : Échantillons minimum requis pour diviser un nœud.
- Des valeurs plus élevées peuvent empêcher le surajustement, mais des valeurs trop élevées peuvent nuire à la complexité du modèle.
- Commencez par 2 et ajustez si nécessaire.
- min_samples_leaf : Les échantillons minimum doivent être présents sur un nœud feuille.
- Similaire à min_samples_split, mais axé sur les nœuds feuilles.
- Commencez par 1 et ajustez si nécessaire.
- amorcer: S'il faut utiliser l'échantillonnage bootstrap lors de la construction d'arbres (Vrai ou Faux).
- Le bootstrapping peut améliorer la variance et la généralisation du modèle, mais peut légèrement augmenter le biais.
Avantages du classificateur de forêt aléatoire
- La nature d'ensemble des forêts aléatoires, combinant plusieurs arbres, les rend moins sujettes au surajustement que les arbres de décision individuels.
- Efficace sur les ensembles de données comportant un grand nombre de fonctionnalités et capable de bien gérer les variables non pertinentes.
- Les forêts aléatoires peuvent fournir des informations sur l'importance des fonctionnalités, aidant ainsi à la sélection des fonctionnalités et à la compréhension de l'ensemble de données.
Inconvénients du classificateur de forêt aléatoire
- Les forêts aléatoires peuvent être coûteuses en termes de calcul et nécessiter plus de ressources en raison de la construction de plusieurs arbres de décision.
- La nature globale rend difficile l’interprétation du raisonnement derrière les prédictions individuelles par rapport à un arbre de décision unique.
- Dans les ensembles de données déséquilibrés, les forêts aléatoires peuvent être biaisées en faveur de la classe majoritaire, ce qui a un impact sur les performances prédictives des classes minoritaires.
Conclusion
En conclusion, Random Forests, avec son ensemble d’arbres de décision, s’impose comme une solution robuste pour diverses tâches d’apprentissage automatique, démontrant sa polyvalence et son efficacité.
Foire aux questions (FAQ)
Q. Qu'est-ce que le classificateur de forêt aléatoire ?
Random Forest Classifier est une méthode d'apprentissage d'ensemble utilisant plusieurs arbres de décision pour les tâches de classification, améliorant ainsi la précision. Il excelle dans la gestion de données complexes, en atténuant le surapprentissage et en fournissant des prédictions robustes avec l'importance des fonctionnalités.
Q. La forêt aléatoire peut-elle être utilisée pour la régression ?
Random Forest peut être utilisé à la fois pour des tâches de régression et de classification, ce qui en fait un algorithme d'apprentissage automatique polyvalent.
Q. Quel est le principe de la forêt aléatoire ?
Random Forest crée plusieurs arbres de décision en utilisant des sous-ensembles aléatoires de l'ensemble de données et combine leurs sorties pour une précision améliorée.
Q. Quelles sont les applications de la forêt aléatoire ?
Les applications réelles incluent :
- Diagnostic médical: Identifier les maladies sur la base des données des patients.
- Finance: Notation de crédit pour l’évaluation des risques liés aux prêts.