AdaBoost集成学习算法理论解读以及公式为什么这么设计?

本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。
AdaBoost集成学习算法基本上遵从Boosting集成学习思想,通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器,然后通过加权投票等方式将这些弱学习器集成起来得到性能较优的集成模型。
image.png
图1:Boosting集成算法思想。
下面以二分类任务(标签不是为-1,就是为+1)为例介绍该算法的具体过程。值得注意的是,下面的公式推导是以二分类任务下得出来,所以公式(比如样本权重更新公式)才会显得比较整洁,但如果换成其他任务,如多分类,那么公式会复杂很多。
对于训练样本集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) D={\left(x_1,y_1\right),\left(x_2,y_2\right),\ldots,(x_n,y_n)} D=(x1,y1),(x2,y2),,(xn,yn),其中标签 y i ∈ { − 1 , + 1 } y_i\in\left\{-1,+1\right\} yi{1,+1},由AdaBoost集成学习算法构造集成模型的基本步骤如下:
(1)令 i = 1 i=1 i=1并设定弱学习器的数目m。对应第一次迭代,使用均匀分布初始化训练样本集的权重分布,令 n n n维向量 w i \mathbf{w}^i wi表示第 i i i次需更新的样本权重,则有:
w 1 = ( w 11 , w 12 , … , w 1 n ) T = ( 1 n , 1 n , … , 1 n ) T \mathbf{w}^1=\left(w_{11},w_{12},\ldots,w_{1n}\right)^T=\left(\frac{1}{n},\frac{1}{n},\ldots,\frac{1}{n}\right)^T w1=(w11,w12,,w1n)T=(n1,n1,,n1)T
(2)使用权重分布为 w i \mathbf{w}^i wi,此时 i = 1 i=1 i=1的训练样本集 D i D_i Di学习得到第 i i i个弱学习器 L i L_i Li
(3)计算 L i L_i Li在训练样本集 D i D_i Di上的分类错误率 e i e_i ei
e i = ∑ k = 1 n w i k I ( L i ( X k ) ≠ y k ) e_i=\sum_{k=1}^{n}{w_{ik}I \left(L_i\left(X_k\right)\neq y_k\right) } ei=k=1nwikI(Li(Xk)=yk)
(4)确定弱学习器 L i L_i Li的组合权重 α i \alpha_i αi( α i \alpha_i αi在最后得到最终的集成模型上用到)。由于弱学习器 L i L_i Li的权重取值应与其分类性能相关,对于分类错误率 e i e_i ei越小的 L i L_i Li,则其权重 α i \alpha_i αi应该越大,故有:
α i = 1 2 ln 1 − e i e i = 1 2 ln ( 1 e i − 1 ) \alpha_i=\frac{1}{2}\text{ln}\frac{1-e_i}{e_i}=\frac{1}{2}\text{ln}(\frac{1}{e_i}-1) αi=21lnei1ei=21ln(ei11)
可能会有人会为,为什么要这么设计 α i \alpha_i αi?我在下面给出了解释。
(5)(重点)依据弱学习器 L i L_i Li对训练样本集 D i D_i Di的分类错误率 e i e_i ei更新样本权重,样本权重更新公式为:
w i + 1 , j = w i j exp ⁡ ( − α i y k L i ( x k ) ) Z i w_{i+1,j}=\frac{w_{ij}\exp(-\alpha_iy_kL_i(x_k))}{Z_i} wi+1,j=Ziwijexp(αiykLi(xk))
其中:
Z i = ∑ k = 1 n w i j exp ⁡ ( − α i y k L i ( X k ) ) Z_i=\sum_{k=1}^{n}{w_{ij}\exp(-\alpha_iy_kL_i(X_k))} Zi=k=1nwijexp(αiykLi(Xk))
为归一化因子,保证更新后权重向量为概率分布;
对权重更新公式的解释
回顾开头,这是一个二分类任务,所以若样本 ( x k , y k ) (x_k,y_k) (xk,yk)分类正确,则要不 y k = L i ( x k ) = 1 y_k=L_i(x_k)=1 yk=Li(xk)=1,要不 y k = L i ( x k ) = − 1 y_k=L_i(x_k)=-1 yk=Li(xk)=1,因此有 y k ∗ L i ( x k ) = 1 y_k*L_i(x_k)=1 ykLi(xk)=1**。**若样本 ( x k , y k ) (x_k,y_k) (xk,yk)分类错误,则要不 y k = − 1 , L i ( x k ) = 1 y_k=-1,L_i(x_k)=1 yk=1,Li(xk)=1,要不 y k = 1 , L i ( x k ) = − 1 y_k=1,L_i(x_k)=-1 yk=1,Li(xk)=1,因此有 y k ∗ L i ( x k ) = − 1 y_k*L_i(x_k)=-1 ykLi(xk)=1
因此公式
w i + 1 , j = w i j exp ⁡ ( − α i y k L i ( x k ) ) Z i w_{i+1,j}=\frac{w_{ij}\exp(-\alpha_iy_kL_i(x_k))}{Z_i} wi+1,j=Ziwijexp(αiykLi(xk))
可以改写
w i + 1 , j = { w i j Z i exp ⁡ ( − α i ) , y k = L i ( x k ) w i j Z i exp ⁡ ( α i ) , y k ≠ L i ( x k ) w_{i+1,j}=\begin{cases} \frac{w_{ij}}{Z_i}\exp(-\alpha_i),y_k=L_i(x_k) \\\frac{w_{ij}}{Z_i}\exp(\alpha_i),y_k\ne L_i(x_k) \end{cases} wi+1,j={Ziwijexp(αi),yk=Li(xk)Ziwijexp(αi),yk=Li(xk)
这样,对于错误的样本会被放大 1 − e i e i \frac{1-e_i}{e_i} ei1ei倍,以便在后续弱学习器构造过程得到应有的重视。
为什么是 1 − e i e i \frac{1-e_i}{e_i} ei1ei倍?
w i + 1 , j , y k ≠ L i ( x k ) w i + 1 , j , y k = L i ( x k ) = w i j Z i exp ⁡ ( α i ) w i j Z i exp ⁡ ( − α i ) = exp ⁡ ( α i ) exp ⁡ ( − α i ) = e 2 ∗ α i = e 2 ∗ 1 2 ln 1 − e i e i = e ln 1 − e i e i = 1 − e i e i \frac{w_{i+1,j},y_k\ne L_i(x_k)}{w_{i+1,j},y_k=L_i(x_k)}=\frac{\frac{w_{ij}}{Z_i}\exp(\alpha_i)}{\frac{w_{ij}}{Z_i}\exp(-\alpha_i)} =\frac{\exp(\alpha_i)}{\exp(-\alpha_i)}=e^{2*\alpha_i}=e^{2*\frac{1}{2}\text{ln}\frac{1-e_i}{e_i}}=e^{\text{ln}\frac{1-e_i}{e_i}}=\frac{1-e_i}{e_i} wi+1,j,yk=Li(xk)wi+1,j,yk=Li(xk)=Ziwijexp(αi)Ziwijexp(αi)=exp(αi)exp(αi)=e2αi=e221lnei1ei=elnei1ei=ei1ei
另外 Z i Z_i Zi的作用是归一化,使得 ∑ j = 1 n w i + 1 , j = 1 \sum_{j=1}^{n}{w_{i+1,j}}=1 j=1nwi+1,j=1
(6)若 i < m i<m i<m,则令 i = i + 1 i=i+1 i=i+1并返回步骤(2),否则执行步骤(7);
(7)对于 m m m个弱分类器 L 1 , L 2 , … , L m L_1{,L}_2,\ldots,L_m L1,L2,,Lm,分别将每个 L i L_i Li按权重 α i \alpha_i αi进行组合:
L = sign ( ∑ i = 1 m α i L i ( X ) ) L=\text{sign}(\sum_{i=1}^{m}{\alpha_iL_i(X)}) L=sign(i=1mαiLi(X))
得到并输出所求集成模型 L L L,算法结束。

参考资料:《机器学习及其应用》汪荣贵等编著

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

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

相关文章

解析MySQL的数据类型:理解每种类型及其应用

MySQL是一种流行的关系型数据库管理系统&#xff0c;被广泛应用于Web应用开发中。在数据库设计的过程中&#xff0c;选择合适的数据类型至关重要&#xff0c;因为它不仅影响存储效率和数据完整性&#xff0c;还影响数据库操作的性能和查询速度。本文将详细介绍MySQL支持的各种数…

飞跃边界,尽在掌握 —— Jump Desktop 8 for Mac,远程工作新体验!

Jump Desktop 8 for Mac 是一款强大的远程桌面控制软件&#xff0c;专为追求高效工作与生活平衡的用户设计。它允许您轻松地从Mac设备上远程访问和控制另一台电脑或服务器&#xff0c;无论是跨房间、跨城市还是跨国界&#xff0c;都能实现无缝连接&#xff0c;仿佛操作就在眼前…

【Python实战因果推断】28_倾向分8

目录 Treatment Is Easy to Model Treatment Is Easy to Model 第一个例子中&#xff0c;治疗分配的模型相当容易建立&#xff0c;但干预结果的模型却比较复杂。具体来说&#xff0c;干预遵循伯努利分布&#xff0c;其概率由以下倾向得分给出&#xff1a; 如果您没有意识到&a…

单对以太网:工业4.0时代的通信革命

单对以太网连接器概述 单对以太网&#xff08;Single Pair Ethernet&#xff0c;简称SPE&#xff09;是一种新兴的以太网技术&#xff0c;它通过一对双绞线实现数据传输&#xff0c;支持PoDL&#xff08;Power over Data Line&#xff09;技术&#xff0c;为终端设备提供电力供…

PTA - 编写函数计算圆面积

题目描述&#xff1a; 1.要求编写函数getCircleArea(r)计算给定半径r的圆面积&#xff0c;函数返回圆的面积。 2.要求编写函数get_rList(n) 输入n个值放入列表并将列表返回 函数接口定义&#xff1a; getCircleArea(r); get_rList(n); 传入的参数r表示圆的半径&#xff0c…

PTA - sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和

题目描述&#xff1a; 给定两个均不超过9的正整数a和n&#xff0c;要求&#xff1a;编写函数fn(a,n)&#xff0c; 求aaaaaa⋯aa⋯aa(n个a&#xff09;之和&#xff0c;fn须返回的是数列之和。 函数接口定义&#xff1a; def fn(a,n):其中&#xff0c; a 和 n 都是传入的参数…

Java项目:基于SSM框架实现的农家乐信息管理平台含前后台【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的农家乐信息管理平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…

linux信息收集与提权

目录 版本信息收集 kali得一些exp网站 kali自带的searchsploit工具 脏牛提权漏洞&#xff08;改写没有写权限的文件&#xff09; 测试靶场下载链接 sudo提权 上传恶意C脚本进行编译生成dirty的elf文件&#xff0c;也可以在攻击机编译好上传 启动&#xff0c;123456是设…

微信小程序毕业设计-教育培训系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

低资源低成本评估大型语言模型(LLMs)

随着新的大型语言模型&#xff08;LLMs&#xff09;的持续发展&#xff0c;从业者发现自己面临着众多选择&#xff0c;需要从数百个可用选项中选择出最适合其特定需求的模型、提示[40]或超参数。例如&#xff0c;Chatbot Arena基准测试平台积极维护着近100个模型&#xff0c;以…

WPF 初识依赖属性

依赖属性的意义和作用 核心模块内存共享&#xff0c;节省空间数据绑定、样式、模板、动画。。。。如果没有依赖属性&#xff0c;这个框架就是一个控件框架 相当于Winform 依赖属性的基本定义 基本过程&#xff1a;声明、注册、包装 在需要写依赖属性的类中&#xff0c;继承…

Clickhouse的联合索引

Clickhouse 有了单独的键索引&#xff0c;为什么还需要有联合索引呢&#xff1f;了解过mysql的兄弟们应该都知道这个事。 对sql比较熟悉的兄弟们估计看见这个联合索引心里大概有点数了&#xff0c;不过clickhouse的联合索引相比mysql的又有些不一样了&#xff0c;mysql 很遵循最…

谷粒商城 - 编写一个自定义校验注解

目录 开始 未来实现效果 第一步&#xff1a;编写自定义校验注解 第二步&#xff1a;编写自定义校验器 第三步&#xff1a;编写配置文件 效果演示 开始 未来实现效果 编写一个 ListValue 注解&#xff0c;可以实现功能有&#xff1a; 限定字段的值&#xff0c;例如指定只…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥协商(ArkTS)】

密钥协商(ArkTS) 以协商密钥类型为X25519 256&#xff0c;并密钥仅在HUKS内使用为例&#xff0c;完成密钥协商。 开发步骤 生成密钥 设备A、设备B各自生成一个非对称密钥&#xff0c;具体请参考[密钥生成]或[密钥导入]。 密钥生成时&#xff0c;可指定参数HUKS_TAG_DERIVE…

【BUG】RestTemplate发送Post请求后,响应中编码为gzip而导致的报错

BUG描述 20240613-09:59:59.062|INFO|null|810184|xxx|xxx||8|http-nio-xxx-exec-1|com.xxx.jim.xxx.XXXController.?.?|MSG接收到来自xxx的文件请求 headers:[host:"xxx", accept:"text/html,application/json,application/xhtmlxml,application/xml;q0.9,*…

Redis 实现的延时队列组件

最近看开源看到一个好用的延时队列组件&#xff0c;已经上生产。代码量很少&#xff0c;主要就是利用Redis监听过期键实现的。然后搞点策略模式柔和柔和。利用Spring Start 封装了一下&#xff0c;全是俺掌握的知识&#xff0c;稍微研究了下就搞懂了。觉得挺有用的&#xff0c;…

2024.7.9作业

1、提示并输入一个字符串&#xff0c;统计该字符串中字母、数字、空格以及其他字符的个数 #include <stdio.h> #include <string.h> int main(int argc,const char *argv[]) { char arr[30]{0}; int zm0,kg0,sz0,qt0; printf("请输入字符串&…

utf8mb4和utf8的不同、若依框架,代码生成器,gitee,前端vue的下载、修复和启动(寻求大佬帮助若依框架三、2.3)

2024.7.9 一、数据库的排序和统一问题。utf8mb4和utf8的不同1.1 发现问题1.2 解决问题-在idea中用sql生成器&#xff0c;生成sql语句&#xff0c;然后在里面修改1.3 utf8和utf8mb4的区别 二、若依前后端框架。代码生成器&#xff08;还没研究懂&#xff0c;但有三个方案&#x…

微软清华提出全新预训练范式,指令预训练让8B模型实力暴涨!实力碾压70B模型

现在的大模型训练通常会包括两个阶段&#xff1a; 一是无监督的预训练&#xff0c;即通过因果语言建模预测下一个token生成的概率。该方法无需标注数据&#xff0c;这意味着可以利用大规模的数据学习到语言的通用特征和模式。 二是指令微调&#xff0c;即通过自然语言指令构建…