SciKit-Learn Random Forest子样本大小如何等于原始训练数据大小?

时间:2016-03-06 13:30:03

标签: python scikit-learn random-forest subsampling

在SciKit-Learn Random Forest分类器的文档中,声明

  

子样本大小始终与原始输入样本大小相同,但如果bootstrap = True(默认值),则使用替换绘制样本。

我不理解的是,如果样本大小始终与输入样本大小相同,那么我们如何谈论随机选择。这里没有选择,因为我们在每次训练时使用所有(并且自然相同)的样本。

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:4)

我相信文档的this part会回答您的问题

  

在随机森林中(参见RandomForestClassifier和   RandomForestRegressor类),构建了集合中的每个树   来自用替换(即自举样本)绘制的样本   训练集。 此外,在分割节点期间   树的建设,选择的分裂不再是   所有功能中最好的分开。相反,选择的分割是   功能的随机子集中的最佳分割。后果   这种随机性,森林的偏见通常会略有增加   (关于单个非随机树的偏差)但是,由于   平均,其方差也减小,通常不仅仅是补偿   因为偏见的增加,因此产生了一个整体更好的模型。

理解的关键是"样本绘制替换"。这意味着每个实例可以多次绘制。这反过来意味着列车组中的某些实例存在多次而一些实际上根本不存在(袋外)。对于不同的树木,这些是不同的

答案 1 :(得分:2)

当然不是每棵树都选择了所有样本。默认情况下,每个样本对一个特定树进行采样的概率为1 - ((N-1)/ N)^ N~0.63,采样两次为0.63 ^ 2,采样3次为0.63 ^ 3 ...其中N是训练集的样本大小。

每个bootstrap样本选择与其他bootstrap的平均值足够不同,因此决策树有足够的不同,因此树的平均预测对每个树模型的方差都是稳健的。如果样本量可以增加到训练集大小的5倍,那么每个观察结果可能会在每棵树中出现3-7次,整体集合预测性能会受到影响。

答案 2 :(得分:0)

@communitywiki的答案漏掉了一个问题:“我不明白的是,如果样本大小始终与输入样本大小相同,那么我们将如何谈论随机选择”:它与自举本身的性质。引导程序包括在不同的时间重复相同的值,但仍具有与原始数据相同的样本大小:示例(引导程序/方法的礼节Wiki page):

  • 原始样本:[1,2,3,4,5]
  • 引导程序1:[1,2,4,4,1]
  • 引导程序2:[1,1,3,3,5]

    ,依此类推。

这是随机选择的发生方式,而样本量仍保持不变。