模型融合之Boosting

【模型融合】集成学习(boosting, bagging, stacking)原理介绍、python代码实现(sklearn)、分类回归任务实战 浅浅介绍了boost, bagging, stacking 的一些基本原理。内含NLP特征工程分类任务(小说新闻分类),2023美赛春季赛Y题二手帆船价格预测回归任务。 阅读详情

一、Boosting

1.1 Boosting学习思路

对于一个学习问题来说(以分类问题为例),给定训练数据集,求一个弱学习算法要比求一个强学习算法要容易的多。Boosting方法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合弱分类器,得到一个强分类器。Boosting方法在学习过程中通过改变训练数据的权值分布(梯度提升树不会),针对不同的数据分布调用弱学习算法得到一系列弱分类器。

在每一轮学习之前,如何改变训练数据的权值分布?
Adaboost算法的做法是Adaboost算法的做法是提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。

如何将一组弱分类器组合成一个强分类器?
Adaboost算法的做法是加大 分类误差率小 的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

1.2 Boosting四大家族

Boosting并非是一个方法,而是一类方法。这里按照损失函数的不同,将其细分为若干类算法,下表给出了4种不同损失函数对应的Boosting方法:
在这里插入图片描述

二、AdaBoost

2.1 学习目标

学习目标是通过调整样本权重分布使得下一个分类器误差率越小越好;而误分类的样本权重相当于放大了 ( e 2 ∗ 分 类 器 权 重 ) (e^{2*分类器权重}) (e2∗分类器权重)倍,并且证明得到训练误差率呈指数速率下降。

AdaBoost算法最基本的性质是它能在学习过程中不断减少训练误差,即在训练数据集上的分类误差率。

2.2 学习算法

Adaboost算法在分类问题中的主要特点:通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。 AdaBoost-算法描述(伪代码)如下:
在这里插入图片描述

2.3 AdaBoost算法描述说明

  • 步骤(1)假设训练数据集具有均匀(相同)的权值分布,即每个训练样本在基本分类器的学习中作用相同。

  • 步骤(2)AdaBoost反复学习基本分类器,在每一轮 k = 1 , 2 , ⋯ , K k=1,2,⋯,K k=1,2,⋯,K顺序地执行下列操作:

    • (a) 学习基本分类器:使用当前训练集的权值分布 D k D_k Dk​ 加权的训练数据集,学习基本分类器 G k ( x ) G_k(x) Gk​(x)
    • (b) 误差率:计算基本分类器 G k ( x ) G_k(x) Gk​(x)在加权训练数据集上的分类误差率 e k e_k ek​
    • (c )分类器权重:根据分类误差率 e k e_k ek​可以计算基本分类器 G k ( x ) G_k(x) Gk​(x)的系数 α k α_k αk​, α k α_k αk​表示 G k ( x ) G_k(x) Gk​(x)在最终分类器中的重要性
    • (d) 更新训练数据的权值分布,为下一轮做准备
  • 步骤(3)线性组合 f ( x ) f(x) f(x)实现 K K K个基本分类器的加权表决。系数 α k α_k αk​表示了基本分类器 G k ( x ) G_k(x) Gk​(x)的重要性。但所有 α k α_k αk​之和并不为1。 f ( x ) f(x) f(x)的符号决定实例 x x x的类别, f ( x ) f(x) f(x)的绝对值表示分类的精确度。

2.4 算法的特点

  1. 不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器中起不同的作用
  2. 利用基本分类器的线性组合构建最终分类器

2.5 正则化

为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为步长(learning rate)。定义为 ν \nu ν,对于前面的弱学习器的迭代 f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_{k}(x) = f_{k-1}(x) + \alpha_kG_k(x) fk​(x)=fk−1​(x)+αk​Gk​(x)
如果我们加上了正则化项,则有 f k ( x ) = f k − 1 ( x ) + ν α k G k ( x ) f_{k}(x) = f_{k-1}(x) + \nu\alpha_kG_k(x) fk​(x)=fk−1​(x)+ναk​Gk​(x)
ν \nu ν的取值范围为 0 < ν ≤ 1 0\lt\nu \le 1 0<ν≤1。对于同样的训练集学习效果,较小的𝜈意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。

