【问题标题】:Is there a way to get the splitting records and attributes for each tree in random forest in R?有没有办法在 R 中获取随机森林中每棵树的分裂记录和属性?
【发布时间】:2017-11-03 19:23:14
【问题描述】:

为了生成随机森林,算法随机分割记录和属性并构建决策树。 例如,如果我使用以下代码:

set.seed(71) 
rf <-randomForest(income~.,data=mydata, ntree=200) 

我将拥有 200 棵树。 我可以使用参数 mtry = 在每次拆分时选择的变量数和 sampsize = 从数据中提取的样本大小,用于增长每个决策树。 我想为 200 棵树中的每一棵树选择 mydata 数据集的行数(记录)以及选择的变量(属性)的名称。我怎样才能找到它?

【问题讨论】:

  • getTree 是一个从randomForest 对象中提取树结构的函数

标签: r tree random-forest


【解决方案1】:

根据您在 mtry/sampsize 中的设置,您可以使用以下代码:

rf = randomForest(Species~.,data=iris,ntree=200,mtry=2,sampsize=30,keep.forest=TRUE,replace=FALSE,keep.inbag=TRUE)

out_vars = varUsed(rf,by.tree=TRUE) # gives the variables used in each tree
apply(out_vars,2,function(x) which(x!=0))

out_case = rf$inbag # gives the cases used in each tree
apply(out_case,2,function(x) which(x!=0))

确保选择 keep.inbag=TRUEreplace=FALSE,有关文档,请参阅 ?randomForest

【讨论】:

  • 非常感谢@timfaber。我对构建树的记录和变量感兴趣,而不是树本身。有没有办法获取构建森林中每棵树的源记录和变量(部分迷你数据集)?
  • 你可以通过查看split var列或查看varUsed(rf,by.tree=TRUE)获取使用的唯一值,不确定唯一记录,让我看看
  • 再次感谢。所以,就我而言,我有 200 棵树。例如,如何获取第一棵树的相关记录和属性,格式如下:tree[1] 基于 mydata 行:5、8、102。和 mydata 属性:att1、att8、att19?对于树[2] 相关的行和属性?
  • 哈,这不是结,但它实际上在文档中。如果选择keep.inbag=TRUE(同时替换为FALSE,因为它只提供独特的样本),您可以获得样本。更新了示例
猜你喜欢
  • 2016-05-08
  • 1970-01-01
  • 2019-10-07
  • 2019-11-16
  • 2013-10-26
  • 2018-05-23
  • 2020-02-28
  • 2014-05-05
  • 2015-04-24
相关资源
最近更新 更多