L'arbre de décision est une méthode pour définir les conditions les unes après les autres pour les données et les classer en fonction de chaque condition. Dans la figure ci-dessous, j'essaie de décider de faire de la planche à voile ou non. Donc, d'abord, nous catégorisons par la force du vent, puis nous catégorisons selon qu'il fait ensoleillé ou non.
Ce modèle à droite s'appelle l'arbre de décision. Dans l'arbre de décision, comme le montre la figure de gauche, il est classé en effectuant une classification linéaire plusieurs fois.
Extracted by 'Introduction to Machine Learning', Udacity
Au fait, il semble que l'arbre de décision ait une régression et une classification, mais cette fois je parlerai de classification.
python
DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None,
min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features=None, random_state=None, max_leaf_nodes=None,
min_impurity_split=1e-07, class_weight=None, presort=False)
Il a beaucoup de contenu. Seuls les principaux seront expliqués ci-dessous.
Si min_samples_split = 2 et que la valeur de la destination de la branche est égale ou supérieure à 2, la branche continuera. En regardant la figure ci-dessous, la zone entourée par le cercle bleu clair a plus de 2 échantillons, donc la ramification continue. Cependant, en fonction du nombre d'échantillons, il existe une forte possibilité de surentraînement, un ajustement est donc nécessaire. Extracted from 'Introduction to Machine Learning', Udacity
Spécifiez comment fractionner les données avec «gini» ou «entropie».
«gini»: plus la pureté (coefficient de gini) de la kème destination de classement est faible, mieux c'est. Utilisez'entropy ': gain d'informations pour trouver les conditions les plus efficaces. Il semble qu'il n'y ait pas beaucoup de différence, mais les détails sont ici et ici. blog / sklearn-gini-vs-entropy-critères)
Cela détermine et limite la profondeur maximale de l'arbre de décision pour éviter le surapprentissage.
python
from IPython.display import Image
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
The image and the code are extracted from 'Sklearn document'
Alors que d'autres algorithmes nécessitent la normalisation des données, la création de variables fictives, etc., Decision Tree nécessite peu de traitement sur site pour gérer les données catégorielles et numériques. De plus, comme il peut être visualisé comme ci-dessus, vous pouvez voir qu'il s'agit d'un algorithme très facile à comprendre.
--Mauvais point
Facile à surapprendre. Les données sont classées par des lignes droites verticales et horizontales, donc si les données ne peuvent pas être séparées par une ligne de démarcation parallèle à l'axe, elles ne peuvent pas être correctement classées.
Ce qui précède est le contour de l'arbre de décision pour autant que je puisse comprendre. Nous le mettrons à jour quotidiennement, donc si vous avez quelque chose à ajouter ou à corriger, nous vous serions reconnaissants de bien vouloir commenter.
Recommended Posts