AdaBoost与前向分步算法

1. 加性模型的定义

在AdaBoost算法中,我们可以将其视为一种加性模型。加性模型是指由多个基模型的线性组合构成的模型。图中的公式 (10-9) 描述了加性模型的形式:
f ( x ) = ∑ t = 1 T α t b ( x ; γ t ) f(x) = \sum_{t=1}^T \alpha_t b(x; \gamma_t) f(x)=t=1Tαtb(x;γt)

其中:

  • b ( x ; γ t ) b(x; \gamma_t) b(x;γt) 表示第 t t t 个基模型,参数 γ t \gamma_t γt 是模型的参数。
  • α t \alpha_t αt 是基模型的系数,表示每个基模型的权重。
  • T T T 是基模型的数量。

加性模型的目标是最小化损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)),通过逐步优化每个基模型的参数和权重,逐渐逼近目标值。

2. 加性模型的目标函数

对于给定的训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } D = \{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)},其中 x i ∈ R n x_i \in \mathbb{R}^n xiRn y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{1,+1},我们可以定义加性模型的目标函数为:
min ⁡ α t , γ t ∑ i = 1 N L ( y i , ∑ t = 1 T α t b ( x i ; γ t ) ) \min_{\alpha_t, \gamma_t} \sum_{i=1}^N L\left(y_i, \sum_{t=1}^T \alpha_t b(x_i; \gamma_t)\right) αt,γtmini=1NL(yi,t=1Tαtb(xi;γt))

即在所有基模型的权重 α t \alpha_t αt 和参数 γ t \gamma_t γt 上最小化损失函数。

由于这个优化问题非常复杂,难以一次性求解所有参数,所以可以采用前向分步算法来进行逐步优化。

3. 前向分步算法的思想

前向分步算法的核心思想是:逐步优化。每一步仅优化一个基模型的参数和权重,将其加入到模型中,逐渐逼近目标值。

每一步的优化目标可以用公式 (10-11) 表示为:
min ⁡ α t , γ t ∑ i = 1 N L ( y i , f t − 1 ( x i ) + α t b ( x i ; γ t ) ) \min_{\alpha_t, \gamma_t} \sum_{i=1}^N L(y_i, f_{t-1}(x_i) + \alpha_t b(x_i; \gamma_t)) αt,γtmini=1NL(yi,ft1(xi)+αtb(xi;γt))

其中:

  • f t − 1 ( x ) f_{t-1}(x) ft1(x) 表示前 t − 1 t-1 t1 步构建的模型。
  • α t \alpha_t αt γ t \gamma_t γt 是第 t t t 个基模型的参数,需要通过最小化损失函数来确定。

4. 前向分步算法在AdaBoost中的应用

在AdaBoost中,前向分步算法的思想体现在逐步增加弱分类器,并为每个弱分类器分配权重,以最小化整个模型的损失函数。

具体步骤如下:

(1) 初始化模型

首先,将模型初始化为常数值 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0,即模型初始时没有任何分类能力。

(2) 迭代构建模型

对于每一轮 t = 1 , 2 , … , T t = 1, 2, \dots, T t=1,2,,T

  • 选择基模型:选择一个基模型 b ( x ; γ t ) b(x; \gamma_t) b(x;γt) 和对应的参数 γ t \gamma_t γt 以及权重 α t \alpha_t αt,使得当前损失函数最小化。这一步可以通过公式 (10-12) 来表示:
    ( α t , γ t ) = arg ⁡ min ⁡ α , γ ∑ i = 1 N L ( y i , f t − 1 ( x i ) + α b ( x i ; γ ) ) (\alpha_t, \gamma_t) = \arg \min_{\alpha, \gamma} \sum_{i=1}^N L(y_i, f_{t-1}(x_i) + \alpha b(x_i; \gamma)) (αt,γt)=argα,γmini=1NL(yi,ft1(xi)+αb(xi;γ))
  • 更新模型:将新的基模型加入到当前模型中,更新后的模型为:
    f t ( x ) = f t − 1 ( x ) + α t b ( x ; γ t ) f_t(x) = f_{t-1}(x) + \alpha_t b(x; \gamma_t) ft(x)=ft1(x)+αtb(x;γt)
