CART 决策树中的冲突拆分
Posted
技术标签:
【中文标题】CART 决策树中的冲突拆分【英文标题】:Conflicting splits in CART decision tree 【发布时间】:2016-05-05 04:14:37 【问题描述】:我目前在 R 中使用决策树 (CART) 和包 rpart 和 rattle 进行分类。
在训练我的 CART 树后,我发现一些规则相互冲突。考虑下面的树,其中的冲突规则用红色圆圈表示。
在父节点中拆分为 CHWC.VLV >= 15;如果这是真的,你在树的左边,如果它是假的,你在树的右边。在左边,我们发现子节点的规则是 CHWC.VLV
有人知道这种明显冲突的原因吗?
【问题讨论】:
回归不好的预测方面之一是 NA。另一方面,树方法在这些方面没有困难。你确定这不是那些分裂之一吗? (除了推测之外,需要数据来做任何事情。) 也感谢42的贡献。 【参考方案1】:这类问题通常是因为在输出 CART 树时没有使用足够的精度来输出。作为一个简单的例子,让我们考虑以下数据集:
CHWC.VLV <- seq(14, 16, length.out=10000)
outcome <- ifelse(CHWC.VLV >= 14.97, ifelse(CHWC.VLV <= 15.34, 1, 2), 3)
我们可以使用以下方法训练和绘制 CART 模型:
library(rpart)
mod <- rpart(outcome~CHWC.VLV)
library(rpart.plot)
prp(mod)
这似乎是矛盾的,因为根节点的左子树应该具有所有值CHWC.VLV >= 15
,但下一个拆分是CHWC.VLV < 15
。然而,在以更高的准确度进行绘图时,我们发现这实际上并不矛盾:
prp(mod, digits=4)
【讨论】:
以上是关于CART 决策树中的冲突拆分的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 scikit-learn 指定决策树中的拆分顺序?