是否可以使用 scikit-learn 指定决策树中的拆分顺序?

Posted

技术标签:

【中文标题】是否可以使用 scikit-learn 指定决策树中的拆分顺序?【英文标题】:Is it possible to specify the order of spliting in decision tree with scikit-learn? 【发布时间】:2015-09-18 01:35:08 【问题描述】:

给定三个列,["A", "B", "C"],我们可以指定拆分的顺序,使其首先拆分为“A”的类别,然后是“B”,然后是其他类别?

根据 DecisionTreeClassifier 上的文档页面,没有这样的选项。有什么办法解决吗?

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html

【问题讨论】:

这是不可能的。树会自动选择在每个节点上能最大程度降低 gini/entropy 标准的特征。 【参考方案1】:

这是不可能的。树将通过分析每个特征的方差并选择提供最大收益的拆分来自动选择特征。

此外,如果您自己选择拆分,您的模型将无法高效运行。

【讨论】:

关于“效率”,取决于数据。如果这些是特征之间的一些依赖关系,那么指定特定的顺序可能会有所帮助。 @Girishkumar,不,它不依赖于数据。你明白算法的重点是找到最大化分裂效率的分裂吗?在机器学习中,基于启发式的确定性规则的应用会导致比基于统计的规则更糟糕的结果。这就是机器学习先驱者称之为统计学习的原因。

以上是关于是否可以使用 scikit-learn 指定决策树中的拆分顺序?的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn决策树算法类库使用小结

scikit-learn 默认使用哪种决策树算法?

scikit-learn 决策树是不是支持无序(“枚举”)多类特征?

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

scikit-learn 决策树节点深度

编辑 scikit-learn 决策树