【发布时间】:2023-04-08 19:39:01
【问题描述】:
我正在使用 sklearn 将决策树应用于数据集
在 Sklearn 中有一个参数可以选择树的深度 - dtree = DecisionTreeClassifier(max_depth=10)。
我的问题是 max_depth 参数如何帮助模型。 高/低 max_depth 如何帮助更准确地预测测试数据?
【问题讨论】:
标签: python scikit-learn decision-tree
我正在使用 sklearn 将决策树应用于数据集
在 Sklearn 中有一个参数可以选择树的深度 - dtree = DecisionTreeClassifier(max_depth=10)。
我的问题是 max_depth 参数如何帮助模型。 高/低 max_depth 如何帮助更准确地预测测试数据?
【问题讨论】:
标签: python scikit-learn decision-tree
max_depth 顾名思义:允许树生长的最大深度。你允许的越深,你的模型就会变得越复杂。
对于训练错误,很容易看出会发生什么。如果你增加max_depth,训练误差总是会下降(或者至少不会上升)。
对于测试错误,它变得不那么明显了。如果你设置max_depth太高,那么决策树可能会简单地过度拟合训练数据而没有捕获我们想要的有用模式;这将导致测试误差增加。但是如果你设置它太低,那就不好了;那么你可能给决策树提供了太少的灵活性来捕捉训练数据中的模式和交互。这也会导致测试误差增加。
在过高和过低的极端之间有一个很好的黄金点。通常,建模者会将max_depth 视为超参数,并使用某种带有交叉验证的网格/随机搜索来为max_depth 找到合适的数字。
【讨论】:
max_depth 以了解未设置的默认值是什么?
max_depth 没有限制,如文档here 中所述。 “树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于 min_samples_split 样本。”
max_depth,因此它应该采用具有最大叶子的值。为了测试拟合,我想分配 max_depth 值,但需要知道默认生成的最大值。这样我就可以使用从最小值到中值到最大值的max_depth 值并测试模型。没有分配值时,有没有办法print这个max_depth?希望我的问题很清楚。