[PYTHON] Apprentissage automatique: forêt supervisée - aléatoire

Cible

Comprenez l'algorithme de forêt aléatoire et essayez-le avec scicit-learn.

théorie

La forêt aléatoire est un type d'apprentissage d'ensemble appelé ensachage qui combine plusieurs arbres de décision.

Pas de théorème du déjeuner gratuit

Le théorème du déjeuner non gratuit signifiait à l'origine qu'en optimisation combinée, si l'algorithme de recherche était appliqué à tous les problèmes possibles, les performances moyennes seraient similaires pour tous les algorithmes.

En effet, chaque algorithme a ses propres conditions préalables qui doivent être remplies, et tous les problèmes possibles ne satisfont pas à ces conditions préalables, donc un problème peut bien fonctionner, un autre. Cela montre qu'aucun algorithme n'est meilleur que les autres pour tous les problèmes, car il sera moins performant que les autres algorithmes.

Il est cité pour affirmer qu'il n'y a pas d'apprenant unique qui évolue à partir de cela et donne les meilleurs résultats pour tout problème d'apprentissage automatique.

Ensachage

Le théorème du déjeuner non gratuit mentionné ci-dessus montre qu'aucun apprenant universel n'est idéal pour un problème. Par conséquent, il est naturel de proposer une méthode de combinaison de plusieurs dispositifs d'apprentissage.

La méthode d'apprentissage consistant à prendre la majorité des extrants de plusieurs apprenants et à en faire le résultat final est appelée apprentissage d'ensemble. Les classificateurs individuels utilisés pour l'apprentissage d'ensemble sont appelés classificateurs faibles car ils n'ont besoin que de fonctionner un peu mieux que l'aléatoire.

L'ensachage (Boostrap AGGregatING) est une méthode typique d'apprentissage d'ensemble. Dans l'ensachage, comme le montre la figure ci-dessous, plusieurs classificateurs sont entraînés à l'aide de l'échantillon bootstrap des données d'entraînement, et pour les nouvelles données, la catégorie est sortie par décision majoritaire dans la classification, et la valeur estimée est sortie par la moyenne dans la régression.

108_bagging.png

Le bagging permet aux classificateurs individuels d'être formés indépendamment et en parallèle, mais l'échantillonnage bootstrap permet la duplication, donc l'utilisation d'un arbre de décision comme classificateur faible augmente la corrélation entre les arbres de décision, et ils sont tous similaires. Il est possible que cela devienne un gâchis.

La forêt aléatoire a amélioré ce problème.

Forêt aléatoire

Dans l'apprentissage aléatoire des forêts, lors de l'apprentissage d'un arbre de décision avec un échantillon bootstrap, au lieu d'utiliser toutes les quantités de caractéristiques, un nombre spécifié de quantités de caractéristiques est sélectionné au hasard et l'arbre de détermination est utilisé. Construire.

Dans l'ensachage, l'arbre de décision a été construit à partir de l'échantillon de sangle de démarrage, mais dans la forêt aléatoire, la quantité de caractéristiques utilisée dans l'échantillon de sangle de démarrage est sélectionnée au hasard et l'arbre de décision est construit comme indiqué dans la figure ci-dessous.

108_random_forest.png

En randomisant les caractéristiques utilisées dans chaque échantillon bootstrap de cette manière, chaque arbre de décision devient diversifié et on peut s'attendre à ce qu'il réduise la corrélation entre les arbres de décision, ce qui était un problème lors du bagging.

Dans scikit-learn, l'argument n_estimators peut spécifier le nombre de classificateurs faibles, et l'argument max_features peut spécifier le nombre de fonctionnalités à utiliser. Par défaut, le nombre d'entités utilisées est le nombre de racines carrées des entités.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz

Logiciel

・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Matplotlib 3.3.1 ・ Numpy 1.19.2 ・ Scikit-learn 0.23.2

Programme à exécuter

Le programme implémenté est publié sur GitHub.

random_forest.py


résultat

Classification par forêt aléatoire

Les résultats de l'application d'une forêt aléatoire à l'ensemble de données sur le cancer du sein utilisé jusqu'à présent sont présentés ci-dessous.

Accuracy 92.98%
Precision, Positive predictive value(PPV) 94.03%
Recall, Sensitivity, True positive rate(TPR) 94.03%
Specificity, True negative rate(TNR) 91.49%
Negative predictive value(NPV) 91.49%
F-Score 94.03%

La figure ci-dessous montre les limites discriminantes lors de l'exécution de la multiclassification sur un ensemble de données d'iris.

108_random_forest_classification.png

Régression forestière aléatoire

Pour les données du problème de régression, un nombre aléatoire a été ajouté à l'onde sinusoïdale. Dans la régression, la valeur moyenne est la valeur de sortie finale.

108_random_forest_regression.png

référence

1.11.2. Forests of randomized trees

  1. Leo Breiman. "Random forests", Machine learning 45.1 (2001): pp. 5-32.
  2. Yuzo Hirai. «Première reconnaissance de formes», Morikita Publishing, 2012.

Recommended Posts

Apprentissage automatique: forêt supervisée - aléatoire
[Apprentissage automatique] Comprendre la forêt aléatoire
[Apprentissage automatique] Essayez d'étudier une forêt aléatoire
Apprentissage automatique: supervisé - AdaBoost
Machine Learning: Supervision - Régression linéaire
Machine Learning: Supervisé - Support Vector Machine
Machine learning supervisé (classification / régression)
Machine Learning: Supervisé - Arbre de décision
Forêt aléatoire
Apprentissage automatique
Recherche de semences aléatoires dans l'apprentissage automatique
Apprentissage automatique: analyse discriminante linéaire supervisée
[Apprentissage automatique] Résumons la forêt aléatoire de manière simple à comprendre
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau
Apprentissage supervisé (classification)
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 2
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 3
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Régression logistique d'apprentissage automatique
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
Apprendre avec un enseignant (retour) 1 Bases
Python: apprentissage supervisé (retour)
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Python: apprentissage supervisé (classification)
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Modèle d'apprentissage automatique prenant en compte la maintenabilité
L'apprentissage automatique appris avec Pokemon
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Forêt aléatoire équilibrée en python
Apprentissage automatique dans Delemas (s'entraîner)
Techniques liées à l'apprentissage automatique / à la classification
Bases de l'apprentissage automatique (mémoire)
Python: Apprentissage supervisé: Hyper Paramètres Partie 1
Un débutant en apprentissage automatique a essayé la RBM
J'ai essayé d'utiliser RandomForest
Apprentissage automatique avec Python! Préparation
Arbre de décision et forêt aléatoire
Bloc-notes de ressources d'étude d'apprentissage automatique
Apprentissage automatique ② Résumé Naive Bayes
Utiliser Random Forest avec Python
Apprentissage supervisé 3 hyper paramètres et réglage (2)
Comprendre l'apprentissage automatique ~ régression de crête ~.
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
À propos de la matrice mixte d'apprentissage automatique
Apprendre avec l'enseignant 1 Principes de base de l'apprentissage avec l'enseignant (classification)
Mémo pratique du système d'apprentissage automatique
Démineur d'apprentissage automatique avec PyTorch