如何向 R 中的随机森林添加更多树

How can I add more trees to a random forest in R

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

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

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

您可以创建自己的函数并 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 模型的列表,每个模型都装有 lapply 的第一个参数中指定的 ntrees。 我不知道是否可以将树添加到同一模型中。如果用 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 棵树。 使用这种方法用 caret 调整 mtry 参数不是很有帮助,因为最好的参数值只会在第一次调用 randomForest 时找到,但不会为更新的模型