2.6 算法的优缺点

  1. 对异常点敏感。指数损失存在的一个问题是不断增加误分类样本的权重(指数上升,样本权重放大 ( e 2 ∗ 分 类 器 权 重 ) (e^{2*分类器权重}) (e2∗分类器权重))。如果数据样本是异常点(outlier),会极大的干扰后面基本分类器学习效果;
  2. 模型无法用于概率估计
  3. Adaboost作为分类器时,分类精度很高
  4. 不容易发生过拟合

三、提升树(Boosted Decision Tree)与梯度提升树(GBDT)

3.1 提升树

提升树指以分类与回归树(CART)为基本分类器的提升方法,不同问题的提升树学习算法,其主要区别在于损失函数不同:平方损失函数常用于回归问题,用指数损失函数用于分类问题,以及绝对损失函数用于决策问题。

3.1.1 分类

对于二分类问题,提升树算法只需要将AdaBoost算法例子中的基本分类器限制为二叉分类树即可,可以说此时的决策树算法时AdaBoost算法的特殊情况。

3.1.2 回归

对回归问题的提升树算法来说,只需要简单地拟合当前模型的残差。
在这里插入图片描述

3.2 GBDT

GBDT的主要思想就是用负梯度来代替残差。当损失函数为平方损失函数时,负梯度就是残差: L ( y , f ( x ) ) = 1 2 ( y − f ( x ) ) 2 L(y,f(x))=\frac{1}{2}(y-f(x))^2 L(y,f(x))=21​(y−f(x))2,其负梯度就是 y − f ( x ) y-f(x) y−f(x),即为残差;当损失函数不为平方损失时,损失函数的负梯度可以代替残差,称为伪残差。

3.2.1 算法

在这里插入图片描述

对于GBDT分类算法,GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别与拟合类别输出的误差。

为了解决这个问题,主要有两个方法:一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。

3.2.2 正则化

和Adaboost一样,我们也需要对GBDT进行正则化,防止过拟合。GBDT的正则化主要有三种方式。

第一种是和Adaboost类似的正则化项,即步长(learning rate)。

第二种正则化的方式是通过子采样比例(subsample)。取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。

第三种是对于弱学习器即CART回归树进行正则化剪枝。

3.2.3 优缺点

GBDT主要的优点有:

1) 可以灵活处理各种类型的数据,包括连续值和离散值。

2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。

3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

GBDT的主要缺点有:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

 
 
参考:

第06章:深入浅出ML之Boosting家族

梯度提升树原理小结

模型融合方法:Voting/Averaging、Stacking、Boosting和Bagging。 一般来说,通过融合多个不同的模型,可能提升机器学习的性能,这一方法在各种机器学习比赛中广泛应用,比如在kaggle上的otto产品分类挑战赛①中取得冠军和亚军成绩的模型都是融合了1000+模型的“庞然大物”。 常见的集成学习&模型融合方法包括:简单的Voting/Averaging(分别对于分类和回归问题)、Stacking、Boosting和Bagging。 -->Voting/Averaging 在不改变模型的情况下,直接对各个不同的模型预测的结... 阅读详情

相关推荐

【机器学习】决策树及Bagging, Random Forest和Boosting模型融合

前言一晃一个月没写博客了。懒癌又犯了TT。 之前提到过,写博客是为了记录实习中学到的点滴。博主在某家做travelling IT solution的公司实习。公司核心业务还是做Global Distribution System的。我们部门做的是收益系统。我们小组的工作就是模拟运行收益系统。寻找能够提高收益的最佳参数设定。于是产生一些数据。实习的任务就是寻找最优化的参数来提高收益。我把它当做一个回

AmourDeMai的博客 1万+

机器学习——模型融合:Boosting算法

Boosting算法通过组合多个弱学习器来构建一个强学习器,能够提高模型的泛化能力。常见的Boosting方法包括AdaBoost、Gradient Boosting、XGBoost、LightGBM和CatBoost等。Boosting方法在实际应用中取得了很好的效果,但也需要注意训练时间较长和对异常值敏感等缺点。

weixin_39753819的博客 2869

Hinton Neural Network课程笔记10a:融合模型Ensemble, Boosting, Bagging

课程简介Geoffrey Hinton 2012年在coursera上开的网课:Neural Networks for Machine Learning。课程笔记1. 模型融合的原因1.1. bias-variance trade-off当模型过于复杂而数据量不足的时候,就会出现过拟合问题。即学习了很多训练集内部的噪声等内容,在测试集结果不好。通过模型之间取均值可以较好的解决这个问题,尤其是模型预测

