在 sklearn 中决定 DecisionTreeClassifier 的 max_depth

Posted

技术标签:

【中文标题】在 sklearn 中决定 DecisionTreeClassifier 的 max_depth【英文标题】:Decide max_depth of DecisionTreeClassifier in sklearn 【发布时间】:2018-01-21 20:22:39 【问题描述】:

当我在 skelarn 中使用 GridSearchCV 调整决策树时,我有一个问题。当我决定max_depth 的范围时,我认为所需的max_depth 因情况而异。因为,样本数量或特征影响决定max_depth。那么,确定max_depth 的范围是否有任何适当的标准,还是仅凭直觉决定?

【问题讨论】:

【参考方案1】:

您可以尝试在不同情况下更改 max_depth 并记录性能。

这可能会帮助您获得性能。

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html

您可以通过测试来决定最大深度。 但是,如果您想使 max_depth 适应于树,您可以尝试用足够的数据训练另一种学习算法来找出它。 (或者简单的线性回归)

【讨论】:

【参考方案2】:

通常the recommendation 是从max_depth=3 开始,然后从那里开始工作,Decision Tree (DT) 文档对此进行了更深入的介绍。

具体使用Ensemble Methods(例如RandomForestClassifierDT Regression)也有助于确定max_depth 是否设置为高和/或过拟合。

【讨论】:

对于RandomForestClassifier,参数'max_depth'的默认值为None,这意味着训练将持续到所有叶子都是纯的或直到所有叶子都包含 @kakoli:尝试使用详细选项。 详细选项只给出正在构建的树的数量。

以上是关于在 sklearn 中决定 DecisionTreeClassifier 的 max_depth的主要内容,如果未能解决你的问题,请参考以下文章

sklearn集成学习之VotingClassifier

Sklearn Pipeline 添加新功能

您能否使用 Sklearn 的 Transformer API 持续跟踪列标签?

Sklearn与特征工程

机器学习基础一文带你用sklearn做特征工程

RandomForestClassifiers sklearn apply(X)