我了解分类和回归树的 bagging 和 boosting 的主要原理。我的疑问是关于超参数的优化,尤其是树的深度
第一个问题:为什么我们应该使用弱学习器来提升(高偏差)而我们必须使用深度树来装袋(高方差)?- 老实说,我不确定第二个,只听过一次,从未见过任何有关它的文档。
第二个问题:为什么以及如何在网格搜索中获得比弱学习器更深的树的梯度提升更好的结果(同样地,弱学习器比随机森林中更深的树)?
我了解分类和回归树的 bagging 和 boosting 的主要原理。我的疑问是关于超参数的优化,尤其是树的深度
第一个问题:为什么我们应该使用弱学习器来提升(高偏差)而我们必须使用深度树来装袋(高方差)?- 老实说,我不确定第二个,只听过一次,从未见过任何有关它的文档。
第二个问题:为什么以及如何在网格搜索中获得比弱学习器更深的树的梯度提升更好的结果(同样地,弱学习器比随机森林中更深的树)?
为什么我们应该使用弱学习器来提升(高偏差)而我们必须使用深度树来装袋(非常高的方差)
显然,打包一堆浅树/弱学习者是没有意义的。许多糟糕预测的平均值仍然很糟糕。对于许多问题,决策树桩(具有单个拆分节点的树)将产生接近随机的结果。结合许多随机预测通常不会产生好的结果。
另一方面,boosting 中树的深度限制了特征之间的交互效果,例如,如果您有 3 个级别,则只能近似二阶效果。对于许多(“大多数”)应用程序来说,低级交互效果是最重要的。哈斯蒂等人。在 ESL (pdf)中表明,超过 6 个级别的树很少显示出比较浅的树有改进。选择比必要更深的树只会在模型中引入不必要的方差!
这也应该部分解释第二个问题。如果数据中存在强且高阶的交互效应,则更深的树可以表现得更好。然而,太深的树会因为增加方差而表现不佳,而没有额外的好处。
问题一:
Bagging(随机森林)只是对决策树的改进;决策树有很多不错的属性,但它存在过度拟合(高方差)的问题,通过采样和构建许多树,我们正在减少方差,对偏差的影响最小。
Boosting 是一种不同的方法,我们从一个具有低方差和高偏差的简单模型开始,然后依次添加新模型以减少偏差。如果我们使用深度树,我们将面临过度拟合的高风险。
问题2:
Gradient Boosting 使用更深的树可以让你适应一个非常复杂的关系;较高的方差较低的偏差。这将减少由于偏差导致的错误。
具有浅树的随机森林将具有较低的方差和较高的偏差,这将减少对过度拟合的错误。具有标准参数的随机森林可能会过度拟合,因此减少树的深度可以提高性能。