sklearn随机森林中的引导参数

Posted

技术标签:

【中文标题】sklearn随机森林中的引导参数【英文标题】:bootstrap parameter in sklearn random forest 【发布时间】:2022-01-18 06:33:42 【问题描述】:

有人能解释一下随机森林模型参数“bootstrap”的直觉吗?

查看 scikit-learn 页面时https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

bootstrap bool,默认=True

构建树时是否使用引导样本。如果为假,则 整个数据集用于构建每棵树。

我更困惑,因为我认为随机森林已经是一种使用引导程序的技术,为什么还要定义这个参数?

【问题讨论】:

【参考方案1】:

粗略地说,bootstrap sampling 只是通过替换抽样,这自然会导致原始数据集的样本被遗漏,而其他样本不止一次出现。

我认为随机森林已经是一种使用引导程序的技术

您是对的,Breiman 建议的 original RF algorithm 确实默认包含引导采样(这实际上是从 Bagging 继承而来,在 RF 中使用)。

尽管如此,像 scikit-learn 之类的实现,可以理解地更喜欢保留选项以使用引导采样(即替换采样),而是使用整个数据集;来自docs:

如果bootstrap=True(默认),子样本大小由max_samples参数控制,否则整个数据集用于构建每棵树。

standard R implementation 中的情况类似(这里相应的参数称为replace,和这里一样,它也默认设置为TRUE)。

因此,除了(通常理想的)设计选择(为从业者留出空间和灵活性以便能够选择或不选择自举抽样)之外,这里并没有什么奇怪的。在 RF 早期,自举采样提供了额外的可能性来计算袋外 (OOB) 错误而不使用交叉验证,这个想法(我认为......)最终失宠,并“释放”了从业者可以尝试省略引导采样选项,如果这会带来更好的性能。

您还可以在Why is Random Forest with a single tree much better than a Decision Tree classifier? 中找到我的部分答案。

【讨论】:

以上是关于sklearn随机森林中的引导参数的主要内容,如果未能解决你的问题,请参考以下文章

sklearn库学习----随机森林(RandomForestClassifier,RandomForestRegressor)

随机森林原理与Sklearn参数详解

sklearn RandomForest(随机森林)模型使用RandomSearchCV获取最优参数及模型效能可视化

如何处理 sklearn 随机森林中的类不平衡。我应该使用样本权重还是类权重参数

sklearn中的随机森林

随机森林中的超参数调整