scikit learn python中bootstrap=False的随机林

2024-04-20 05:09:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如果选择bootstrap=False,RandomForestClassifier()会做什么?

根据这个环节的定义

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier

bootstrap : boolean, optional (default=True) Whether bootstrap samples are used when building trees.

问这个问题是因为我想对时间序列使用随机森林方法,所以使用大小(t-n)和预测日期(t+k)的滚动窗口进行训练,并想知道如果我们选择“真”或“假”,会发生什么:

1)如果Bootstrap = True,那么当训练样本可以是任何一天和任何数量的特征。例如,可以从天(t-15)、天(t-19)和天(t-35)中抽取样本,每个样本具有随机选择的特征,然后预测日期的输出(t+1)。

2)如果Bootstrap = False,它将使用从日期(t-n)到时间(t)的所有样本和所有特征进行训练,因此它实际上将遵守日期顺序(意味着它将使用t-35、t-34、t-33。。。直到t-1)。然后预测数据的输出(t+1)。

如果这就是Bootstrap的工作原理,我倾向于使用Bootstrap=False,如果不使用Bootstrap=False,那么忽略连续几天的回报率,从t-39日跳到t-19日,然后跳到t-15日来预测t+1日就有点奇怪了(想想金融系列)。这几天我们会错过所有的信息。

所以。。。这就是Bootstrap的工作原理吗?


Tags: falsetruehttp定义时间特征sklearnscikit
3条回答

看起来你把你的观察结果和你的特征样本混为一谈了。An Introduction to Statistical Learning提供了对随机森林的非常好的介绍。

随机森林的好处来自于它通过对观测结果和特征进行采样而创造出大量的树木。Bootstrap = False告诉它在有或无替换的情况下采样观测值-当它为假时,它仍然应该采样,只是不需要替换。

通过将max_features设置为功能的共享或整数(这是您通常要调优以找到最佳参数的内容),可以告诉它要采样的功能的共享。

当你建造每棵树的时候,你不会每天都拥有它,这是RF值的来源。每棵树都是一个非常糟糕的预测,但是当你把成百上千棵树的预测平均起来,你可能会得到一个好的模型。

根据这个定义[1]

随机森林是一种元估计器,它在数据集的不同子样本上拟合多个决策树分类器,并使用平均来提高预测精度和对拟合的控制。子样本大小始终与原始输入样本大小相同,但如果bootstrap=True(默认),则使用替换方法绘制样本。

注:子样本大小始终相同

但如果bootstrap=True(默认),则使用替换方法绘制样本。

所以 Bootstrap=True(默认):使用替换项绘制示例 Bootstrap=False:不替换地抽取样本

[2]在不更换样本的情况下,每一个样本单元的样本中只有一个可供选择的机会。例如,如果抽取一个简单的随机样本,使得样本中没有任何单位出现超过一次,则抽取样本时不需要替换。

从视觉上你可以想象,从一袋球(样本)中,你选择M

bag of balls

那就是你的1号子集,有M个球。

现在,如果你在为你的子集2取另一个M之前把球放进袋子里,那么你就要“用替换来画”(bootstrap=True)

但是,如果你把子集1放在一边,从你的子集2的袋子里再捡一个M球,那么子集1中的球都不能在子集2(或任何其他子集)中,因为你“不替换地画”(bootstrap=False)

[1]https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

[2]http://methods.sagepub.com/Reference//encyclopedia-of-survey-research-methods/n516.xml

我没什么好评论的。所以我就在这里发表我的意见。scikit学习文档表示,子样本大小始终与原始输入样本大小相同,但如果bootstrap=True(默认值),则使用替换来绘制样本。 所以如果bootstrap=FALSE,我认为每个子样本都和原始输入样本一样。

相关问题 更多 >