首页 > 其他分享 >5.3 集成学习 - Boosting与AdaBoost

5.3 集成学习 - Boosting与AdaBoost

时间:2023-07-12 23:45:14浏览次数:43  
标签:集成 5.3 算法 AdaBoost Boosting sklearn 评估器

1 Boosting方法的基本思想

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

1.1 Boosting PK Bagging

装袋法 Bagging 提升法 Boosting
弱评估器 相互独立,并行构建 相互关联,按顺序依次构建
先建弱分类器的预测效果影响后续模型的建立
建树前的抽样方式 样本有放回抽样
特征无放回抽样
样本有放回抽样
特征无放回抽样
先建弱分类器的预测效果可能影响抽样细节
集成的结果 回归平均
分类众数
每个算法具有自己独特的规则,一般来说:
(1) 表现为某种分数的加权平均
(2) 使用输出函数
目标 降低方差
提高模型整体的稳定性来提升泛化能力
本质是从“平均”这一数学行为中获利
降低偏差
提高模型整体的精确度来提升泛化能力
相信众多弱分类器叠加后可以等同于强学习器
单个评估器容易
过拟合的时候
具有一定的抗过拟合能力 具有一定的抗过拟合能力
单个评估器的效力
比较弱的时候
可能失效 大概率会提升模型表现
代表算法 随机森林 梯度提升树,Adaboost

image
在以随机森林为代表的Bagging算法中,我们一次性建立多个平行独立的弱评估器,并让所有评估器并行运算。在Boosting集成算法当中,我们逐一建立多个弱评估器(基本是决策树),并且下一个弱评估器的建立方式依赖于上一个弱评估器的评估结果,最终综合多个弱评估器的结果进行输出,因此Boosting算法中的弱评估器之间不仅不是相互独立的、反而是强相关的,同时Boosting算法也不依赖于弱分类器之间的独立性来提升结果,这是Boosting与Bagging的一大差别。 如果说Bagging不同算法之间的核心区别在于靠以不同方式实现“独立性”(随机性),那Boosting的不同算法之间的核心区别就在于上一个弱评估器的评估结果具体如何影响下一个弱评估器的建立过程(就是后面学习Boosting算法最大的区别)
与Bagging算法中统一的回归求平均、分类少数服从多数的输出不同,Boosting算法在结果输出方面表现得十分多样。早期的Boosting算法的输出一般是最后一个弱评估器的输出,当代Boosting算法的输出都会考虑整个集成模型中全部的弱评估器。一般来说,每个Boosting算法会其以独特的规则自定义集成输出的具体形式,但对大部分算法而言,集成算法的输出结果往往是关于弱评估器的某种结果的加权平均,其中权重的求解是boosting领域中非常关键的步骤。

1.2 Boosting算法的基本元素与基本流程

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

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

这三大元素将会贯穿所有我们即将学习的boosting算法,我们会发现几乎所有boosting算法的原理都围绕这三大元素构建。在此三大要素基础上,所有boosting算法都遵循以下流程进行建模:


依据上一个弱评估器\(f(x)_{t-1}\)的结果,计算损失函数\(L(x,y)\),

并使用\(L(x,y)\)自适应地影响下一个弱评估器\(f(x)_t\)的构建。
集成模型输出的结果,受到整体所有弱评估器\(f(x)_0\) ~ \(f(x)_T\)的影响。

正如之前所言,Boosting算法之间的不同之处就在于使用不同的方式来影响后续评估器的构建。无论boosting算法表现出复杂或简单的流程,其核心思想一定是围绕上面这个流程不变的。

1.3 sklearn中的boosting算法

在sklearn当sklearn中的boosting算法中,我们可以接触到数个Boosting集成算法,包括Boosting入门算法AdaBoost,性能最稳定、奠定了整个Boosting效果基础的梯度提升树GBDT(Gradient Boosting Decision Tree),以及近几年才逐渐被验证有效的直方提升树(Hist Gradient Boosting Tree)。

在过去5年之间,除了sklearn,研究者们还创造了大量基于GBDT进行改造的提升类算法,这些算法大多需要从第三方库进行调用,例如极限提升树XGBoost(Extreme Gradient Boosting Tree),轻量梯度提升树LightGBM(Light Gradiant Boosting Machine),以及离散提升树CatBoost(Categorial Boosting Tree)。

Boosting算法 集成类
ADB分类 sklearn AdaBoostClassifer
ADB回归 sklearn AdaBoostRegressor
梯度提升树分类 sklearn GradientBoostingClassifier
梯度提升树回归 sklearn GradientBoostingRegressor
直方提升树分类 sklearn HistGraidientBoostingClassifier
直方提升树回归 sklearn HistGraidientBoostingRegressor
极限提升树 第三方库xgboost xgboost.train()
轻量梯度提升树 第三方库lightgbm lightgbm.train()
离散提升树 第三方库catboost catboost.train()

