如何故意在 scikit-learn 中过度拟合决策树?

Posted

技术标签:

【中文标题】如何故意在 scikit-learn 中过度拟合决策树?【英文标题】:How to Overfit a Decision Tree in scikit-learn on purpose? 【发布时间】:2021-03-07 08:03:33 【问题描述】:

假设我有n 训练样本和二元分类任务。我想训练一个可能深度最小且总节点数最少的决策树,这样n 样本的训练精度为 100%。在最坏的情况下,这意味着我每个样本都有一个叶节点。在 Scikit-Learn 的 DecisionTreeClassifier 的实现 [1] 中是否有一些参数配置可以让我实现这一目标?

[1]https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn-tree-decisiontreeclassifier

【问题讨论】:

max_depth:树的最大深度。如果为 None,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于 min_samples_split 样本。 如果你不设置最大深度,它将把树发展到最大 我认为这不是真的。 max_depth 设置深度上限。但是如果你设置(比如)max_depth = 1000,clf.get_depth() == max_depth 并不总是这样。 哪个更小 :p clf.get_depth() ? 我认为您不了解树木的工作原理。你有一个算法试图将你的数据分成一篮子纯叶子,如果它到达一个点,一切都被分割了,它就会停止。因此,clf.get_depth 不会像你设置的 max_depth 那样大,一旦它生成完整的树就会停止,这可能只使用 6 深度。 【参考方案1】:

回答

通过阅读文档,您会得到答案。

如果您不对max_depth 设置限制,树将继续扩展到最深的叶子。

你也可以在这里查看similar question。

【讨论】:

以上是关于如何故意在 scikit-learn 中过度拟合决策树?的主要内容,如果未能解决你的问题,请参考以下文章

如何故意在打字稿中定义一个“空接口”

在 jQuery 中使用 $.ajax 时,如何故意在加载的文档中抛出错误?

K-Fold 如何防止模型中的过度拟合

使用 Scikit-Learn 在 Python 中绘制多项式回归

如何使用 GridSearchCV 测试回归交叉验证中的过度拟合?

如何修复 Elman 神经网络中的过度拟合?