如何优化rpart包速度以生成决策树

时间:2019-04-15 16:17:09

标签: r rpart

Rpart已经运行了四天,还没有对我的数据生成决策树。我的数据集的维度是33列乘200,043行(即33个连续变量,由13个独立变量和20个因变量组成)。我在rpart中使用anova方法来生成回归树。数据集是否太大?有没有一种方法可以编写我的代码或程序包,以提高rpart数据集性能的速度?是否有其他软件包可以处理像我这样的大型数据集(假设问题出在数据集的大小上)?

最初,我在16 GB RAM计算机上运行分析,并收到一条错误消息,指示R无法分配大小为2.9 GB的数组/向量。然后,我可以访问功能更强大的计算机,该计算机具有64 GB的RAM,并且已经运行了四天。我尝试调整函数参数/控件(包括minsplit,minbucket和cp)都无济于事。我还没有将我的数据集解析成块进行分析,所以我不愿意这样做,因为这与我要运行的分析类型并不矛盾。

在下面的代码中,dvnames是一个向量,其中包含20个连续的因变量,分别具有200,043个观察值/数据点或值。 ivnames是一个包含13个连续独立变量的表达式。因此,代码循环遍历每个因变量,基于所有自变量的总和依次进行回归,以生成决策树模型的相应列表。

### random forest and classification models
for (y in dvnames){
  form <- as.formula(paste(y, "~", ivnames1))
  CARTtreemodels[[y]] <- rpart(form, data = maindf, method = "anova", 
                               control = rpart.control(minsplit = 10000, minbucket = 10000, cp = 0.01))
  #control = rpart.control(minsplit = 2000, minbucket = 2000, cp = 0.001))
  RFtreemodels[[y]] <- randomForest(form, data = maindf, 
                                    improve = 0.01, doBest = TRUE, importance = TRUE, ntree = 1000)
}

此代码中是否有我可以/应该更改的内容,以使事情进展得更快?这些程序包可以运行得更快还是可以加快过程?还有其他想法吗?

0 个答案:

没有答案