如何故意在 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 时,如何故意在加载的文档中抛出错误?
使用 Scikit-Learn 在 Python 中绘制多项式回归