为什么决策树结构只是sklearn DecisionTreeClassifier的二叉树?

时间:2016-08-13 09:23:15

标签: machine-learning decision-tree

正如我们从sklearn文档here或我的实验中看到的那样,DecisionTreeClassifier的所有树结构都是二叉树。无论标准是gini还是熵,每个DecisionTreeClassifier节点都只能有0或1或2个子节点。

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

所以我的问题是为什么决策树结构只是二叉树(每个DecisionTreeClassifier节点只能有1个或2个子节点。)sklearn DecisionTreeClassifier?我们可以为DecisionTreeClassifier获取具有2个以上子节点的树结构吗?

1 个答案:

答案 0 :(得分:5)

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

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