【机器学习】(算法优化二)提升算法之:AdaBoost与随机梯度

文章目录

  • 一、 AdaBoost:自适应提升算法
    • 1、AdaBoost数学原理详解
      • 1.1、 目标函数
      • 1.2、 样本权重更新的逻辑
      • 1.3、 模型权重计算的含义
      • 1.4、 AdaBoost的核心思想
    • 2、为什么AdaBoost如此有效?
  • 二、 随机梯度提升算法:梯度优化下更精细的优化
    • 1、随机梯度提升算法:残差驱动的梯度优化
      • 1.1、核心目标函数
      • 1.2、残差驱动的训练过程
        • 残差的本质:模型错误的量化
        • 步骤1:计算负梯度(残差)
        • 步骤2:模型对残差进行优化
        • 步骤3:更新预测
      • 1.3、为什么用残差而不是直接预测?
        • 避免重复学习
        • 逐步精细化
      • 1.4、随机性的双重作用
        • 样本随机性
        • 特征随机性
      • 1.5、随机梯度提升的核心思想
    • 2、为什么随机梯度提升如此强大?
  • 三、 提升算法与装袋算法的对比
    • 1、训练方式的差异
    • 2、数学原理的差异

提升算法是集成学习中的另一重要分支,与装袋算法不同,提升算法通过顺序训练和权重调整,实现了与装袋算法不同的集成策略。AdaBoost通过自适应权重调整关注难分类样本,随机梯度提升通过梯度优化实现精确的损失函数最小化。

一、 AdaBoost:自适应提升算法

AdaBoost的核心思想是:通过调整样本权重,让后续模型专注于之前模型预测错误的样本。这种方法确保了每个基模型都能为集成贡献独特的价值。

1、AdaBoost数学原理详解

1.1、 目标函数

F(x)=∑t=1Tαtht(x)F(x) = \sum_{t=1}^{T} \alpha_t h_t(x)F(x)=t=1Tαtht(x)

这个公式表示:最终的预测是所有基模型预测的加权和

具体解释

  • F(x)F(x)F(x) 是最终的集成预测
  • ht(x)h_t(x)ht(x) 是第 ttt 个基模型(比如决策树)的预测
  • αt\alpha_tαt 是第 ttt 个模型的权重(重要性)
  • TTT 是基模型的总数量

举个例子
假设有3个基模型,预测结果分别是:

  • 模型1:h1(x)=1h_1(x) = 1h1(x)=1,权重 α1=0.5\alpha_1 = 0.5α1=0.5
  • 模型2:h2(x)=−1h_2(x) = -1h2(x)=1,权重 α2=0.3\alpha_2 = 0.3α2=0.3
  • 模型3:h3(x)=1h_3(x) = 1h3(x)=1,权重 α3=0.2\alpha_3 = 0.2α3=0.2

那么最终预测为:
F(x)=0.5×1+0.3×(−1)+0.2×1=0.4F(x) = 0.5 \times 1 + 0.3 \times (-1) + 0.2 \times 1 = 0.4F(x)=0.5×1+0.3×(1)+0.2×1=0.4

 

1.2、 样本权重更新的逻辑

Dt+1(i)=Dt(i)exp⁡(−αtyiht(xi))ZtD_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(x_i))}{Z_t}Dt+1(i)=ZtDt(i)exp(αtyiht(xi))

这个公式表示:根据当前模型的预测结果调整样本权重

具体解释

  • Dt(i)D_t(i)Dt(i) 是第 ttt 轮第 iii 个样本的权重
  • yiy_iyi 是第 iii 个样本的真实标签(1或-1)
  • ht(xi)h_t(x_i)ht(xi) 是第 ttt 个模型对第 iii 个样本的预测
  • αt\alpha_tαt 是第 ttt 个模型的权重
  • ZtZ_tZt 是归一化因子,确保权重和为1

