【问题标题】:Why the decision tree structure is only binary tree for sklearn DecisionTreeClassifier?为什么决策树结构只是 sklearn DecisionTreeClassifier 的二叉树?
【发布时间】:2016-12-20 06:02:37
【问题描述】:

从sklearn文档here或者我的实验可以看出,DecisionTreeClassifier的所有树形结构都是二叉树。无论是基尼还是熵,每个DecisionTreeClassifier节点只能有0个或1个或2个子节点。

但是从决策树介绍slide(第3页)来看,理论上决策树的每个节点可以有2个以上的子节点。

所以我的问题是为什么sklearn DecisionTreeClassifier的决策树结构只有二叉树(每个DecisionTreeClassifier节点只能有1或2个子节点。)?我们可以得到具有超过 2 个子节点的决策树分类器的树结构吗?

【问题讨论】:

    标签: machine-learning scikit-learn decision-tree


    【解决方案1】:

    这是因为 sklearn 的方法是使用 numerical 特征,而不是 categorical,当你有数值特征时,建立一个很好的分割规则是相对困难的,它可以具有任意数量的阈值(需要产生 2 个以上的孩子)。另一方面,对于分类特征(在提供的幻灯片中使用),另一种可能的选择是拥有尽可能多的子值。两种方法都有其自身的问题(分类方法在您有大量可能的值时几乎无法跟踪)并且数字需要特定的特征编码(分类方法很热门,这有效地意味着您仍然可以表达相同的树,但不是具有“物种”有 3 个孩子 [狗、猫、人类],你将有更深的决策树:[狗,不是狗],[不是狗而是猫,不是狗,不是猫而是人类])。

    所以简短的回答是,你不能通过这个实现实现超过 2 个孩子,但是这通常不是真正的限制。

    【讨论】:

    • 谢谢 lejlot。我不认为经典的 ID3 算法(通过信息增益)可以找到每个树节点的分类阈值。但是sklearn剂量。你知道sklearn可以用哪种算法找到每个树节点的分类阈值吗?
    • @ybdesire 通常最好在这种情况下提出单独的问题,以便其他人在遇到相同问题时可以找到此答案。 Scikit-learn 将 CART 用于其决策树。 ID3 无法处理数字(非分类)特征。
    猜你喜欢
    • 2023-01-11
    • 2013-01-07
    • 2016-05-07
    • 2014-10-01
    • 1970-01-01
    • 2018-06-16
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多