silent56_th的博客 2072

模型融合和提升算法详解(bagging和boosting)

1.两者的区别 (1)样本的选择上:Bagging:训练集是在原始数据上进行有放回的随机抽样,在原始数据中选出的各个训练集是相互独立的。Boosting:每一轮的训练集不变,只是训练集当中每一个样本在分类器当中的权重发生变化,且权重是根据上一轮的分类结果进行调整。 (2)样本权重:Bagging:进行均匀抽样,每一个样本的权重相等。Boosting:根据上一轮分类结果的错误率不断调整样本的权重,错...

weixin_43595430的博客 3190

ML 模型融合讲解 (bagging, boosting, stacking, blending, 加权)+面试必考知识点

总结一下构造多样性的方法,模型融合的几种策略和区别,以及几点面试可能会问到的问题。包括训练过程融合 (Bagging、Boosting);训练结果融合(加权、Stacking、Blending)。

weixin_43646592的博客 931

Python 上位机开发

首先,什么是上位机?上位机通常是指可以与下位机(如单片机、传感器等硬件设备)进行通信和交互,实现数据采集、控制指令发送以及数据处理和展示的计算机程序。 Python 作为一种高级编程语言,在开发上位机方面具有诸多优势。它拥有丰富的第三方库,使得开发过程变得相对简单和高效。

weixin_46807151的博客 4302

模型融合Boosting、Bagging、Stacking、Blending等

模型融合Boosting、Bagging、Stacking、Blending等

zephyr_wang的博客 660

从DeepMimic到虚拟偶像:用动作捕捉数据训练AI跳舞的完整流程(附Blender插件配置)

本文详细介绍了如何利用DeepMimic的深度强化学习框架,将动作捕捉数据转化为虚拟偶像或游戏角色的舞蹈动作。从核心的模仿学习理念、PyBullet环境搭建、策略网络与奖励函数设计,到数据处理、训练技巧(如参考状态初始化),最后讲解了如何将训练好的AI模型集成到Blender和Unity等工具中,实现从数据到实时驱动角色的完整流程。

weixin_29054399的博客 502

boost集成模型

boost集成模型 简述: 常用集成树模型有随机森林、gbdt、xgb、lgb;bagging随机森林很简单,随机取特征和样本,不容易过拟合,不做介绍。主要介绍一下gbdt和xgb. cart决策树: 分类树使用基尼系数增益,原理上和id3差不多,本质上还是将概率分布进行了一种转换。 分类二叉树的特性让cart相较于id3而言,不会选择离散值多的特征,但是另外一方面也加大了计算量,id3相当于...

liwenbo_csu的博客 1610

基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论进一步优化建议需求分析电励磁同步电动机

MHD0815的博客 266

YOLO系列算法改进 | Head改进篇 | 融合Detect_LSCD轻量共享卷积检测头 | 轻量化设计破解计算瓶颈,增强复杂场景目标感知能力

YOLO系列算法改进 | Head改进篇 | 融合Detect_LSCD轻量共享卷积检测头 | 轻量化设计破解计算瓶颈,增强复杂场景目标感知能力 (以YOLO26最新目标检测模型为基础,融合Detect_LSCD检测头进行改进)

2502_91881744的博客 703

【模型融合】Bagging,Boosting,Stacking

一、引言 我理解的Kaggle比赛中提高成绩主要有3个地方 特征工程 调参 模型融合 在机器学习训练完模型之后我们要考虑模型的效率问题,常用的模型效率分析手段有: 研究模型学习曲线,判断模型是否过拟合或者欠拟合,并做出相应的调整; 对于模型权重参数进行分析,对于权重绝对值高/低的特征,可以对特征进行更细化的工作,也可以进行特征组合; 进行bad-case分析,对错误的例子分析是否还有什么可以修改挖掘 模型融合:模型融合就是训练多个模型,然后按照一定的方法集成过个模型,应为它容易理解、

xiaohutong1991的专栏 8825

爬虫瑞数5.5案例:欧冶钢材交易官网,带后缀K5nOZLud(面向对象补环境)

瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。由于之前某通信的瑞数已经调整,这里再出一篇文章,瑞数特点以及请求执行的流程已在之前的文章中分析过,这里不再特别讲解;

老衲爱洗头的博客 3043

模型融合-bagging,boosting,stacking

