首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其他参数内的参数-在集成学习中使用带随机林的引导聚合

其他参数内的参数-在集成学习中使用带随机林的引导聚合
EN

Stack Overflow用户
提问于 2019-02-01 21:06:59
回答 1查看 495关注 0票数 2

假设我决定使用集成方法--如果它有区别,我们将使用虹膜数据集。在现有的集成技术中,我们将侧重于并行方法,从这些方法中,我们将使用sklearn进行引导聚合。

Sklearn通过使用BaggingClassifier实现引导聚合,这(文档告诉我们)是“适合基本分类器…的集成元估计器”。在这些基本分类器中,让我们选择RandomForestClassifier,它本身就是“一个适合许多决策树分类器的元估计器”。

引导聚合,我们被告知,本质上有四种形式:包装,粘贴,随机子空间和随机补丁。在BaggingClassifier中,我们通过操纵BaggingClassifier的11个参数中的4个,即bootstrap_features (真/假)、bootstrap (真/假)、max_features (=1/<1)和max_samples (=1/<1)来激活这四种口味。

在sklearn中,要将BaggingClassifierRandomForestClassifier结合使用,我们需要:

代码语言:javascript
复制
clf = BaggingClassifier(RandomForestClassifier(parameters), parameters)

结果表明,在RandomForestClassifier的17个参数中,两个参数与BaggingClassifier的参数相同:bootstrapmax_features。虽然bootstrapBaggingClassifierRandomForestClassifier都是一样的(也就是说,有/没有替换),但对于max_features我不太确定。在BaggingClassifier中,max_features是“从X到训练的特性的数量”,在本例中是RandomForestClassifier。在RandomForestClassifier中,它是“在寻找最佳拆分时需要考虑的功能数量”。

最后,我要问一个问题:我们如何在这两个分类器中协调这些参数,这样我们就可以在随机林中的每棵树中得到四种形式的引导聚合?我不仅仅是问这样的东西是否能起到粘贴的作用:

代码语言:javascript
复制
clf=BaggingClassifier(RandomForestClassifier(bootstrap = False, max_features = 1.0),
   bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )

BaggingClassifier调用RandomForestClassifier时,所有这些参数都调到了不同的值,我真的在努力理解场景背后发生了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-02 00:41:51

随机森林参数与集成分类器参数之间没有冲突。随机森林具有相似的参数(顺便说一句,max_features是相同的,只是用不同的方式表达)的原因是随机森林本身是一种集成算法。

因此,您在这里试图实现的是集成分类器的集合,其中每个分类器都有自己的参数。如果我稍微更改了您的示例,使其更容易理解,我们有:

代码语言:javascript
复制
BaggingClassifier(RandomForestClassifier(n_estimators = 100, bootstrap = True, max_features = 0.5), n_estimators = 5,
   bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )

这就是它的工作方式:

  • 首先,EnsembleClassifier将获取所有特性(这是由bootstrap_features = False, max_features = 1.0提供的),并提取60% (max_samples = 0.6)的样本,而不需要替换(bootstrap = False)。
  • 然后,它将所有特性和60%的示例提供给RandomForest 。
    • 随机森林选择50%的特征没有替换(max_features = 0.5)通过集成在上一步(在我们的情况下,都是特征),并做了一个自举抽样(与替换) 60%的样本通过集成分类器。在此基础上,它通过新的特性和新的引导来训练决策树并重复此过程的n_estimators = 100时间。

这是由集成分类器重复的n_estimators = 5时间。

希望这能有所帮助!

TLDR:您传递给RandomForestClassifierEnsembleClassifier的参数可能具有相同的名称,并且实际上执行相同的操作,它们在培训过程的不同阶段都会这样做,如果您将bootstrap = False设置在一个中,它将不会将这个参数值传递给另一个。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54487151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档