关键理解

  • 如果 yiht(xi)=1y_i h_t(x_i) = 1yiht(xi)=1(预测正确),则 exp⁡(−αt)<1\exp(-\alpha_t) < 1exp(αt)<1,权重减小
  • 如果 yiht(xi)=−1y_i h_t(x_i) = -1yiht(xi)=1(预测错误),则 exp⁡(αt)>1\exp(\alpha_t) > 1exp(αt)>1,权重增大

举个例子
假设第1个模型权重 α1=0.5\alpha_1 = 0.5α1=0.5,对某个样本的预测:

  • 如果预测正确:yih1(xi)=1y_i h_1(x_i) = 1yih1(xi)=1,权重变为原来的 exp⁡(−0.5)≈0.61\exp(-0.5) \approx 0.61exp(0.5)0.61
  • 如果预测错误:yih1(xi)=−1y_i h_1(x_i) = -1yih1(xi)=1,权重变为原来的 exp⁡(0.5)≈1.65\exp(0.5) \approx 1.65exp(0.5)1.65

 

1.3、 模型权重计算的含义

αt=12ln⁡(1−ϵtϵt)\alpha_t = \frac{1}{2} \ln(\frac{1 - \epsilon_t}{\epsilon_t})αt=21ln(ϵt1ϵt)

这个公式表示:根据模型的错误率计算其权重

具体解释

  • ϵt\epsilon_tϵt 是第 ttt 个模型的加权错误率
  • αt\alpha_tαt 是第 ttt 个模型的权重

关键理解

  • 错误率越低,权重越大
  • 错误率越高,权重越小
  • 当错误率 = 0.5时,权重 = 0(没有贡献)

举个例子

  • 如果错误率 ϵt=0.1\epsilon_t = 0.1ϵt=0.1(很好),则 αt=12ln⁡(0.90.1)=1.1\alpha_t = \frac{1}{2} \ln(\frac{0.9}{0.1}) = 1.1αt=21ln(0.10.9)=1.1(高权重)
  • 如果错误率 ϵt=0.4\epsilon_t = 0.4ϵt=0.4(一般),则 αt=12ln⁡(0.60.4)=0.2\alpha_t = \frac{1}{2} \ln(\frac{0.6}{0.4}) = 0.2αt=21ln(0.40.6)=0.2(中等权重)
  • 如果错误率 ϵt=0.5\epsilon_t = 0.5ϵt=0.5(随机),则 αt=0\alpha_t = 0αt=0(无贡献)

 

1.4、 AdaBoost的核心思想

设计思路

  1. 样本权重更新:让后续模型更关注之前预测错误的样本
  2. 模型权重计算:让表现好的模型在最终预测中有更大话语权
  3. 顺序训练:每个新模型都试图纠正之前模型的错误

整体流程

  1. 训练第1个模型,计算错误率和权重
  2. 根据预测结果调整样本权重(错误样本权重增大)
  3. 训练第2个模型(更关注权重大的样本)
  4. 重复这个过程,直到训练完所有模型
  5. 最终预测是所有模型预测的加权和

这就是AdaBoost如何通过"让每个模型专注于之前模型预测错误的样本"来实现强大集成效果的原理。

 

2、为什么AdaBoost如此有效?

AdaBoost的有效性可以从多个角度理解。从统计学角度看,AdaBoost通过调整样本权重,让每个基模型专注不同的数据子集,从而实现了比简单平均更强的集成效果。

从机器学习角度看,AdaBoost的自适应特性使得它能够自动识别和关注难分类的样本,这种机制确保了模型在复杂数据上的强大表现。

 

二、 随机梯度提升算法:梯度优化下更精细的优化

随机梯度提升算法的核心思想是:通过梯度下降的方式顺序训练基模型,每个新模型都试图纠正之前模型的残差。这种方法实现了比AdaBoost更精细的损失函数优化。

1、随机梯度提升算法:残差驱动的梯度优化

1.1、核心目标函数

随机梯度提升算法的目标函数为:

