集成学习(二)Boosting

前面学习了:集成学习(一)Bagging-CSDN博客

在集成学习的“弱分类器集成”领域,除了降低方差来降低整体泛化误差的装袋法Bagging,还有专注于降低整体偏差来降低泛化误差的提升法Boosting。相比起操作简单、大道至简的Bagging算法,Boosting算法在操作和原理上的难度都更大,但由于专注于偏差降低,Boosting算法们在模型效果方面的突出表现制霸整个弱分类器集成的领域。当代知名的Boosting算法当中,Xgboost,LightGBM与Catboost都是机器学习领域最强大的强学习器,Boosting毫无疑问是当代机器学习领域最具统治力的算法领域。

一、Boosting PK Bagging

装袋法Bagging提升法Boosting
弱评估器相互独立,并行构建

相互关联,按顺序依次构建

先建立弱分类器的预测效果影响后续模型的建立

建树前的抽样方式

样本有放回抽取

特征无放回抽取

样本有放回抽取

特征无放回抽取

先建立弱分类的预测效果可能影响抽样细节

集成的结果

回归平均

分类众数

每个算法具有自己独特的规则,一般来说:
(1)表现为某种分数的加权平均

(2)使用输出函数

目标

降低方差

提高模型整体的稳定性来提升泛化能力

本质是从“平均”这一数学行为中获利

降低偏差

提高模型整体的精确度来提升泛化能力

相信众多弱分类器叠加后可以等同于强学习器

单个评估器容易过拟合的时候具有一定的抗过拟合能力具有一定的抗过拟合能力
单个评估器的效力比较弱的时候可能失效大概率会提升模型表现
代表算法随机深林梯度提升树,Adaboost

在以随机森林为代表的Bagging算法中,我们一次性建立多个平行独立的弱评估器,并让所有评估器并行运算。在Boosting集成算法当中,我们逐一建立多个弱评估器(基本是决策树),并且下一个弱评估器的建立方式依赖于上一个弱评估器的评估结果,最终综合多个弱评估器的结果进行输出,因此Boosting算法中的弱评估器之间不仅不是相互独立的、反而是强相关的,同时Boosting算法也不依赖于弱分类器之间的独立性来提升结果,这是Boosting与Bagging的一大差别。如果说Bagging不同算法之间的核心区别在于靠以不同方式实现“独立性”(随机性),那Boosting的不同算法之间的核心区别就在于上一个弱评估器的评估结果具体如何影响下一个弱评估器的建立过程

与Bagging算法中统一的回归求平均、分类少数服从多数的输出不同,Boosting算法在结果输出方面表现得十分多样。早期的Boosting算法的输出一般是最后一个弱评估器的输出,当代Boosting算法的输出都会考虑整个集成模型中全部的弱评估器。一般来说,每个Boosting算法会其以独特的规则自定义集成输出的具体形式,但对大部分算法而言,集成算法的输出结果往往是关于弱评估器的某种结果的加权平均其中权重的求解是boosting领域中非常关键的步骤。

二、Boosting算法的基本元素与基本流程

基于上面所明确的“降低偏差”、“逐一建树”、以及“以独特规则输出结果”的三大特色,我们可以确立任意boosting算法的三大基本元素以及boosting算法自适应建模的基本流程:

  • 损失函数 L(x,y) :用以衡量模型预测结果与真实结果的差异
  • 弱评估器 f(x) :(一般为)决策树,不同的boosting算法使用不同的建树过程
  • 综合集成结果 H(x) :即集成算法具体如何输出集成结果

几乎所有boosting算法的原理都围绕这三大元素构建。在此三大要素基础上,所有boosting算法都遵循以下流程进行建模:

  1. 依据上一弱评估器的结果 f_{t-1}(x) ,计算损失函数 L(x,y)
  2. 使用L(x,y)自适应的影响下一个弱评估器 f_{t}(x)
  3. 集成模型输出的结果,受到整体所有弱评估器 f_{0}(x)——f_{t}(x)的影响。

AdaBoost(Adaptive Boosting,自适应提升法)是当代boosting领域的开山鼻祖,它虽然不是首个实践boosting思想算法,却是首个成功将boosting思想发扬光大的算法。它的主要贡献在于实现了两个变化:

1、首次实现根据之前弱评估器的结果自适应地影响后续建模过程;
2、在Boosting算法中,首次实现考虑全部弱评估器结果的输出方式。

作为开山算法,AdaBoost的构筑过程非常简单:首先,在全样本上建立一棵决策树,根据该决策树预测的结果和损失函数值,增加被预测错误的样本在数据集中的样本权重,并让加权后的数据集被用于训练下一棵决策树。这个过程相当于有意地加重“难以被分类正确的样本”的权重,同时降低“容易被分类正确的样本”的权重,而将后续要建立的弱评估器的注意力引导到难以被分类正确的样本上。

三、GBDT

梯度提升树(Gradient Boosting Decision Tree,GBDT)是提升法中的代表性算法,它即是当代强力的XGBoost、LGBM等算法的基石,也是工业界应用最多、在实际场景中表现最稳定的机器学习算法之一。

但与AdaBoost不同的是,GBDT在整体建树过程中做出了以下几个关键的改变:

  • 弱评估器

GBDT的弱评估器输出类型不再与整体集成算法输出类型一致。对于AdaBoost或随机森林算法来说,当集成算法执行的是回归任务时,弱评估器也是回归器,当集成算法执行分类任务时,弱评估器也是分类器。但对于GBDT而言,无论GBDT整体在执行回归/分类/排序任务,弱评估器一定是回归器。GBDT通过sigmoid或softmax函数输出具体的分类结果,但实际弱评估器一定是回归器。

  • 损失函数L(x,y)

在GBDT当中,损失函数范围不再局限于固定或单一的某个损失函数,而从数学原理上推广到了任意可微的函数。因此GBDT算法中可选的损失函数非常多,GBDT实际计算的数学过程也与损失函数的表达式无关。

  • 拟合残差

GBDT依然自适应调整弱评估器的构建,但却不像AdaBoost一样通过调整数据分布来间接影响后续弱评估器。相对的,GBDT通过修改后续弱评估器的拟合目标来直接影响后续弱评估器的结构。

具体地来说,在AdaBoost当中,每次建立弱评估器之前需要修改样本权重,且用于建立弱评估器的是样本 X 以及对应的 y ,在GBDT当中,我们不修改样本权重,但每次用于建立弱评估器的是样本 X 以及当下集成输出 H(x_{i})与真实标签 y 的差异 (y-H(x_{i}))这个差异在数学上被称之为残差(Residual),因此GBDT不修改样本权重,而是通过拟合残差来影响后续弱评估器结构。

  • 抽样思想

GBDT加入了随机森林中随机抽样的思想,在每次建树之前,允许对样本和特征进行抽样来增大弱评估器之间的独立性(也因此可以有袋外数据集)。虽然Boosting算法不会大规模地依赖于类似于Bagging的方式来降低方差,但由于Boosting算法的输出结果是弱评估器结果的加权求和,因此Boosting原则上也可以获得由“平均”带来的小方差红利。当弱评估器表现不太稳定时,采用与随机森林相似的方式可以进一步增加Boosting算法的稳定性。

接下来学习: 集成学习(三)GBDT 梯度提升树-CSDN博客

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值