“拆分属性”可以在决策树中出现多次吗?

Posted

技术标签:

【中文标题】“拆分属性”可以在决策树中出现多次吗?【英文标题】:can "splitting attribute" appear many times in decision tree? 【发布时间】:2013-11-28 09:03:37 【问题描述】:

只想澄清一件事:同一个属性可以多次出现在决策树中,只要它们在不同的“分支”中,对吧?

【问题讨论】:

这个问题似乎是题外话,因为它是关于机器学习的。 @sashkello 有 3404 个问题标记为machine-learning... @Anony-Mousse 所有这些都应该与编程密切相关(好吧,很多老问题可能不会)。这个问题应该去stats.stackexchange.com,因为里面没有编程方面的内容。 【参考方案1】:

出于显而易见的原因,在同一个分支中使用相同的决策是没有意义的。

在不同的分支上,这个推理显然不成立。

考虑经典的 XOR(x,y) 问题。您可以使用两层决策树来解决它,但您需要在两个分支中拆分相同的属性。

If x is true:
    If y is true:  return false
    If y is false: return true
If x is false:
    If y is true:  return true
    If y is false: return false

另一个示例如下:假设您的数据在 x=[0;1] 中为正,而在外部为负。一棵好树应该是这样的:

If x > 1:      return negative
If x <= 1:
    If x >= 0: return positive
    If x < 0:  return negative

这不是同一个决定,所以使用 x 两次是有意义的。

【讨论】:

【参考方案2】:

    一般来说,你可以做任何你想做的事,只要你保持“树”的结构。它们可以通过多种方式进行定制,虽然可能存在冗余,但不会破坏其有效性。

    二进制属性不应在同一个早午餐中出现两次,那将是多余的。但是,连续属性可以多次出现在同一个分支中。

【讨论】:

【参考方案3】:

如果属性是分类属性,则不能多次作为拆分属性使用。如果属性是数值的,原则上可以多次使用,但是标准的决策树算法(C4.5算法)不是这样实现的。

以下描述基于属性都是分类的假设。

从解释的角度来看,决策树是可解释的,一个被标记的实例如何通过从根到叶使用的属性(以及属性的值)来解释。因此,在树的一个分支中有重复的属性是没有意义的。

从算法的角度来看,一旦选择了一个属性作为拆分属性,该属性将没有机会根据属性选择标准再次选择,例如信息增益将为 0。这是因为所有实例一旦被属性过滤后将具有相同的属性值。再次使用该属性并不能带来更多的分类信息。

【讨论】:

以上是关于“拆分属性”可以在决策树中出现多次吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 scikit-learn 决策树中提取决策规则?

如何从 scikit-learn 决策树中提取决策规则?

如何从 scikit-learn 决策树中提取决策规则?

如何从 scikit-learn 决策树中提取决策规则?

在决策树中查找到决策边界的距离

Weka:如何在 J48 决策树中实现代理拆分?