F(x)=∑t=1Tft(x)F(x) = \sum_{t=1}^{T} f_t(x)F(x)=t=1Tft(x)

这个公式表示:最终的预测是所有基模型预测的简单累加

具体解释

  • F(x)F(x)F(x) 是最终的集成预测
  • ft(x)f_t(x)ft(x) 是第 ttt 个基模型(通常是决策树)的预测
  • TTT 是基模型的总数量

与AdaBoost的区别

  • AdaBoost:F(x)=∑t=1Tαtht(x)F(x) = \sum_{t=1}^{T} \alpha_t h_t(x)F(x)=t=1Tαtht(x)(加权和)
  • 随机梯度提升:F(x)=∑t=1Tft(x)F(x) = \sum_{t=1}^{T} f_t(x)F(x)=t=1Tft(x)(简单累加)

 

1.2、残差驱动的训练过程

残差的本质:模型错误的量化

残差就是当前模型预测与真实值之间的差距,它量化了模型预测错误的程度。

数学定义
残差=真实值−当前预测值残差 = 真实值 - 当前预测值残差=真实值当前预测值

步骤1:计算负梯度(残差)

rti=−∂L(yi,Ft−1(xi))∂Ft−1(xi)r_{ti} = -\frac{\partial L(y_i, F_{t-1}(x_i))}{\partial F_{t-1}(x_i)}rti=Ft1(xi)L(yi,Ft1(xi))

这个公式表示:计算当前模型预测与真实值之间的"残差"

具体解释

  • L(yi,Ft−1(xi))L(y_i, F_{t-1}(x_i))L(yi,Ft1(xi)) 是损失函数(如均方误差)
  • ∂L∂Ft−1(xi)\frac{\partial L}{\partial F_{t-1}(x_i)}Ft1(xi)L 是损失函数对预测的导数
  • 负号表示我们要沿着梯度的反方向优化

对于均方误差损失
L(y,F)=(y−F)2L(y, F) = (y - F)^2L(y,F)=(yF)2
∂L∂F=2(F−y)\frac{\partial L}{\partial F} = 2(F - y)FL=2(Fy)
−∂L∂F=2(y−F)=2×残差-\frac{\partial L}{\partial F} = 2(y - F) = 2 \times 残差FL=2(yF)=2×残差

所以负梯度就是残差的倍数

举个例子
假设真实值 yi=5y_i = 5yi=5,当前预测 Ft−1(xi)=3F_{t-1}(x_i) = 3Ft1(xi)=3

  • 残差:5−3=25 - 3 = 253=2
  • 负梯度:rti=2×2=4r_{ti} = 2 \times 2 = 4rti=2×2=4

这意味着我们需要增加预测值来减少损失。

 

步骤2:模型对残差进行优化

训练基模型 ft(x)f_t(x)ft(x) 来拟合残差 rtir_{ti}rti

核心思想每个新模型的任务就是预测之前模型的残差

这就像接力赛跑:

  • 第1个选手跑了80米(模型1的预测)
  • 还剩下20米(残差)
  • 第2个选手的任务就是跑这剩下的20米(预测残差)

具体例子
假设我们要预测房价,真实房价是100万:

第1轮训练

  • 真实值:y=100y = 100y=100
  • 模型1预测:F1(x)=80F_1(x) = 80F1(x)=80
  • 残差:r1=100−80=20r_1 = 100 - 80 = 20r1=10080=20

第2轮训练

  • 新目标:预测残差20万
  • 模型2预测:f2(x)=15f_2(x) = 15f2(x)=15
  • 更新预测:F2(x)=80+15=95F_2(x) = 80 + 15 = 95F2(x)=80+15=95
  • 新残差:r2=100−95=5r_2 = 100 - 95 = 5r2=10095=5

第3轮训练

  • 新目标:预测残差5万
  • 模型3预测:f3(x)=4f_3(x) = 4f3(x)=4
  • 更新预测:F3(x)=95+4=99F_3(x) = 95 + 4 = 99F3(x)=95+4=99
  • 新残差:r3=100−99=1r_3 = 100 - 99 = 1r3=10099=1
