处理rpart

时间:2017-11-22 15:25:41

标签: r decision-tree

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

  

(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

中实际检查了哪些分类变量组合

0 个答案:

没有答案