首页 > 解决方案 > 如何将更多树添加到 R 中的随机森林

问题描述

是否有一种规范的方法可以将树迭代地添加到随机森林中?假设我正在使用这个caret包,我使用类似的东西

rf_fit <- train(y~.,data=df,method="rf",ntree = N)

对于一些 N,然后我想继续向其中添加树,我该怎么做?

标签: rrandom-forestr-caret

解决方案


您可以创建自己的函数并lapply跨越ntree

data <- iris

fit_tree <- function(ntree){
rf_fit <- train(Species~.,data=iris,method="rf",ntree = ntree)
}

fit <- lapply(seq(100,500,100),fit_tree)

fit是 5 个randomForests模型的列表,每个模型都符合ntrees第一个参数中指定的lapply. 我不知道是否可以将树添加到同一模型中。如果装有n棵树的模型没有达到您想要的准确度,您可以简单地用n +100 棵树重新拟合模型(但请记住,增加树的数量并不一定会提高准确度,事实上,它可能会恶化性能。caret package默认ntrees值为 500,正如 Breiman 在他的原始论文中所建议的那样 (Breiman, 2001)。

编辑

要将树添加到现有randomForests模型中,您可以执行以下操作:

fit_tree <- function(how.many){
rf_fit <- randomForest(Species~.,data=iris)
new_fit <- grow(rf_fit,how.many)
}

p <-lapply(seq(10,100,10),fit_tree)

这里的开始ntree是默认的(即 500),lapply每次迭代添加 10 棵树。使用这种方法对调整mtry参数没有太大帮助,caret因为仅在第一次调用时才能找到最佳参数值randomForest,而不是在更新的模型中找到


推荐阅读