R 如何绘制OOB错误与随机林中的树数

R 如何绘制OOB错误与随机林中的树数,r,random-forest,R,Random Forest,我拟合了一个随机森林模型。我使用了randomForest和ranger软件包。我没有调整森林中树木的数量,我只是保留了默认数量,即500。现在,我想看看这是否足够,也就是说,误差是否达到了稳定期。所以我相信我需要提取单个树,随机抽取100、200、300、400,最后是500棵树,从中取出oob树,计算出100、200的oob误差。。。树木连续生长。然后我可以绘制OOB错误与树数的关系图。我发现randomForest::getTree和ranger::treeInfo返回一个树的data.f

我拟合了一个随机森林模型。我使用了
randomForest
ranger
软件包。我没有调整森林中树木的数量,我只是保留了默认数量,即500。现在,我想看看这是否足够,也就是说,误差是否达到了稳定期。所以我相信我需要提取单个树,随机抽取100、200、300、400,最后是500棵树,从中取出oob树,计算出100、200的oob误差。。。树木连续生长。然后我可以绘制OOB错误与树数的关系图。我发现
randomForest::getTree
ranger::treeInfo
返回一个树的data.frame,但我不知道有什么。而且
ranger::treeInfo
返回的数据帧中有50%的NAs,并且整体输出更难读取。 因此,我的问题是:

  • 如果我已经有一个包含500棵树的随机林,如何绘制OOB错误与林中使用的树数的关系
  • 为什么
    ranger::treeInfo
    有50%的NAs,而实际上只有这些行有预测 下面是一个简单的例子:

    mpg2 <- mpg %>% 
      mutate(is_suv = as.factor(class == 'suv')) %>% 
      select(-class)
    mpg_model <- ranger::ranger(is_suv ~ ., data = mpg2)
    ranger::treeInfo(mpg_model, tree = 100)
    
    mpg2%
    变异(is_suv=as.factor(class=='suv'))%>%
    选择(-class)
    
    mpg_模型我认为您要查找的只是
    绘图(.)
    ,如本例所示:

    library(randomForest)
    
    set.seed(71)
    iris.rf <- randomForest(Species ~ ., data=iris, importance = TRUE, proximity=TRUE)
    # plot the model
    plot(iris.rf)
    # add legend to know which is which
    legend("top", colnames(iris.rf$err.rate), fill=1:ncol(iris.rf$err.rate))
    
    这基本上是这样的描述:


    谢谢!不同的颜色意味着什么?以及如何使用
    ranger
    软件包来实现这一点?图例将指示每种颜色代表什么,并且您只能使用调用
    绘图来绘制
    OOB
    (x=1:nrow(iris.rf$err.rate),y=iris.rf$err.rate[,1],type='l')
    ,如果您查看
    iris.rf$err.rate
    (模型的错误率),至于
    ranger
    ,不幸的是,我不熟悉为每棵树提取OOB的方法。
         nodeID leftChild rightChild splitvarID splitvarName splitval terminal prediction
    1       0         1          2          4  Petal.Width     0.80    FALSE       <NA>
    2       1        NA         NA         NA         <NA>       NA     TRUE     setosa