先把主要的算法进行整理,后续会对py结合算法的实践进行整理。第五弹,模型融合目的是为了提高机器学习的效果,其实就是整理几个机器算法进行参考计算后续的训练。三个模型融合思路:1、bagging,训练多个分类器,结果取平均。并列的进行训练,所有的分类器无关并行进行训练。分类:可以用于结果做vote。回归:可以对这些模型结果取平均。2、boosting,从弱学习开始加强,加权训练,这是串联的,也就说后一...

N_Sapientia的博客 1887

Easy系列PLC远程IO模块的安装配置和地址访问(EtherCAT总线)

EtherCAT分布式时钟DC(SOEM源码解析)EtherCAT分布式时钟DC(SOEM源码解析)_soem dc同步-优快云博客文章浏览阅读1.2k次。分布式时钟(DC,Dsitributed Clock)可以使所有 EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。_soem dc同步1200PLC连接分布式IO组态编程应用(ES200SP固件版本不同解决方法)

RXXW_Dor的博客 171

2026.02.04 AI趋势|原生工作流爆发,智能体重构开发范式

2026年2月4日GitHub Trending榜单迎来关键转变——传统工具链项目占比骤降,AI原生工作流相关项目成为绝对主流。本次Top 20榜单中,超70%项目聚焦AI模型的四大核心能力:上下文增强、任务编排、自治执行、知识闭环。值得关注的是,Claude生态(如claude-mem)与OpenAIskills框架形成跨厂商协同,尽管设计理念有差异,但共同推动多模型智能体(Multi-Model Agent)成为新一代软件基础设施,AI开发正式从“单点调用”迈入“系统级编排”时代。

lpfasd123的博客 345

一文学习模型融合!从加权融合到stacking, boosting

Datawhale作者:田杨军,Datawhale优秀学习者摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢...

abcdefg90876的博客 5409

华为OD机试真题2025双机位B卷 Python&JS 实现【朋友圈个数】

给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔

MISAYAONE的博客 562

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

Datawhale作者:田杨军,Datawhale优秀学习者摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢...

Datawhale 6508

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

模型融合 Boosting 方法

模型融合 Boosting 方法

weixin_51524504的博客 262

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

从Kaggle冠军方案看模型融合:Bagging、Boosting与Stacking的选型心法

本文深入解析Kaggle冠军方案中的模型融合技术,重点探讨Bagging、Boosting与Stacking的选型策略。通过泰坦尼克生存预测和房价预测等实战案例,揭示如何根据数据特性和任务目标选择最佳融合方法,提升模型性能。文章还分享了冠军团队的进阶技巧,包括多样性增强和融合权重优化,为机器学习竞赛提供实用指南。

weixin_30279671的博客 341

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

模型融合方法之Bagging与Boosting

Bagging 从原始样本集中有放回抽样,获取训练子集。假设训练集有N个样本,每轮从训练集中有放回的抽取N个训练样本。共进行k轮抽取,得到k个训练子集。(k个训练集之间是相互独立的) 每个训练子集训练一个模型,k个训练集共得到k个模型。 对分类问题:投票;回归问题:取均值 Boosting 使用全部样本训练每个模型; 每轮训练改变样本的权重,减小在上一轮训练正确的样本的权重,增大错误样本的权...

qq_34615112的博客 859

模型融合:bagging、Boosting、Blending、Stacking

Ensemble GenerationEnsemble Learning 是指将多个不同的 Base Model 组合成一个 Ensemble Model 的方法。它可以同时降低最终模型的 Bias 和 Variance(证明可以参考这篇论文,我最近在研究类似的理论,可能之后会写新文章详述),从而在提高分数的同时又降低 Overfitting 的风险。在现在的 Kaggle 比赛中不用 Ensemb

一花一世界 一叶一菩提 1万+

笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting、模型融合

基本内容与分类见上述思维导图。 . .一、模型融合方法 . 概述本文参考:模型融合的【机器学习】模型融合方法概述 概况有五个部分:Voting、Averaging、Bagging 、Boosting、 Stacking(在多个基础模型的预测上训练一个机器学习模型)1、Voting有3个基础模型,那么就采取投票制的方法,投票多者确定为最终的分类。 .2、Averaging对于回归问题,一个简单

素质云笔记 2万+
上一篇: 机器学习笔记五——EM算法与高斯混合模型
下一篇: XGBoost
米法·
博客等级 码龄8年 179粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值