Random Forest Classifier : aperçu, comment ça marche, avantages et inconvénients
Publié: 2021-06-18Vous êtes-vous déjà demandé comment Netflix choisit un film à vous recommander ? Ou comment Amazon choisit les produits à afficher dans votre flux ?
Ils utilisent tous des systèmes de recommandation, une technologie qui utilise le classificateur de forêt aléatoire.
Le classificateur de forêt aléatoire fait partie des algorithmes de classification les plus populaires. Aujourd'hui, nous allons découvrir cet algorithme d'apprentissage automatique robuste et voir comment il fonctionne. Vous découvrirez également son implémentation en partageant un didacticiel pas à pas sur l'utilisation du classificateur de forêt aléatoire dans un problème réel.
Nous couvrirons les avantages et les inconvénients du sklearn de forêt aléatoire et bien plus encore dans les points suivants.
Table des matières
Classificateur de forêt aléatoire : une introduction
Le classificateur de forêt aléatoire est un algorithme d'apprentissage supervisé que vous pouvez utiliser pour les problèmes de régression et de classification. Il fait partie des algorithmes d'apprentissage automatique les plus populaires en raison de sa grande flexibilité et de sa facilité de mise en œuvre.
Pourquoi le classificateur de forêt aléatoire s'appelle-t-il la forêt aléatoire ?
C'est parce qu'il se compose de plusieurs arbres de décision, tout comme une forêt a de nombreux arbres. En plus de cela, il utilise le caractère aléatoire pour améliorer sa précision et lutter contre le surajustement, ce qui peut être un énorme problème pour un algorithme aussi sophistiqué. Ces algorithmes créent des arbres de décision basés sur une sélection aléatoire d'échantillons de données et obtiennent des prédictions à partir de chaque arbre. Après cela, ils sélectionnent la meilleure solution viable par le biais de votes.
Il a de nombreuses applications dans notre vie quotidienne telles que les sélecteurs de fonctionnalités, les systèmes de recommandation et les classificateurs d'images. Certaines de ses applications réelles incluent la détection des fraudes, la classification des demandes de prêt et la prédiction des maladies. Il constitue la base de l'algorithme de Boruta, qui sélectionne les caractéristiques vitales d'un ensemble de données.
Comment ça marche?
En supposant que votre jeu de données comporte des fonctionnalités "m", la forêt aléatoire choisira au hasard des fonctionnalités "k" où k < m. Maintenant, l'algorithme calculera le nœud racine parmi les k caractéristiques en choisissant un nœud qui a le gain d'informations le plus élevé.
Après cela, l'algorithme divise le nœud en nœuds enfants et répète ce processus "n" fois. Vous avez maintenant une forêt avec n arbres. Enfin, vous allez effectuer du bootstrap, c'est-à-dire combiner les résultats de tous les arbres de décision présents dans votre forêt.
C'est certainement l'un des algorithmes les plus sophistiqués car il s'appuie sur la fonctionnalité des arbres de décision.
Techniquement, c'est un algorithme d'ensemble. L'algorithme génère les arbres de décision individuels par le biais d'une indication de sélection d'attribut. Chaque arbre repose sur un échantillon aléatoire indépendant. Dans un problème de classification, chaque arbre vote et la classe la plus populaire est le résultat final. D'un autre côté, dans un problème de régression, vous calculerez la moyenne de toutes les sorties de l'arbre et ce serait votre résultat final.
Une implémentation Python de forêt aléatoire est beaucoup plus simple et robuste que les autres algorithmes non linéaires utilisés pour les problèmes de classification.
L'exemple suivant vous aidera à comprendre comment vous utilisez le classificateur de forêt aléatoire dans votre vie de tous les jours :
Exemple
Supposons que vous souhaitiez acheter une nouvelle voiture et que vous demandiez à votre meilleur ami Supratik ses recommandations. Il vous poserait des questions sur vos préférences, votre budget et vos exigences et partagerait également ses expériences passées avec sa voiture pour vous donner une recommandation.
Ici, Supratik utilise la méthode de l'arbre de décision pour vous donner un retour basé sur votre réponse. Après ses suggestions, vous vous sentez risqué à propos de ses conseils, alors vous interrogez Aditya sur ses recommandations et il vous interroge également sur vos préférences et autres exigences.
Supposons que vous itériez ce processus et posiez cette question à 'n' amis. Maintenant, vous avez le choix entre plusieurs voitures. Vous rassemblez tous les votes de vos amis et décidez d'acheter la voiture qui a le plus de votes. Vous avez maintenant utilisé la méthode de la forêt aléatoire pour choisir une voiture à acheter.
Cependant, plus vous répéterez ce processus, plus vous serez enclin au surajustement. En effet, votre ensemble de données dans les arbres de décision deviendra de plus en plus spécifique. La forêt aléatoire combat ce problème en utilisant le caractère aléatoire.
Avantages et inconvénients du classificateur de forêt aléatoire
Chaque algorithme d'apprentissage automatique a ses avantages et ses inconvénients. Voici les avantages et les inconvénients de l'algorithme de classification aléatoire des forêts :
Avantages
- L'algorithme de forêt aléatoire est nettement plus précis que la plupart des classificateurs non linéaires.
- Cet algorithme est également très robuste car il utilise plusieurs arbres de décision pour arriver à son résultat.
- Le classificateur de forêt aléatoire ne fait pas face au problème de surajustement car il prend la moyenne de toutes les prédictions, annulant les biais et résolvant ainsi le problème de surajustement.
- Vous pouvez utiliser cet algorithme pour les problèmes de régression et de classification, ce qui en fait un algorithme très polyvalent.
- Les forêts aléatoires ne laissent pas les valeurs manquantes poser problème. Ils peuvent utiliser des valeurs médianes pour remplacer les variables continues ou calculer la moyenne pondérée par la proximité des valeurs manquantes pour résoudre ce problème.
- Cet algorithme vous offre une importance relative des fonctionnalités qui vous permet de sélectionner facilement les fonctionnalités les plus contributives pour votre classifieur.
Désavantages
- Cet algorithme est sensiblement plus lent que les autres algorithmes de classification car il utilise plusieurs arbres de décision pour faire des prédictions. Lorsqu'un classificateur de forêt aléatoire fait une prédiction, chaque arbre de la forêt doit faire une prédiction pour la même entrée et voter sur celle-ci. Ce processus peut prendre beaucoup de temps.
- En raison de leur lenteur, les classificateurs de forêts aléatoires peuvent ne pas convenir aux prédictions en temps réel.
- Le modèle peut être assez difficile à interpréter par rapport à un arbre de décision car vous pouvez faire une sélection en suivant le chemin de l'arbre. Cependant, cela n'est pas possible dans une forêt aléatoire car elle comporte plusieurs arbres de décision.
Différence entre la forêt aléatoire et les arbres de décision
Un arbre de décision, comme son nom l'indique, est un organigramme en forme d'arbre avec des branches et des nœuds. L'algorithme divise les données en fonction des entités d'entrée à chaque nœud et génère plusieurs branches en sortie. C'est un processus itératif qui augmente le nombre de branches créées (sortie) et la différenciation des données. Ce processus se répète jusqu'à ce qu'un nœud soit créé où presque toutes les données appartiennent à la même classe et plus de branches ou de scissions ne sont pas possibles.
D'autre part, une forêt aléatoire utilise plusieurs arbres de décision, d'où le nom de « forêt ». Il rassemble les votes des différents arbres de décision qu'il a utilisés pour faire la prédiction requise.
Par conséquent, la principale différence entre un classificateur de forêt aléatoire et un arbre de décision est que le premier utilise une collection du second. Voici quelques différences supplémentaires entre les deux :
- Les arbres de décision sont confrontés au problème du surajustement, mais pas les forêts aléatoires. En effet, les classificateurs de forêts aléatoires utilisent des sous-ensembles aléatoires pour contrer ce problème.
- Les arbres de décision sont plus rapides que les forêts aléatoires. Les forêts aléatoires utilisent plusieurs arbres de décision, ce qui nécessite beaucoup de puissance de calcul et donc plus de temps.
- Les arbres de décision sont plus faciles à interpréter que les forêts aléatoires et vous pouvez facilement convertir les premiers selon les règles, mais il est assez difficile de faire la même chose avec les seconds.
Construire l'algorithme (Random Forest Sklearn)
Dans l'exemple suivant, nous avons effectué une implémentation Python de forêt aléatoire à l'aide de la bibliothèque scikit-learn. Vous pouvez suivre les étapes de ce didacticiel pour créer votre propre classificateur de forêt aléatoire.
Alors que 80 % de toute tâche de science des données vous oblige à optimiser les données, ce qui inclut le nettoyage des données, le nettoyage, la correction des valeurs manquantes, et bien plus encore. Cependant, dans cet exemple, nous nous concentrerons uniquement sur l'implémentation de notre algorithme.
Première étape : importer les bibliothèques et charger le jeu de données
Tout d'abord, nous devrons importer les bibliothèques requises et charger notre ensemble de données dans une trame de données.
Contribution:
#Importer les bibliothèques requises
importer des pandas en tant que pd
importer numpy en tant que np
importer matplotlib.pyplot en tant que plt
#Importer le jeu de données
à partir de sklearn.datasets importer load_iris
jeu de données = load_iris ()
Deuxième étape : diviser l'ensemble de données en un ensemble d'apprentissage et un ensemble de test
Après avoir importé les bibliothèques nécessaires et chargé les données, nous devons diviser notre ensemble de données en un ensemble d'apprentissage et un ensemble de test. L'ensemble de formation nous aidera à former le modèle et l'ensemble de test nous aidera à déterminer la précision réelle de notre modèle.
Contribution:
# Ajuster le classificateur à l'ensemble d'entraînement
depuis sklearn.tree importer DecisionTreeClassifier
model = DecisionTreeClassifier(criterion = 'entropy' , splitter = 'best' , random_state = 0)
model.fit(X_train, y_train)
Sortir:
DecisionTreeClassifier(class_weight=Aucun, critère='entropie' , max_depth=Aucun,
max_features=Aucun, max_leaf_nodes=Aucun,
min_impurity_decrease=0.0, min_impurity_split=Aucun,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=Faux, random_state=0,
séparateur='meilleur')
Troisième étape : Créer un classificateur de forêt aléatoire
Maintenant, nous allons créer notre classificateur de forêt aléatoire en utilisant Python et scikit-learn.
Contribution:
#Ajustement du classifieur à l'ensemble d'apprentissage
de sklearn.ensemble importer RandomForestClassifier
modèle = RandomForestClassifier(n_estimators=100, critère-'entropie', random_state = 0)
model.fit(X_train, y_train)
Sortir:
RandomForestClassifier(bootstrap=True, class_weight=None, critère='entropie',
max_depth=Aucun, max_features='auto', max_leaf_nodes=Aucun,
min_impurity_decrease=0.0, min_impurity_split=Aucun,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=Aucun,
oob_score=Faux, random_state=0, verbose=0, warm_start=Faux)
Quatrième étape : prédire les résultats et créer la matrice de confusion
Une fois que nous avons créé notre classificateur, nous pouvons prédire les résultats en l'utilisant sur l'ensemble de test et créer la matrice de confusion et obtenir leur score de précision pour le modèle. Plus le score est élevé, plus notre modèle est précis.
Contribution:
#Prédire les résultats de l'ensemble de tests
y_pred = mode.predict(X_test)
#Créer la matrice de confusion
depuis sklearn.metrics importer confusion_matrix
cm = confusion_matrix(y_test, y_pred)
cm
Sortie :
tableau ([[16, 0, 0]
[0, 17, 1]
[0, 0, 11]])
Entrée :
#Obtenez le score de votre modèle
modèle.score(X_test, y_test)
Sortie :
0.977777777777777
Conclusion
Les classificateurs forestiers aléatoires ont de nombreuses applications. Ils font partie des algorithmes d'apprentissage automatique les plus robustes et sont indispensables à tout professionnel de l'IA et du ML.
Si vous souhaitez en savoir plus sur l'intelligence artificielle, consultez le programme Executive PG de IIIT-B & upGrad en apprentissage automatique et IA, conçu pour les professionnels en activité et offrant plus de 450 heures de formation rigoureuse, plus de 30 études de cas et missions, IIIT -B Statut d'ancien, 5+ projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.
Qu'est-ce que Random Forest dans l'apprentissage automatique ?
Random Forest est une méthode d'apprentissage d'ensemble qui peut donner des prédictions plus précises que la plupart des autres algorithmes d'apprentissage automatique. Il est couramment utilisé dans l'apprentissage par arbre de décision. Une forêt est créée à l'aide d'arbres de décision, chaque arbre de décision est un classificateur puissant en soi. Ces arbres de décision sont utilisés pour créer une forêt de classificateurs forts. Cette forêt de classificateurs forts donne une meilleure prédiction que les arbres de décision ou d'autres algorithmes d'apprentissage automatique.
Quelles sont les différences entre la forêt aléatoire et les arbres de décision ?
Un arbre de décision est un organigramme décrivant le processus d'analyse d'un problème donné. Nous avons tendance à les utiliser le plus souvent pour des problèmes de classification. Un arbre de décision décrit le processus d'élimination nécessaire pour faire une classification. Contrairement à l'arbre de décision, la forêt aléatoire est basée sur un ensemble d'arbres et de nombreuses études démontrent qu'elle est plus puissante que l'arbre de décision en général. De plus, la forêt aléatoire est plus résistante au surajustement et elle est plus stable lorsqu'il manque des données.
Quels sont les inconvénients de la forêt aléatoire ?
Random Forest est un modèle légèrement complexe. Ce n'est pas un modèle de boîte noire et il n'est pas facile d'interpréter les résultats. Il est plus lent que les autres modèles d'apprentissage automatique. Il nécessite un grand nombre de fonctionnalités pour obtenir une bonne précision. Les forêts aléatoires sont un type de méthode d'apprentissage d'ensemble comme d'autres méthodes d'ensemble telles que le bagging, le boosting ou l'empilement. Ces méthodes ont tendance à être instables, ce qui signifie que si les données d'apprentissage changent légèrement, le modèle final peut changer radicalement.