rpart中分类变量的处理

rpart中分类变量的处理,r,decision-tree,R,Decision Tree,我想知道rpart如何处理分类变量。有几篇参考文献表明,对于无序因素,它会查看所有组合。实际上,即使是第6.2节末尾的 (F) 或者是一个有m个级别的分类预测值,全部为2^m−1不同的可能 对裂缝进行了测试 然而,考虑到我在代码方面的经验,我发现很难相信。小插曲显示了一个支持证据,证明 rpart(Reliability ~ ., data=car90) 需要很长很长的时间。然而,在我的例子中,它以秒为单位运行。尽管有一个30级的无序因子变量。 为了进一步说明这个问题,我创建了几个52个级别

我想知道
rpart
如何处理分类变量。有几篇参考文献表明,对于无序因素,它会查看所有组合。实际上,即使是第6.2节末尾的

(F) 或者是一个有m个级别的分类预测值,全部为2^m−1不同的可能 对裂缝进行了测试

然而,考虑到我在代码方面的经验,我发现很难相信。小插曲显示了一个支持证据,证明

rpart(Reliability ~ ., data=car90) 
需要很长很长的时间。然而,在我的例子中,它以秒为单位运行。尽管有一个30级的无序因子变量。 为了进一步说明这个问题,我创建了几个52个级别的变量,这意味着如果探索了所有可能性,则需要检查2^51-1~2.2 10^15个拆分。这段代码大约在一分钟内运行,这证明了所有的组合都没有被检查

NROW = 50000
NVAR = 20

rand_letters = data.frame(replicate(NVAR, as.factor(c(
  letters[sample.int(26, floor(NROW/2), replace = TRUE)],
  LETTERS[sample.int(26, ceiling(NROW/2), replace = TRUE)]))))
rand_letters$target = rbinom(n = NROW, size = 1, prob = 0.1)

system.time({
  tree_letter = rpart(target ~., data = rand_letters, cp = 0.0003)
})
tree_letter
rpart
中实际检查了哪些分类变量组合