J'analysais le classificateur créé à l'aide d'un arbre de décision. Il y a un paramètre de réglage appelé max_depth dans l'arbre de décision de scikit. Est-ce l'équivalent de l'élagage d'un arbre de décision? Sinon, comment pourrais-je tailler un arbre de décision à l'aide de scikit?
dt_ap = tree.DecisionTreeClassifier(random_state=1, max_depth=13)
boosted_dt = AdaBoostClassifier(dt_ap, random_state=1)
boosted_dt.fit(X_train, Y_train)
Réponses:
Bien qu'ils aient des objectifs similaires (c'est-à-dire placer certaines restrictions sur le modèle afin qu'il ne devienne pas très complexe et trop adapté), ce
max_depth
n'est pas équivalent à l'élagage. La façon dont l'élagage fonctionne généralement est de remonter dans l'arbre et de remplacer les branches qui n'aident pas les nœuds foliaires.Vous ne pouvez pas utiliser scikit-learn (sans modifier le code source).
Citation tirée de la documentation de l'Arbre de décision : mécanismes tels que l'élagage (non pris en charge actuellement)
Si vous souhaitez post-élaguer un arbre, vous devez le faire vous-même:
vous pouvez lire cet excellent article détaillant comment le faire.
la source
Maintenant, avec la nouvelle version 0.22.1, vous pouvez! Il effectue un élagage basé sur un élagage à complexité de coût minimale: le sous-arbre avec la plus grande complexité de coût qui est plus petite que ccp_alpha sera choisi.
https://scikit-learn.org/stable/auto_examples/tree/plot_cost_complexity_pruning.html
la source