将随机森林转变为决策树 - 在R中使用randomForest包

时间:2014-04-29 07:11:23

标签: r random-forest

是否可以生成树木完全相同的决策林?请注意,这是一个实验性问题。据我所知,随机森林有两个参数,导致随机性'与单个决策树相比:

1)在决策树的每个节点处随机抽样的特征数量,

2)用于创建树的多个训练示例。

直观地说,如果我将这两个参数设置为最大值,那么我应该避免“随机性”,因此每个创建的树应该完全相同。因为所有树都完全一样,无论森林中树木的数量或不同的运行(即不同的种子值),我都应该获得相同的结果。

我已经使用R中的randomForest库测试了这个想法。我认为前面提到的两个参数对应于' mtry'和' sampsize'分别。我已经将这些值设置为最大值,但不幸的是仍然存在一些随机性,因为OOB误差估计会根据森林中树木的数量而变化?!

请您帮助我了解如何删除随机决策林中的所有随机性,最好使用R中randomForest库的参数?

1 个答案:

答案 0 :(得分:1)

除了mtry和sampsize之外,randomForest()还有另一个相关的参数:replace。默认情况下,每个树的数据点的采样都是通过替换来完成的。如果要在所有树中使用所有数据点,不仅需要将sampsize设置为数据点数,还要设置replace = FALSE。

这是一个玩具示例,表明您可以获得相同树木的森林:

  

库(随机森林)

     

set.seed(17)

     

x< - matrix(样本(5,50,替换= TRUE),10,5)

     

y< - factor(样本(2,10,替换= TRUE))

     

rf1< - randomForest(x,y,mtry = ncol(x),sampsize = nrow(x),replace = FALSE,ntree = 5)

然后您可以使用getTree(rf1,1)等检查所有树是否相同。