我希望通过绘制OOB错误和树数来获得随机森林的最优树数,并查看错误平台在哪一点。然而,由于我的问题涉及文本挖掘,所以我的训练数据是稀疏矩阵类型的,即在dgCMatrix中。这意味着我不能使用randomForest包来训练我的模型,因为randomForest不支持稀疏矩阵。相反,我必须使用游侠包,但护林员不给OOB错误与树的数目。我尝试过将我的稀疏矩阵转换成9万×5,500维的数据来在randomForest中运行,但是即使是并行执行,它也需要很长的时间,而且我没有这种计算能力。
所以我的问题是:
,
train_matrix <- as.data.frame(as.matrix(train_dtm))
如果可能的话会很感激你的帮助。谢谢!
发布于 2021-05-24 23:25:39
我遇到了一个类似的问题,最后我采取了穷人的方法(这只回答了你的第一个问题):
library(ranger)
# sample data
# install.packages("AmesHousing")
d <- AmesHousing::make_ames()
nt <- seq(1, 501, 10)
oob_mse <- vector("numeric", length(nt))
for(i in 1:length(nt)){
rf <- ranger(Sale_Price ~ ., d, num.trees = nt[i], write.forest = FALSE)
oob_mse[i] <- rf$prediction.error
}
plot(x = nt, y = oob_mse, col = "red", type = "l")我不知道是否有一个“最优”的树数,但是建更多的树会大大降低你的预测速度,特别是在做部分依赖图的时候。这是我这么做的唯一原因。
https://stackoverflow.com/questions/63932923
复制相似问题