(3) 最终加性模型

经过 T T T 轮迭代后,最终的加性模型表示为:
f ( x ) = ∑ t = 1 T α t b ( x ; γ t ) f(x) = \sum_{t=1}^T \alpha_t b(x; \gamma_t) f(x)=t=1Tαtb(x;γt)

5. 将前向分步算法应用于AdaBoost

对于AdaBoost而言,基模型是二分类器 G t ( x ) G_t(x) Gt(x),加性模型构建过程如下:

  • 假设在第 t − 1 t-1 t1 步,我们已经获得了一个模型 f t − 1 ( x ) f_{t-1}(x) ft1(x)
  • t t t 步添加新的弱分类器 G t ( x ) G_t(x) Gt(x) 时,我们会选择一个权重系数 α t \alpha_t αt,使得损失函数最小化。

即公式 (10-16) 表示了这一过程:
( α t , G t ( x ) ) = arg ⁡ min ⁡ α , G ∑ i = 1 N exp ⁡ ( − y i ( f t − 1 ( x i ) + α G ( x i ) ) ) (\alpha_t, G_t(x)) = \arg \min_{\alpha, G} \sum_{i=1}^N \exp(-y_i (f_{t-1}(x_i) + \alpha G(x_i))) (αt,Gt(x))=argα,Gmini=1Nexp(yi(ft1(xi)+αG(xi)))

通过这个优化,我们可以得到每一轮中需要添加的弱分类器 G t ( x ) G_t(x) Gt(x) 及其权重 α t \alpha_t αt,从而逐步逼近最优解。

6. 总结

综上所述,AdaBoost可以看作是前向分步算法的具体应用。在每一轮中,AdaBoost通过选择一个新的弱分类器及其权重,逐步逼近整体目标函数的最小化。


本文部分公式详细解析:
公式 (10-16)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

微服务系列四:热更新措施与配置共享

目录 前言 一、基于Nacos的管理中心整体方案 二、配置共享动态维护 2.1 分析哪些配置可拆,需要动态提供哪些参数 2.2 在nacos 分别创建共享配置 创建jdbc相关配置文件 创建日志相关配置文件 创建接口文档配置文件 2.3 拉取本地合并配置文件 2.3.1 拉取出现…

抖音短剧小程序上线:短视频平台的全新娱乐体验

抖音短剧小程序的开发是一个结合了创意与技术的过程,旨在通过简洁而富有吸引力的方式,向用户提供高质量的短剧内容。随着移动互联网的快速发展,短视频平台成为了人们日常生活中不可或缺的一部分,而短剧作为一种新兴的内容形式&…

【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面

我因为python版本太过于混乱 (都是为了学习os) ,3.6—3.9版本我都安装了,指向关系也很混乱,本着“重装是最不会乱”的原则,我把全部版本都卸载了。然后装了3.9 发现终端打不开了,火狐浏览器的图…

Golang | Leetcode Golang题解之第521题最长特殊序列I

题目: 题解: func findLUSlength(a, b string) int {if a ! b {return max(len(a), len(b))}return -1 }func max(a, b int) int {if b > a {return b}return a }

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-13

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

二叉树中的深搜 算法专题

