我目前在R中使用决策树(CART),包 rpart 和拨浪鼓进行分类。
在训练我的CART树之后,我发现一些规则相互冲突。请考虑以下树,红色圆圈表示冲突的规则。
在父节点中,拆分为CHWC.VLV> = 15;如果这是真的你离开了树,如果它是假的,你就在树上。在左边,我们发现子节点的规则是CHWC.VLV< 15.然而,基于父节点中的分裂规则,我不希望树的这一部分中的任何观察值具有值CHWC.VLV< 15。
有人知道这种明显冲突的原因吗?
答案 0 :(得分:2)
这类问题通常来自于在输出CART树时不使用足够的精度数字输出。举个简单的例子,让我们考虑以下数据集:
library(rpart)
mod <- rpart(outcome~CHWC.VLV)
library(rpart.plot)
prp(mod)
我们可以用以下方式训练和绘制我们的CART模型:
CHWC.VLV >= 15
这似乎是一个矛盾,因为根节点的左子树应该具有所有值CHWC.VLV < 15
,但下一个分割是prp(mod, digits=4)
。然而,在绘制更准确的数字时,我们发现这实际上并不矛盾:
{{1}}