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 RandomForest(随机森林)模型使用RandomSearchCV获取最优参数及模型效能可视化