二叉树中的深搜 一. 计算布尔二叉树的值 计算布尔二叉树的值 class Solution {public boolean evaluateTree(TreeNode root) {if(root.left null) return root.val 0? false: true;boolean left evaluateTree(root.left);boolean right evaluateTree(root.right);return…

VisionPro —— CogPatInspectTool对比工具

一、CogPathInspectTool工具简介 CogPathInspectTool是VisionPro重要的工具,主要用于缺陷检测,通过将当前图像与“训练图像”对比,获取“原始差异图像”,再将“原始差异图像”与“阈值图像”进行对比,进而获取“阈值差…

Linux 系统启动

1.Linux系统启动过程 Linux系统启动过程可以分为5个阶段:内核的引导、运行 init、系统初始化、建立终端、用户登录系统。 2.内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启…

Qt 坐标系统与坐标变换

Qt 坐标系统与坐标变换 坐标变换函数 QPainter坐标变换相关函数 分组函数原型功能坐标变换void translate(qreal dx,qreal dy)坐标系统一定的偏移量,坐标原点平移到新的点void rotate(qreal angle)坐标系统顺时针旋转-一个角度void scale(qreal sx,qreal sy)坐标…

奥数与C++小学四年级(第十六题 魔法学院)

参考程序代码&#xff1a; #include <iostream>int main() {int maxStudentsPerSubject 9; // 每个科目最多有9个比哈利高的学生int students maxStudentsPerSubject * 3; // 三个科目// 加上哈利自己int totalStudents students 1;std::cout << "最大学…

高空作业未系安全带监测系统 安全带穿戴识别预警系统

在各类高空作业场景中&#xff0c;安全带是保障作业人员生命安全的关键防线。然而&#xff0c;由于人为疏忽或其他原因&#xff0c;作业人员未正确系挂安全带的情况时有发生&#xff0c;这给高空作业带来了巨大的安全隐患。为有效解决这一问题&#xff0c;高空作业未系安全带监…

备战“双11”丨AI+物流:你的快递会有什么变化?

背景 在中国&#xff0c;每天有数以亿计的包裹在运输&#xff0c;尤其在电商促销季如“双十一”、“618”期间&#xff0c;快递量更是激增。快递物流行业面临人员短缺、配送效率低下和物流承载能力有限等问题。快瞳科技提供的AI识别解决方案通过智能化手段提高工作效率和配送准…

Cesium的PickModel浅析

Cesium中的拣选(pick)具备一套比较巧妙机制&#xff0c;。可以简单的认为&#xff0c;Cesium的常规的鼠标拣选是基于最终成图做的。就如同下面的这幅画&#xff0c;红色的箭头指向牛的臀&#xff0c;而不是后面的房子&#xff0c;是因为牛挡住了房子。这是一种比较自然的理解方…

针对告警数量、告警位置、告警类型等参数进行统计,并做可视化处理的智慧能源开源了

一、简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算…

【教学类-12-10】20241104《连连看竖版6*6 (3套题目空心图案)中2班

【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&#xff09;》&#xff08;中班主题《玩具总动员》)-CSDN博客文章浏览阅读121次。【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&…

Windows系统使用diskpart命令格式化U盘

Windows系统使用diskpart命令格式化U盘 1、以管理员身份运行CMD命令提示符 2、输入【diskpart】进入diskpart命令行界面 3、输入【list disk】命令&#xff0c;查看本机所有磁盘 4、这里以格式化【磁盘4】为列&#xff0c;输入【select disk 4】命令&#xff0c;选择磁盘4…

Uni商城-开源项目

目录 概述 技术选型 前端 后端 数据库&#xff1a;MongoDB 项目原型图 项目实现效果图 Tabbar页面 微信一键登录 ​编辑加入购物车 ​编辑 首页商品分类过滤 商品搜索 商品下单 收货地址选择/管理&#xff08;内置组件&#xff09; ​编辑 购物车下单 ​编辑 优…

电脑开机显示无信号然后黑屏怎么办?

当我们打开电脑时&#xff0c;遇到电脑屏幕出现了无信号并且黑屏&#xff0c;常常会让我们感到困扰。很多朋友都会遇到显示器无信号的情况&#xff0c;其实这种故障是很好解决的&#xff0c;但是电脑小白&#xff0c;并不知道电脑屏幕显示无信号然后黑屏了要怎么去修复。不用担…

Linux Kernel Programming (个人读书笔记)

目录 Before everything begins 笔者的环境 关于如何在Arch Linux下载Virtual Box 下载一个镜像&#xff0c;然后开启一个简单的虚拟机 在Ubuntu虚拟机下东西 配置我们的内核 啥是KConfig和KBuild? 构建内核配置选择 启动&#xff01;一个好的内核配置的开始 使用分发…

【优先算法】双指针

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;优先算法 个人主页&#xff1a;Celias blog~ 目录 ​​​​​​移动零 复写零 快乐数 盛水最多的容器 …