如何向 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
时找到,但不会为更新的模型
是否有一种规范的方法可以将树迭代地添加到随机森林中?
假设我正在使用 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
时找到,但不会为更新的模型