[PYTHON] [Apprentissage automatique] Étudions l'arbre de décision

Arbre de décision

L'arbre de décision est un algorithme utilisé pour ** l'apprentissage supervisé **. En branchant les données données comme un arbre, nous faisons des prédictions et résumons les données. Un modèle d'apprentissage qui peut être utilisé à la fois pour la régression et la classification.

La figure ci-dessous montre l'arbre de décision pour classer les données en «chiens», «personnes», «oiseaux» et «moustiques». Dans chaque branche, les données sont classées en utilisant le montant des caractéristiques. La partie qui devient la dernière feuille détermine le résultat de la classification.

Screenshot 2019-11-24 at 21.29.44.png

Ici, comme point à considérer lors de l'extension de chaque branche

  1. ** Quel montant de fonctionnalité utiliser et combien **
  2. ** À quelle profondeur voulez-vous faire pousser l'arbre **

Devient important.

Tout d'abord, le critère ** Gain d'information ** est utilisé comme critère pour juger 1.

Gain d'information

Pour faire simple, le gain d'information est une valeur qui indique ** dans quelle mesure le nœud enfant a pu classer les données par rapport au nœud parent **. Alternativement, c'est une valeur qui indique ** à quel point l'écart type est réduit à chaque nœud **. Une valeur appelée ** Impure ** est utilisée pour calculer le montant de ce gain d'information. Il existe plusieurs types d'impureté, mais cette fois, nous présenterons les plus représentatifs ** Gini ** et ** Entropy **. Gini Gini est exprimé par la formule suivante.

G = 1 - \sum_{n = 1}^{classes}P(i|t)^2

Vous pouvez voir qu'à chaque nœud, plus la probabilité que les données soient classées dans une classe est élevée, plus Gini sera proche de 0. S'il n'y a qu'une seule classe, Gini sera 0. Inversement, Gini se rapproche de 1 lorsque tous les échantillons appartiennent à des classes différentes. De plus, chaque nœud calcule le ** Gain d'information (IG) ** à partir de Gini.

IG = G(parent) - \sum_{children}\frac{N_j}{N}G(child_j)

Ici, la différence entre la moyenne pondérée du Gini de la branche parente et du Gini de la branche enfant (le rapport du nombre de données contenues dans chaque classe) est acquise en tant que gain d'information.

Entropy L'entropie est exprimée par la formule suivante.

E =  - \sum_{i = 1}^{N}P(i|t)*log(P(i|t))

Où P(i|t)Est 0.Plus il est proche de 5(Je ne sais pas si c'est 1 ou 0; je ne peux pas classer)Vous pouvez voir que plus l'entropie est élevée. Au contraire, P(i|t)Est 0か1の時、エントロピーは0となります。

IG = E(parent) - \sum_{children}\frac{N_j}{N}E(child_j)

Comme précédemment, la différence entre la moyenne pondérée de l'entropie d'intersection de la branche parente et l'entropie d'intersection de la branche enfant est acquise en tant que gain d'information.

Une méthode de division avec un gain d'information important est sélectionnée pour chaque nœud.

Utilisation correcte de Gini et Entropy

Gigi est bon pour les problèmes de régression et Entropy est bon pour les problèmes de classification.

Profondeur de l'arbre

Plus l'arborescence ** de l'arbre de décision est profonde, plus le modèle ** correspondant aux données d'apprentissage est sélectionné. En fait, lorsque le dernier nœud enfant a 1 données, toutes les données peuvent être parfaitement classées. Cependant, cela ** surchargerait ** les données de l'échantillon, rendant le modèle dénué de sens. Par conséquent, lors de la création d'un modèle d'apprentissage, il est nécessaire de limiter la profondeur de l'arbre. Dans skitlearn, la profondeur de l'arbre est définie par un paramètre.

Arbre de décision Scikit-learn

Revenir

from sklearn.tree import DecisionTreeRegressor  

clf = DecisionTreeRegressor(criterion="entropy", max_depth=3)
clf = clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)

Classification

from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier(criterion="entropy", max_depth=3)
clf = clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)

Paramètres de l'arbre de décision

Paramètres- Aperçu option Défaut
criterion Critères de partage "gini", "entropy" "gini"
splitter Stratégie de sélection fractionnée "best", "random" "best"
max_depth La profondeur la plus profonde de l'arbre int None
min_samples_split Taille minimale de l'échantillon du nœud post-fractionné(S'il est petit, il a tendance à être surappris.) int(Le nombre d'échantillons)/float(Rapport à tous les échantillons) 2
min_samples_leaf feuille(Dernier nœud)Taille minimale de l'échantillon requise pour(S'il est petit, il a tendance à être surappris.) int/float 2
max_features Nombre d'entités utilisées pour la division(Plus grand a tendance à surapprendre) int/float, auto, log2 None
class_weight Poids de la classe "balanced", none none
presort Pré-tri des données(La vitesse de calcul change en fonction de la taille des données) bool False
min_impurity_decrease Limiter l'impureté et contrôler l'allongement des nœuds float 0.

Avantages et inconvénients des arbres de décision

Avantages

Désavantages

—— Sensible aux valeurs aberrantes. ――Même avec une petite dispersion, le résultat changera considérablement. ――Le calcul est compliqué et le temps de calcul augmente.

Recommended Posts

[Apprentissage automatique] Étudions l'arbre de décision
[Apprentissage automatique] Essayez d'étudier une forêt aléatoire
[Apprentissage automatique] Prédiction FX à l'aide de l'arbre de décision
Étudier l'apprentissage automatique ~ matplotlib ~
Essayez le machine learning à la légère avec Kaggle
Machine Learning: Supervisé - Arbre de décision
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Les débutants en apprentissage automatique essaient la régression linéaire
[Apprentissage automatique] Comprendre les arbres de décision de scikit-learn et des mathématiques
Apprentissage automatique ③ Résumé de l'arbre de décision
Apprentissage automatique
SVM essayant l'apprentissage automatique avec scikit-learn
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Essayez de prédire la demande de puissance par l'apprentissage automatique
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Essayez de prédire le taux de change (FX) avec un apprentissage automatique non approfondi
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique - Édition Pandas -
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
[Apprentissage automatique] Démarrez Spark avec iPython Notebook et essayez MLlib
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (2) - Mise en œuvre
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (1) - Théorie
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
Essayez l'apprentissage en profondeur avec TensorFlow
Une introduction à l'apprentissage automatique
Techniques liées à l'apprentissage automatique / à la classification
Machine Learning: Supervision - Régression linéaire
Bases de l'apprentissage automatique (mémoire)
Un débutant en apprentissage automatique a essayé la RBM
[Apprentissage automatique] Comprendre la forêt aléatoire
Apprentissage automatique avec Python! Préparation
Essayez le Deep Learning avec FPGA
Apprentissage par renforcement 5 Essayez de programmer CartPole?
Bloc-notes de ressources d'étude d'apprentissage automatique
Apprentissage automatique ② Résumé Naive Bayes
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