DecisionTreeClassifier

DecisionTreeClassifier

从sklearn文档here或我的实验中可以看到,DecisionTreeClassifier的所有树结构都是二叉树。准则是基尼或熵,每个DecisionTreeClassifier节点只能有0或1或2个子节点。

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

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

最佳答案

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

因此,简短的答案是“不”,使用此实现您不能获得2个以上的子代,但这通常并不是真正的限制。

关于machine-learning - 为什么决策树结构只是sklearn DecisionTreeClassifier的二叉树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57626458/

10-11 10:34