步骤3:更新预测

Ft(x)=Ft−1(x)+ηft(x)F_t(x) = F_{t-1}(x) + \eta f_t(x)Ft(x)=Ft1(x)+ηft(x)

这个公式表示:将新模型的预测加到之前的预测上

具体解释

  • Ft−1(x)F_{t-1}(x)Ft1(x) 是之前所有模型的累积预测
  • ft(x)f_t(x)ft(x) 是第 ttt 个新模型的预测
  • η\etaη 是学习率,控制新模型的贡献大小

学习率的作用

  • η=1\eta = 1η=1:新模型完全贡献其预测
  • η=0.1\eta = 0.1η=0.1:新模型只贡献10%的预测
  • 较小的学习率通常能获得更好的泛化性能

 

1.3、为什么用残差而不是直接预测?

避免重复学习

如果每个模型都直接预测原始目标,它们可能会学习到相似的模式,导致冗余。

用残差的优势

  • 模型1学习:房价的基本模式
  • 模型2学习:模型1遗漏的模式
  • 模型3学习:模型1和2都遗漏的模式

 

逐步精细化

残差通常比原始目标更容易预测,因为:

  • 残差的数值范围更小
  • 残差的模式更简单
  • 每个新模型只需要关注"遗漏"的部分

 

1.4、随机性的双重作用

样本随机性

每个基模型使用随机采样的数据子集进行训练。

具体实现

  • 从原始训练集中随机选择一部分样本
  • 通常选择80%的样本
  • 每个基模型使用不同的随机样本子集

作用

  • 增加基模型间的差异性
  • 防止过拟合、提高模型的泛化能力

 

特征随机性

每个基模型使用随机选择的特征子集。

具体实现

  • 从所有特征中随机选择一部分特征
  • 通常选择 p\sqrt{p}p 个特征(ppp 是特征总数)
  • 每个基模型使用不同的随机特征子集

作用

  • 进一步增加基模型间的差异性
  • 处理高维数据
  • 提高模型的鲁棒性

 

1.5、随机梯度提升的核心思想

为什么这样设计?

  1. 残差驱动:通过预测残差,每个新模型都专注于不同的错误模式
  2. 梯度优化:通过梯度信息指导模型训练,比AdaBoost的权重调整更精确
  3. 随机性:通过随机采样确保基模型间的差异性
  4. 学习率控制:通过较小的学习率防止过拟合

整体流程

  1. 初始化模型 F0(x)=0F_0(x) = 0F0(x)=0
  2. 对于每一轮 t=1,2,...,Tt = 1, 2, ..., Tt=1,2,...,T
    • 计算残差(负梯度)
    • 训练新模型拟合残差
    • 更新累积预测
  3. 最终预测是所有模型预测的累加

 

2、为什么随机梯度提升如此强大?

随机梯度提升的强大之处在于它结合了梯度优化的精确性和随机性的多样性。从优化角度看,随机梯度提升通过梯度下降实现了对损失函数的精确优化,这比AdaBoost的权重调整更加精细。

从集成角度看,随机梯度提升的随机性确保了基模型间的差异性,同时梯度优化确保了每个基模型都能为集成贡献最大价值。

更重要的是,随机梯度提升具有强大的泛化能力,通过控制学习率和基模型复杂度,可以有效防止过拟合。

 

三、 提升算法与装袋算法的对比

1、训练方式的差异

特性装袋算法提升算法
训练方式并行训练顺序训练
样本权重固定动态调整
基模型独立性
过拟合风险中等

2、数学原理的差异

装袋算法:通过平均独立训练的模型减少方差
Var(f^bag(x))=σ2B+B−1Bρσ2Var(\hat{f}_{bag}(x)) = \frac{\sigma^2}{B} + \frac{B-1}{B} \rho \sigma^2Var(f^bag(x))=Bσ2+BB1ρσ2

