如何在模型集成中进行提升?

数据挖掘 集成建模
2022-02-14 06:14:01

Boosting 是一种顺序技术,其中第一个算法在整个数据集上进行训练,随后的算法通过拟合第一个算法的残差来构建,从而为先前模型预测不佳的那些观察赋予更高的权重。例子有 adaboost 和 GBM 等。我的问题是在集成基础学习器时如何执行提升?特别是如果是分类问题如何获得残差?

我知道如何打包基础学习者和堆叠基础学习者。我只是不知道如何提高基础学习者。

谢谢!

2个回答

您可以使用任何基础学习器进行提升(但 Adaboost 需要样本加权)。但是请记住,最初的想法是使用具有强烈偏见的弱学习器,并通过提升来减少这种偏见。

如果是分类问题,通常使用对数损失来计算残差/梯度以进行 boosting。

对于 Python,scikit-learn (AdaBoostClassifier) 中有一个很好的 AdaBoost 包装器,它可以将随机森林作为基础学习器。

延伸到亚历克斯的答案,与装袋相比,促进学习有几个不同的特征,

  1. 它按顺序步骤执行。

  2. 在每一步,它使用残差而不是标签来学习。分类的残差函数可以是对数损失,回归可以是 MSE。

  3. 在每个步骤中,不需要采样,因此可以使用整个数据集

  4. 每一步都是弱学习器,这意味着对于基于树的算法,它使用只有一次分裂的树桩,与装袋相比,每个模型都是完全成长的。

  5. 当从先前步骤的残差中学习时,残差/问题会被放大,以便有助于在此步骤中进行训练。这是使用权重完成的。先前模型所做的改进乘以系数 alpha,通常为 0.01。(详情参考ISL书)

快乐学习!