2 AdaBoost

2.1 介绍

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

1、首次实现根据之前弱评估器的结果自适应地影响后续建模过程

2、在Boosting算法中,首次实现考虑全部弱评估器结果的输出方式,就是在之前人们认为树是一颗比一颗好,最好的应该是最后一棵树输出的结果

作为开山算法,AdaBoost的构筑过程非常简单:首先,在全样本上建立一棵决策树,根据该决策树预测的结果和损失函数值,增加被预测错误的样本在数据集中的样本权重,并让加权后的数据集被用于训练下一棵决策树。这个过程相当于有意地加重“难以被分类正确的样本”的权重,同时降低“容易被分类正确的样本”的权重,而将后续要建立的弱评估器的注意力引导到难以被分类正确的样本上。所以越往后的树越容易分类那些那分类的样本,越是会忽略那些容易分类的样本。
image
就是一个样本预测错误的次数越多,他被加权的次数就越多。
在该过程中,上一棵决策树的的结果通过影响样本权重、即影响数据分布来影响下一棵决策树的建立,整个过程是自适应的。当全部弱评估器都被建立后,集成算法的输出

标签:集成,5.3,算法,AdaBoost,Boosting,sklearn,评估器
From: https://www.cnblogs.com/lipu123/p/17548976.html

相关文章

  • Tenable Nessus 10.5.3 (Unix, Linux, Windows) - #1 漏洞评估解决方案
    TenableNessus10.5.3(Unix,Linux,Windows)-#1漏洞评估解决方案发布Nessus试用版自动化安装程序,支持macOSVentura、RHEL9和Ubuntu22.04请访问原文链接:https://sysin.org/blog/nessus-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNessus漏洞评......
  • 不忘初心 Windows10 22H2 19045.3155 x64 无更新 纯净 深度精简 2023.7.9
    注意此版不能更新补丁,支持人脸和指纹,此为深度精简版体积小、精简的比较多,适合软件不多的朋友使用,可以安装商店、以及其他UWP程序,可以登录微软账号。如有第三方软件打不开,请自行安装资源包里的微软常用运行库,为了保证稳定初心的系统全部都是离线精简和优化,非二次封装。系统纯净、流......
  • 最完美WIN10_Pro_22H2.19045.3155软件选装纯净版VIP50.7
    【系统简介】=============================================================1.本次更新母盘来自UUP_WIN10_PRO_22H2.19045.3155。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为19045.3155。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo......
  • Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|附代码
    要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化?有25个变量:ID: 每个客户的IDLIMIT_BAL: 金额SEX: 性别(1=男,2=女)4.教育程......
  • 简单易学的机器学习算法——AdaBoost
    是符号函数。具体过程可见下图所示:(图片来自参考文件1)三、AdaBoost算法流程  上述为AdaBoost的基本原理,下面给出AdaBoost算法的流程:(来自参考文献2)四、实际的例子  AdaBoost算法是一种具有很高精度的分类器,其实AdaBoost算法提供的是一种框架,在这种框架......
  • [渗透测试]—5.3 网络渗透测试技术和工具
    在本章节中,我们将学习一些常用的网络渗透测试技术和工具,如Wireshark、Ettercap等。我们会尽量将内容讲解得详细、通俗易懂,并提供尽可能多的实例。5.1WiresharkWireshark是一款免费的开源数据包分析器,可以实时或离线捕获、分析和解码网络数据包。Wireshark可以帮助我们识别网络......
  • CH583,CH582,CH581 国产蓝牙芯片RISC-V内核BLE 5.3无线MCU
    概述CH583是集成BLE无线通讯的32位RISC微控制器。片上集成2Mbps低功耗蓝牙BLE通讯模块、2个全速USB主机和设备控制器及收发器、2个SPI、4个串口、ADC、触摸按键检测模块、RTC等丰富的外设资源。CH583相比CH582多了SP11主机,支持最低1.7V电源电压。CH581基于CH582简化,去掉了-......
  • TensorFlow05.3 神经网络-FashionMNIST实战
    一.数据的加载:(x,y),(x_test,y_test)=datasets.fashion_mnist.load_data()print(x.shape,y.shape)二.数据的处理defpreprocess(x,y):x=tf.cast(x,dtype=tf.float32)/255.#归一化y=tf.cast(y,dtype=tf.int32)returnx,y batchsz=128db......
  • TensorFlow05.3 神经网络反向传播算法-多层感知机梯度(理论知识)
    首先这个是链式法则:如果扩展到多层感知机的话:我们在学这个的时候首先知道一个东西:所以这个整体的步骤就是:1.2.3.......
  • TensorFlow05.3 神经网络反向传播算法-链式法则
    1BasicRule2Productrule3QuotientRule4Chainrule(链式法则)在这个神经网络中:......