Estaba analizando el clasificador creado usando un árbol de decisión. Hay un parámetro de ajuste llamado max_depth en el árbol de decisión de scikit. ¿Es esto equivalente a podar un árbol de decisión? Si no, ¿cómo podría podar un árbol de decisión usando 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)
Respuestas:
Aunque tienen objetivos similares (es decir, imponer algunas restricciones al modelo para que no se vuelva muy complejo y se sobreajuste),
max_depth
no es equivalente a la poda. La forma en que generalmente funciona la poda es volver al árbol y reemplazar las ramas que no ayudan con los nodos de las hojas.No puede a través de scikit-learn (sin alterar el código fuente).
Cita tomada de la documentación del Árbol de decisiones : Mecanismos como la poda (actualmente no se admite)
Si desea podar un árbol después, debe hacerlo por su cuenta:
puede leer esta excelente publicación que detalla cómo hacerlo.
fuente
Ahora con la nueva versión 0.22.1, ¡puedes! Realiza una poda basada en una poda mínima de complejidad de costos: se elegirá el subárbol con la mayor complejidad de costos que sea menor que ccp_alpha.
https://scikit-learn.org/stable/auto_examples/tree/plot_cost_complexity_pruning.html
fuente