[机器学习]3种集成学习思想

257 阅读8分钟

1/前言

集成学习: ensemble learning
可谓是机器学习中的大杀器,诸如GBDT,RF,XGBoost这些算法都是用到了集成学习的思想。
这一篇主要就是介绍一下Bagging,Boosting和Stacking这三种集成学习思想的框架。

2/集成学习概念

集成学习:Ensemble Learning
也被称为多学习器系统(multi-classifier system)、基于委员会的学习。
为什么称为委员会的学习?
   这是一个形象的比喻。
   因为我们都知道委员会中有很多的委员,委员会最终做出一个决定,是由所有的委员来决定的。
   
顾名思义,就是将多个个体弱学习器按照某种策略组合起来成为强学习器,通常个体弱学习器是由已有的学习算法从训练数据中学习产生的。
这些弱学习器亦被称为基学习器,产生这些基学习器的学习算法叫作基学习算法。

同质集成:即集成中所有的弱学习器的类型都是一样的   
异质集成:即集成中的个体弱学习器的类型不同。

集成学习思想的框架如下图所示:

image.png

3/集成学习分类

目前,同质集成应用最为广泛(异质集成相对较少),
根据这些个体弱学习器之间是否存在依赖关系可以将其分为两类:
   一类是不存在强依赖关系、可同时生成的并行化方法,如Bagging集成学习思想,如随机森林
   另一类是存在强依赖关系、必须串行生成的序列化方法,如Boosting集成学习思想,如gbdt,xgboost等

根据集成思想,架构可分为三类:
    即Bagging,Boosting和Stacking

4/bagging

基本思想:
    从初始训练数据集中采样出T个含m个训练样本的采样集,
    然后每个采样集去训练出一个弱学习器,
    再将这些弱基学习器进行结合。
    结合的时候可以分为很多的策略:
       <1>比如平等的投票机制,及每个弱学习器的话语权都是平等的。
       <2>不平等的投票机制,及每个弱学习器的话语权不同。
    
bagging集成学习思想的代表模型是随机森林

image.png

5/boosting

基本思想:
   先从初始训练集训练出一个弱学习器,再根据弱学习器的表现对训练样本的分布进行调整,
   使得先前弱学习器做错的训练样本在后续受到更多关注,
   然后基于调整后的样本分布来训练下一个基学习器;
   如此重复进行,直至基学习器数目达到事先指定的值T,最后将这T个基学习器进行加权结合。

典型的代表算法有:gbdt xgboost adaboost等

image.png

6/stacking

stacking这种集成学习思想是由2大部分构成的,及初级学习器,次级学习器。
gbdt和lr就是典型的代表。
这样一说,大家就都明白了吧。

先从初始训练数据集中根据不同的初级学习算法训练出初级学习器,
然后“生成”一个新的数据集用于训练次级学习器。
在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
典型的代表是gbdt+lr

image.png

好的,机器学习中的集成学习主要有三大类:BoostingBaggingStacking。它们通过结合多个“弱学习器”来构建一个更强大、更稳定的“强学习器”,但三者的结合方式和哲学思想有所不同。

下面我为您详细介绍这三大类:


1. Boosting(提升法)

核心思想

  • 顺序生成:基学习器一个个地顺序生成,每一个的学习目标都依赖于它前面的那个学习器。
  • 关注错误:后续的模型会更加关注前面模型预测错误的样本,通过不断修正前一个模型的错误来提升整体性能。
  • 变“弱”为“强”:通过组合多个表现平平(仅比随机猜测好一点)的弱模型,最终形成一个非常强大的模型。

工作流程

  1. 从训练集训练出一个基学习器。
  2. 根据该学习器的表现,增加被错误预测样本的权重,降低正确预测样本的权重。
  3. 用更新过样本权重后的训练集训练下一个基学习器。
  4. 重复步骤2和3,直到生成指定数量的学习器。
  5. 将所有基学习器进行加权结合(通常表现好的学习器权重更高)。

