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

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

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

bootstrap bool,默认=True

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

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

【问题讨论】:

    标签: machine-learning scikit-learn random-forest


    【解决方案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? 中找到我的部分答案。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2019-03-14
      • 2018-01-18
      • 2016-06-22
      • 2014-09-04
      • 2020-01-16
      • 2017-01-22
      • 2014-04-17
      • 2017-04-28
      相关资源
      最近更新 更多