提升算法:通过顺序优化减少偏差
F(x)=∑t=1Tαtht(x)或F(x)=∑t=1Tft(x)F(x) = \sum_{t=1}^{T} \alpha_t h_t(x) \quad \text{或} \quad F(x) = \sum_{t=1}^{T} f_t(x)F(x)=t=1Tαtht(x)F(x)=t=1Tft(x)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91937.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣 hot100 Day65

75. 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函…

12.Linux 磁盘管理

Linux : 磁盘管理 一、磁盘设备命名规则磁盘类型设备命名模式示例特点SATA/SCSI/SAS/dev/sdXsda&#xff08;第一块硬盘&#xff09; sda1&#xff08;第一块硬盘第一分区&#xff09;机械硬盘/通用接口NVMe/dev/nvmeXnYpZnvme0n1&#xff08;第一通道第一块盘&#xff09; …

《Linux服务与安全管理》| DHCP服务器安装和配置

《Linux服务与安全管理》| DHCP服务器安装和配置 目录 《Linux服务与安全管理》| DHCP服务器安装和配置 一、点击“编辑虚拟机设置”&#xff0c;配置三台虚拟机为“仅主机”模式。 二、server01开机&#xff0c;root用户登录&#xff0c;输入nmtui&#xff0c;进入图形界面…

赛博威携手Dify,助力AI在企业的场景化落地

人工智能正以前所未有的速度重塑商业世界。我们经历了从理论探索到大语言模型&#xff08;LLM&#xff09;的爆发式增长&#xff0c;如今&#xff0c;一个以“AI Agent&#xff08;智能体&#xff09;”为核心的新阶段已然来临。AI Agent代表了人工智能应用的未来形态。它不再被…

嵌入式硬件中三极管推挽电路控制与实现

我们昨天讲到了这个电路。 如果 A 电是 PWM 波,那么请问 B 点是不是 PWM 波呢?那么,当 PWM 为高时, B 点的电流是从哪里流过来的?

数据结构——查找(三、树形查找)

一、二叉排序树&#xff08;BST&#xff09;1、二叉排序树的定义构造一棵二叉排序树的目的并不是排序&#xff0c;而是提高查找、插入和删除关键字的速度二叉排序树&#xff08;也称二叉搜索树&#xff09;或者是一颗空树&#xff0c;或者是具有以下性质的二叉树1、若左子树非空…

八股——Kafka相关

文章目录1、 消息队列的作用什么&#xff1f;思&#xff1a;消息队列是什么?消息队列的定义消息队列的工作原理消息队列的作用消息队列的常见类型消息队列的简单例子2、Kafka 集群的架构是什么样子的&#xff1f;3、Kafka 消费者组和生产者组是什么&#xff1f;定义与核心作用…

墨者学院SQL手工注入漏洞测试(MySQL数据库)题目,纯手工注入教程

打开练习手工注入的靶场,发现此时为一个登录页面,我们先试着登录看看注入点在不在登录页面 使用用户:or 1=1# 密码:admin123;尝试登录,发现显示错误后直接弹回原页面,无sql报错相关语句,这里不存在sql注入点 一:判断注入点以及猜测是否有注入 此时点击这里的动态页面…

[硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义

一、锁定放大器概述锁定放大器&#xff08;Lock-in Amplifier&#xff09;是一种基于相干检测技术的高灵敏度测量仪器&#xff0c;通过将待测信号与参考信号进行同步处理&#xff0c;从强噪声中提取微弱信号并精确测量其振幅与相位。其核心优势包括&#xff1a;信噪比提升&…

下载 | Windows Server 2025官方原版ISO映像!(7月更新、标准版、数据中心版、26100.4652)

⏩ 资源A066_Windows_Server_2025系统映像&#x1f536; Windows Server 2025官方原版ISO映像&#xff0c;7月更新版已放出。提供来自微软官方每月更新的ISO原版映像&#xff0c;内部包含了标准版和数据中心版&#xff0c;可选择无GUI界面版或桌面体验版&#xff0c;满足不同部…

Go 语言模糊测试 (Fuzz Testing) 深度解析与实践

学习一个知识&#xff0c;要先了解它的来源 1. 模糊测试的诞生&#xff1a;Barton Miller 的故事 “Fuzz”一词起源于1988年&#xff0c;由威斯康星大学麦迪逊分校的Barton Miller教授及其研究生团队在一个高级操作系统课程项目中提出 。这个概念的诞生颇具戏剧性。Miller教授在…

【软考和软著】

一、&#x1f4ab; 杭州E类人才政策 在这里插入图片描述 二、人才认定标准 三、关于软考 1、什么是软考&#xff1f; 软考指的是“计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试”。计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下…

「源力觉醒 创作者计划」开源大模型重构数智文明新范式

起来轻松玩转文心大模型吧一文心大模型免费下载地址&#xff1a;https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle开源大模型的崛起与AI幻觉挑战&#xff1a;中国AI发展的双重使命 ——从技术追赶到生态引领的跨越之路一、开源大模型&#xff1a;重构数智文…

政务云数智化转型:灵雀云打造核心技术支撑能力

政务云数智化转型进行时&#xff0c;亟需体系升级政务信息化作为政府治理与服务的重要支撑&#xff0c;业务呈现出政策性强、数据敏感度高、系统复杂度高、服务连续性要求严等特点&#xff0c;对IT系统提出了极高要求&#xff1a;不仅需支撑高并发、高可用的政务应用&#xff0…

软件测试自学之路

别找了&#xff01;2025B站最全最细的软件测试教程&#xff0c;7天从零基础小白到精通软件测试&#xff0c;学完即上岗&#xff01;自学软件测试对于小白来说还是有一定的难度&#xff0c;各种专业术语的不熟悉&#xff0c;各种电脑操作的不熟悉&#xff0c;有时候要安装一个学…

备案期间老网站有什么要求

老网站的内容必须符合法律法规和互联网管理规定。这可不是开玩笑的事儿&#xff0c;相关部门对于网站内容的审核可是相当严格的。比如说&#xff0c;不能有违法犯罪、色情低俗、虚假信息等不良内容。根据互联网信息管理专家的建议&#xff0c;网站内容应该积极健康、真实准确。…

Java数组转换为逗号分隔字符串的方法

Java数组转换为逗号分隔字符串的方法 在Java中&#xff0c;将数组转换为逗号分隔的字符串有几种常用方法&#xff0c;以下是清晰可靠的实现方案&#xff1a; 方法1&#xff1a;使用Arrays.toString() 字符串处理&#xff08;通用型&#xff09; import java.util.Arrays;publi…

抗辐照DCDC与MCU在核环境监测设备中的集成应用

摘要核环境监测设备对保障核设施安全、保护环境与人员健康意义重大&#xff0c;需在复杂恶劣的核环境中稳定运行。电子设备易受核辐射影响产生单粒子效应等故障&#xff0c;选用具备抗辐照能力的DCDC与MCU芯片至关重要。本文结合实际测试数据&#xff0c;深入探讨抗辐照DCDC与M…

C语言-指针[指针数组和数组指针]

知识重复变量指针&#xff1a;变量最小的地址值&#xff08;首地址&#xff09;&#xff0c;本质是地址、指针指针变量&#xff1a;存储指针的变量&#xff0c;本质是变量&&#xff1a;取地址运算符&#xff08;取址符、取地址符&#xff09;&#xff0c;获取变量、数组等的…

NX982NX984美光固态闪存NX992NY102

NX982NX984美光固态闪存NX992NY102技术革新引领存储革命——深度拆解美光NX系列固态闪存在数字化浪潮席卷全球的当下&#xff0c;数据存储已成为支撑人工智能、云计算与物联网等前沿领域的核心基础设施。作为行业标杆企业&#xff0c;美光科技推出的NX系列固态闪存产品&#xf…