特点

  • 降低偏差:主要目标是减少模型的偏差,因此能够构建非常精确的模型。
  • 容易过拟合,需要仔细调整迭代次数等参数。
  • 对噪声数据和异常值比较敏感。

典型算法

  • AdaBoost:最经典的Boosting算法,通过调整样本权重来聚焦于难分的样本。
  • Gradient Boosting Machine (GBM):不像AdaBoost那样调整样本权重,而是通过使用梯度下降来最小化损失函数,每一轮学习的是之前模型的残差
  • XGBoost:GBM的一个高效、可扩展的优化版本,加入了正则化、并行处理等,是Kaggle等数据科学竞赛中的“大杀器”。
  • LightGBMCatBoost:同样是GBM的高效变种,在训练速度和内存使用上做了大量优化。

2. Bagging(装袋法)

核心思想

  • 并行生成:所有基学习器之间是相互独立的,可以并行训练。
  • 降低方差:通过构建多个相似的训练集,训练多个模型,然后取平均(回归)或投票(分类)来平滑掉单个模型可能存在的过拟合问题,从而降低整体模型的方差。
  • “三个臭皮匠,顶个诸葛亮”:尤其适用于本身复杂度高、容易过拟合的模型(如决策树)。

工作流程

  1. 从原始训练集中使用自助采样法 进行多次采样,生成多个不同的子训练集。自助采样是指每次从原始集中随机抽取一个样本,然后放回,再抽下一个。这意味着同一个样本可能在一个子集中出现多次,而有些样本则从未被抽到。
  2. 在每个子训练集上独立地训练一个基学习器。
  3. 将所有基学习器的预测结果进行平均(回归问题)或投票(分类问题),得到最终结果。

特点

  • 降低方差:主要优势是防止过拟合,提高模型的稳定性和泛化能力。
  • 对不稳定的学习器(如决策树)效果提升显著,对稳定的学习器(如K近邻)帮助不大。
  • 由于可以并行训练,训练效率较高。

典型算法

  • 随机森林:这是Bagging思想最著名、最成功的应用。它不仅在数据样本上进行随机采样,在构建每棵树的分裂节点时,也会从特征的子集中随机选择。这种双重随机性进一步增强了模型的多样性和泛化能力。

3. Stacking(堆叠法)

核心思想

  • 模型融合:使用一个元学习器 来整合多个基学习器 的预测结果。
  • 不同于Boosting和Bagging的直接投票或加权,Stacking是学习一个“如何组合”这些模型的模型。

工作流程

  1. 将训练集分成两部分(或使用交叉验证)。
  2. 在第一部分数据上,训练多个不同的基学习器(第一层模型)。这些模型可以是任何类型,比如决策树、SVM、神经网络等。
  3. 用训练好的基学习器对第二部分数据进行预测。这些预测结果将作为新的特征。
  4. 将这些预测结果(新特征)和第二部分数据的真实标签组合成一个新的训练集。
  5. 在这个新的训练集上,训练一个元学习器(第二层模型)。元学习器学习的是如何根据基学习器的预测来得到最好的最终预测。
  6. 在预测时,先用所有基学习器对新样本进行预测,然后将它们的预测结果作为特征输入给元学习器,由元学习器给出最终预测。

特点

  • 非常强大,通常能获得比任何单一基学习器或简单投票更好的性能。
  • 设计复杂,需要仔细选择基学习器和元学习器,计算成本高。
  • 如果基学习器的预测结果高度相关,那么堆叠的效果可能不会很好。

典型算法

  • Stacking本身就是一个通用框架,没有像“随机森林”那样特定的命名算法。在实践中,人们会自由组合各种模型作为基学习器,并选择一个合适的回归或分类模型(如线性回归、逻辑回归、LightGBM等)作为元学习器。

总结对比

类别基学习器关系核心目标典型代表关键思想
Boosting顺序、依赖降低偏差AdaBoost, XGBoost关注错误,逐个修正
Bagging并行、独立降低方差随机森林民主投票,少数服从多数
Stacking分层、融合提升预测精度自定义模型组合模型炼金术,学习如何组合

希望这个详细的介绍能帮助您理解集成学习的三大流派!