决策树 Sklearn - 树的深度和准确性

Posted

技术标签:

【中文标题】决策树 Sklearn - 树的深度和准确性【英文标题】:Decision Tree Sklearn -Depth Of tree and accuracy 【发布时间】:2018-08-23 15:47:42 【问题描述】:

我正在使用 sklearn 将决策树应用于数据集

在 Sklearn 中有一个参数可以选择树的深度 - dtree = DecisionTreeClassifier(max_depth=10)。

我的问题是 max_depth 参数如何帮助模型。 高/低 max_depth 如何帮助更准确地预测测试数据?

【问题讨论】:

【参考方案1】:

max_depth 顾名思义:允许树生长的最大深度。你允许的越深,你的模型就会变得越复杂。

对于训练错误,很容易看出会发生什么。如果你增加max_depth,训练误差总是会下降(或者至少不会上升)。

对于测试错误,它变得不那么明显了。如果你设置max_depth太高,那么决策树可能会简单地过度拟合训练数据而没有捕获我们想要的有用模式;这将导致测试误差增加。但是如果你设置它太低,那就不好了;那么你可能给决策树提供了太少的灵活性来捕捉训练数据中的模式和交互。这也会导致测试误差增加。

在过高和过低的极端之间有一个很好的黄金点。通常,建模者会将max_depth 视为超参数,并使用某种带有交叉验证的网格/随机搜索来为max_depth 找到合适的数字。

【讨论】:

.@CihanCeyhan - 是否可以打印max_depth 以了解未设置的默认值是什么? @ChetanArvindPatil 默认对max_depth 没有限制,如文档here 中所述。 “树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于 min_samples_split 样本。” .@CihanCeyhan - 我阅读了文档。目前对于我的模型,我不提供max_depth,因此它应该采用具有最大叶子的值。为了测试拟合,我想分配 max_depth 值,但需要知道默认生成的最大值。这样我就可以使用从最小值到中值到最大值的max_depth 值并测试模型。没有分配值时,有没有办法print这个max_depth?希望我的问题很清楚。 .@CihanCeyhan ,我遇到了同样的问题。在这里查看答案...***.com/questions/54499114/…

以上是关于决策树 Sklearn - 树的深度和准确性的主要内容,如果未能解决你的问题,请参考以下文章

决策树的深度取决于啥?

sklearn中的交叉验证+决策树

sklearn决策树的BFS遍历

机器学习-------sklearn决策树分析

大数据项目8(sklearn决策树)

详解决策树-决策树的优缺点 & 分类树在合成数集上的表现菜菜的sklearn课堂笔记