我了解为什么我可以同时使用max_samples和bootstrap。例如,我可能有“ n”个样本,并且是否使用引导程序将改变单个估计器和整个集合的预测。但是在功能方面应该有一些意义吗?还是依赖估算器?因为我认为估算器是否为树是没有意义的。
#BaggingRegressor
bagging_regressor = BaggingRegressor(oob_score=False, warm_start=False)
bagging_regressor_params = {
'n_estimators' : list(range(10, 3000, 50)),
'max_samples' : np.arange(1e-2, 1+1e-2, 1e-2),
'max_features' : np.arange(1e-2, 1+1e-2, 1e-2),
'bootstrap' : [True, False],
'bootstrap_features' : [True, False],
'base_estimator' : [DecisionTreeRegressor(criterion=criterion,
splitter=splitter, max_depth=max_depth) \
for criterion in ['mse', 'friedman_mse', 'mae'] \
for splitter in ['best', 'random'] \
for max_depth in range(1,10)
]
}
答案 0 :(得分:0)
请注意bootstrap_features
;默认情况下将其设置为False
可能是有原因的。我找不到任何文献或文档解释为什么这样做会有用。因此,请带着一粒盐来回答这个问题。它不是基于权威文献,而是基于我自己的想法。
要在整体中训练单个模型,请随机选择特征子集。引导意味着选择功能并进行替换。这意味着该模型可以获取相同功能的重复项。
LinearDiscriminantAnalysis
发出警告,指出变量是共线的。 就我个人而言,我不认为上述原因非常有用。通常,您可以通过引导样本而不是特征来控制可变性和模型过度拟合。除非您有充分的理由(文学,理论上的考虑)使用它,否则我将离开bootstrap_features=False
。