机器学习中的 bagging 简介
当一组预测变量和响应变量之间的关系是线性时,我们可以使用多元线性回归等方法来对变量之间的关系进行建模。
然而,当关系比较复杂时,我们常常不得不求助于非线性方法。
其中一种方法是 分类和回归树(通常缩写为 CART),它使用一组预测变量来创建预测响应变量值的决策树。
然而,CART 模型的缺点是它们往往会遭受 高方差的影响。也就是说,如果我们将数据集分成两半并将决策树应用于两半,结果可能会非常不同。
我们可以用来减少 CART 模型方差的一种方法称为装袋,有时称为引导聚合。
什么是套袋?
当我们创建单个决策树时,我们仅使用一组训练数据来构建模型。
然而, bagging使用以下方法:
1.从原始数据集中获取b 个引导样本。
- 回想一下,引导样本是来自原始数据集的样本,其中通过替换进行观察。
2.为每个引导样本创建决策树。
3.对每棵树的预测进行平均以获得最终模型。
- 对于回归树,我们取B树预测的平均值。
- 对于分类树,我们采用B树做出的最常见的预测。
Bagging 可以与任何机器学习算法一起使用,但它对于决策树特别有用,因为它们本质上具有高方差,而 bagging 能够显着减少方差,从而减少测试错误。
为了将 bagging 应用于决策树,我们在深度上种植单个树而不对其进行修剪。这导致个体树具有高方差但低偏差。然后,当我们从这些树中获取平均预测时,我们就能够减少方差。
在实践中,通常使用 50 到 500 棵树即可实现最佳性能,但也可以拟合数千棵树来生成最终模型。
请记住,拟合更多的树将需要更多的计算能力,这可能会也可能不会成为问题,具体取决于数据集的大小。
袋外错误估计
事实证明,我们可以在不依赖k 折交叉验证的情况下计算 bagged 模型的测试误差。
原因是每个 bootstrap 样本可以显示包含原始数据集中大约 2/3 的观测值。其余三分之一未用于拟合袋装树的观测值称为袋外 (OOB) 观测值。
我们可以通过从 OOB 观测值的每棵树中获取平均预测来预测原始数据集中第 i 个观测值的值。
我们可以使用这种方法对原始数据集中的所有n 个观测值进行预测,从而计算错误率,这是测试误差的有效估计。
使用这种方法估计测试误差的优点是它比 k 倍交叉验证快得多,特别是当数据集很大时。
了解预测变量的重要性
请记住,决策树的优点之一是它们易于解释和可视化。
当我们使用装袋时,我们不再能够解释或可视化单个树,因为最终的装袋模型是对许多不同树进行平均的结果。我们以牺牲可解释性为代价来获得预测准确性。
然而,我们仍然可以通过计算由于给定预测变量的分布(在所有B树上平均)而导致的 RSS(残差平方和)的总减少量来了解每个预测变量的重要性。值越大,预测变量越重要。
类似地,对于分类模型,我们可以计算由于给定预测变量的分布而导致的总基尼指数减少(在所有B树上取平均值)。值越大,预测变量越重要。
因此,虽然我们无法准确解释最终的整体模型,但我们仍然可以了解每个预测变量在预测响应时的重要性。
超越装袋
bagging 的优点在于,与单个决策树相比,它通常可以提高测试错误率。
缺点是,如果数据集中存在非常强的预测变量,则袋装树集合的预测可能会高度相关。
在这种情况下,大多数或所有袋装树将使用此预测器进行第一次分割,从而产生彼此相似且具有高度相关预测的树。
解决这个问题的一种方法是使用随机森林,它使用与装袋类似的方法,但能够生成装饰树,这通常会降低测试错误率。
您可以在这里阅读随机森林的简单介绍。