scikit 中的 max_depth 是否相当于决策树中的修剪?

数据挖掘 机器学习 Python scikit-学习 决策树 监督学习
2021-09-29 05:33:40

我正在分析使用决策树创建的分类器。在 scikit 的决策树中有一个称为max_depth的调优参数。这相当于修剪决策树吗?如果没有,我如何使用 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)
2个回答

这相当于修剪决策树吗?

尽管它们有相似的目标(即对模型设置一些限制,使其不会变得非常复杂和过度拟合),max_depth 但并不等同于修剪。修剪通常的工作方式是返回树并替换对叶节点没有帮​​助的分支。

如果没有,我如何使用 scikit 修剪决策树?

您不能通过 scikit-learn(不更改源代码)。
引用自决策树文档修剪等机制(目前不支持)

如果你想对一棵树进行后期修剪,你必须自己动手:
你可以阅读这篇优秀的文章,详细说明如何进行。

现在有了新版本 0.22.1,你可以!它基于最小成本复杂度修剪进行修剪:将选择具有最大成本复杂度且小于 ccp_alpha 的子树。

https://scikit-learn.org/stable/auto_examples/tree/plot_cost_complexity_pruning.html