假设我决定使用整体方法-如果有区别,我们将使用虹膜数据集。在可用的集成技术中,我们将重点介绍并行方法,并从中使用sklearn进行引导聚合。
Sklearn通过使用BaggingClassifier
实现引导程序聚合,(文档告诉我们)RandomForestClassifier
是“适合基本分类器的整体元估计器……”在这些基本分类器中,让我们选择BaggingClassifier
,它本身是“是一个适合多个决策树分类器的元估计器”。
有人告诉我们,引导程序聚合基本上有四种形式:装袋,粘贴,随机子空间和随机补丁。在BaggingClassifier
中,我们通过操纵bootstrap_features
的11个参数中的4个来激活这四种风味,分别是:bootstrap
(对/错),max_features
(对/错),max_samples
(= 1 / <1)和BaggingClassifier
(= 1 / <1)。
在sklearn中,要将RandomForestClassifier
与clf = BaggingClassifier(RandomForestClassifier(parameters), parameters)
一起使用,我们需要:
RandomForestClassifier
证明BaggingClassifier
的17个参数中,有两个与bootstrap
的参数相同:max_features
和bootstrap
。尽管BaggingClassifier
和RandomForestClassifier
的{{1}}是相同的(即,有/无替换采样),但我不确定max_features
。在BaggingClassifier
中,max_features
是“从X绘制到训练的要素数量”,在这种情况下为RandomForestClassifier
。在RandomForestClassifier
中,它是“寻找最佳分割时要考虑的功能数量”。
最后,这使我想到一个问题:我们如何在这两个分类器中协调这些参数,以便可以在随机森林中的每棵树中获得四种引导聚合?我不只是问这样的东西是否可以作为粘贴味:
clf=BaggingClassifier(RandomForestClassifier(bootstrap = False, max_features = 1.0),
bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )
我实际上是在试图真正理解当BaggingClassifier
调用RandomForestClassifier
并将所有这些参数都调整为不同值时发生的情况。
答案 0 :(得分:3)
“随机森林”参数和“合奏分类器”参数之间没有冲突。随机森林具有相似参数(btw,max_features
两者相同,只是用不同的方式表达)的原因是因为随机森林本身是一种Ensemble算法。
因此,您在这里想要实现的是Ensemble of Ensemble分类器,其中每个分类器都有自己的参数。如果我稍微更改您的示例以使其更易于理解,我们将:
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 )
这是它的工作方式:
bootstrap_features = False, max_features = 1.0
提供)并抽取样本的60%(max_samples = 0.6
),而无需替换(bootstrap = False
)max_features = 0.5
)(在我们的示例中为所有特征),并进行引导抽样(替换)整体分类器通过的60%样本。基于此,它将训练决策树并使用新功能和新引导程序n_estimators = 100
重复此过程 Ensemble分类器重复n_estimators = 5
次。
希望这会有所帮助!
TLDR:您传递给RandomForestClassifier
和EnsembleClassifier
的参数可能具有相同的名称并且实际上执行相同的操作,它们在训练过程的不同阶段执行,并且如果您设置{{ 1}},它将不会将此参数值传递给另一个参数。