Eu estava analisando o classificador criado usando uma árvore de decisão. Há um parâmetro de ajuste chamado max_depth na árvore de decisão do scikit . Isso é equivalente a podar uma árvore de decisão? Caso contrário, como podar uma árvore de decisão usando o 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)
machine-learning
python
scikit-learn
decision-trees
supervised-learning
Suhail Gupta
fonte
fonte
Respostas:
Embora eles tenham objetivos semelhantes (ou seja, impondo algumas restrições ao modelo para que ele não fique muito complexo e super ajuste), isso
max_depth
não é equivalente à poda. A maneira como a poda geralmente funciona é que ela volta pela árvore e substitui os galhos que não ajudam nos nós das folhas.Você não pode através do scikit-learn (sem alterar o código fonte).
Citação retirada da documentação da Árvore de Decisão : Mecanismos como remoção (atualmente não suportada)
Se você quiser pós-podar uma árvore, precisará fazê-lo por conta própria:
Você pode ler esta excelente postagem detalhando como fazê-lo.
fonte
Agora com a nova versão 0.22.1, você pode! Ele faz a remoção com base na remoção mínima da complexidade de custo: a subárvore com a maior complexidade de custo menor que ccp_alpha será escolhida.
https://scikit-learn.org/stable/auto_examples/tree/plot_cost_complexity_pruning.html
fonte