当前位置: 代码迷 >> 综合 >> 一文看懂集成学习 Ensemble methods(Bagging, Boosting)
  详细解决方案

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

热度:49   发布时间:2023-10-10 13:08:49.0

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

集成学习

(截图来自《西瓜书》)
一文看懂集成学习 Ensemble methods(Bagging, Boosting)
一文看懂集成学习 Ensemble methods(Bagging, Boosting)

Bagging

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

  • 从原始样本集中随机采样。每轮从原始样本集中有放回的选取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(bootstrap的过程,由于是有放回抽样,所以k个训练集之间相互独立
  • 每次使用一份训练集训练一个模型,k 个训练集共得到 k 个基模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
  • 利用这k个基模型对测试集进行预测,将k个预测结果进行聚合。(aggregating的过程)
    • 分类问题:将上步得到的k个模型采用投票的方式得到分类结果
    • 回归问题:计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

(11条消息) 机器学习之Ensemble(Bagging、AdaBoost、GBDT、Stacking)_Cyril_KI的博客-CSDN博客
【实战】5个集成学习最常用的方法 - 产品经理的人工智能学习库 (easyai.tech)

随机森林

  • Sklearn Random Forest Classifiers in Python - DataCamp

随机森林(Random Forest,简称RF) 是Bagging的一个扩展变体.
RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择.

具体来说:

  • 传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择-一个 最优属性;
  • 而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择-一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分.
  • 这里的参数k控制了随机性的引入程度:若令k:=d,则基决策树的构建与传统决策树相同; 若令k:=1,则是随机选择-一个属性用于划分;-般情况下,推荐值k:=log2d。

一文看懂集成学习 Ensemble methods(Bagging, Boosting)
特点:简单、易实现、开销小,被誉为代表集成学习技术的方法
一文看懂集成学习 Ensemble methods(Bagging, Boosting)

随机森林的收敛性与Bagging相似:

  • 随机森林的起始性能往往相对较差,特别是在集成中只包含-一个基学习器时;(因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低)
  • 然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
  • 值得一提的是,随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集。

Boosting

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

Boosting的核心思想是将多个弱分类器组装成一个强分类器

关于Boosting的两个核心问题:

1)在每一轮如何改变训练数据的权值或概率分布?

通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

2)通过什么方式来组合弱分类器?

通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。

而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

一文看懂集成学习 Ensemble methods(Bagging, Boosting)

Boosting算法特点:

1、序贯式集成方法(Sequential Ensemble)。每轮迭代生成的基模型,主要提升前一代基模型表现不好的地方。

2、从偏差方差分解[[正则化与偏差-方差分解 bias-variance]]的角度看,主要关注降低偏差,即不断迭代弱分类器,从而降低 Bias。因此,适用于 Low Variance & High Bias 的模型。能基于泛化性能相当弱的学习器构建出很强的集成。

基于Boosting算法典型代表

如AdaBoost、GBDT、XGBoost等。

Adaboost

一文看懂集成学习 Ensemble methods(Bagging, Boosting)
一文看懂集成学习 Ensemble methods(Bagging, Boosting)

【五分钟机器学习】Adaboost:前人栽树后人乘凉_哔哩哔哩_bilibili
3个关于AdaBoost的概念_哔哩哔哩_bilibili
机器学习之数学之旅-从零推导adaboost与3D可视化-特征选择-集体智能-集成学习-boosting_哔哩哔哩_bilibili


Bagging,Boosting二者之间的区别

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:
Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

总结

这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

  1. Bagging + 决策树 = 随机森林
  2. AdaBoost + 决策树 = 提升树
  3. Gradient Boosting + 决策树 = GBDT
  相关解决方案