R包“tree”:如何控制最大树深度?

时间:2015-07-21 21:12:57

标签: r classification

R包“tree”将最大树深限制为31.如果函数tree应用于大型数据集,则很容易达到此限制:

> library("tree")
> library("ElemStatLearn")
> data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
> t <- tree(digit~image, data, split="gini")
Error in tree(digit ~ image, data, split = "gini") : 
  maximum depth reached
Calls: source -> withVisible -> eval -> eval -> tree -> .C

有没有办法告诉tree在达到最大树深时停止种树,而不是中止错误? (换句话说:maxdepth的{​​{1}}参数是否等效?)

1 个答案:

答案 0 :(得分:2)

我同意@jochen的建议,即rpart软件包似乎比tree软件包更精致。但是,tree程序包似乎在某些方面做得更好。 例如,为tree对象绘制决策边界比为rpart对象绘制决策边界要容易得多(尤其是使用ggplot)。 关于Vincent的问题,通过使用tree选项来控制tree.control(min.cut=)树的深度,我取得了一些有限的成功,如下代码所示。通过更改终端节点中元素的最小数量,您可以对深度进行有限的控制。

library("ElemStatLearn")
 library("tree")
 data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
 t <- tree(digit~image, data, split="gini", control=tree.control(1866496, mincut = 1000))
 library(maptree)
 draw.tree(t)