从零开始理解AdaBoost算法:设计思路与算法流程(二)【权值更新与加权表决、数学公式】

设计思路

AdaBoost算法属于Boosting算法家族中的一种,其基本思路是将多个弱分类器组合成一个强分类器。

  • “强分类器”是指一个分类准确率较高的模型
  • “弱分类器”则是指分类准确率略高于随机猜测的简单模型。

AdaBoost的核心思想是通过 加权 的方式逐步提高分类器的性能。

首先来看AdaBoost的数学表达,使用的是 加法模型

f ( x ) = ∑ m = 1 M α m G m ( x ) = α 1 G 1 ( x ) + α 2 G 2 ( x ) + ⋯ + α M G M ( x ) f(x) = \sum_{m=1}^{M} \alpha_m G_m(x) = \alpha_1 G_1(x) + \alpha_2 G_2(x) + \cdots + \alpha_M G_M(x) f(x)=m=1MαmGm(x)=α1G1(x)+α2G2(x)++αMGM(x)

其中,每一个 G m ( x ) G_m(x) Gm(x) 是一个弱分类器, α m \alpha_m αm 是该分类器的权重。

在训练第 m m m个弱分类器 G m ( x ) G_m(x) Gm(x) 时,我们会记录哪些样本被 错误分类 ,哪些样本被 正确分类 。在下一轮训练时,我们需要增加那些被错误分类样本的权值,同时减少正确分类样本的权值,以此来训练新的弱分类器。这样一来,那些没有得到正确分类的数据,由于权值加大,会受到后续分类器更多的关注。

什么叫样本的权值?如何理解改变?

样本的权值可以理解为在训练集中每个样本的 相对重要性

举个例子,假设有三个样本,初始时每个样本的权值都是1/3。如果在第一轮分类中,有两个样本被正确分类,一个样本被错误分类,那么在下一轮中我们会降低被正确分类样本的权值,增加被错误分类样本的权值。

具体来说,假设有三个样本的初始权值如下:

  • 样本1:1/3
  • 样本2:1/3
  • 样本3:1/3

如果在第一轮中,样本1被错误分类,样本2和样本3被正确分类,我们会调整它们的权值为:

  • 样本1:2/3 = 4/6(因为分类错误,我们需要增加其权值)
  • 样本2:1/6(因为分类正确,我们需要减少其权值)
  • 样本3:1/6(因为分类正确,我们需要减少其权值)

此时相当于在样本1具有 4份,样本2和3都 只有1份 ;这样调整权值的目的是在下一轮训练时让分类器更加关注分类错误的样本。

权值如何得到?

AdaBoost采用加权多数表决,即通过加权的 线性相加 来决定最终的分类结果。

权值 α m \alpha_m αm受到弱分类器 G m ( x ) G_m(x) Gm(x)的分类误差率的影响,当分类误差较小的弱分类器其权值更大,反之,分类误差较大的弱分类器其权值更小。

具体来说:

  • 增大分类误差小的弱分类器的权值,使其在表决中起较大的作用;
  • 减小分类误差大的弱分类器的权值,使其在表决中起较小的作用。

这些权值的数学表达如下:

α m = 1 2 ln ⁡ ( 1 − ϵ m ϵ m ) \alpha_m = \frac{1}{2} \ln\left(\frac{1 - \epsilon_m}{\epsilon_m}\right) αm=21ln(ϵm1ϵm)

其中, ϵ m \epsilon_m ϵm是弱分类器 G m ( x ) G_m(x) Gm(x)的分类误差率。通过这个公式可以看出,当分类误差 ϵ m \epsilon_m ϵm较小时, α m \alpha_m αm较大;当分类误差 ϵ m \epsilon_m ϵm较大时, α m \alpha_m αm较小。

公式中的特点

这个权值公式有以下两个特点:

  1. 自适应调整:权值的调整是自适应的,根据每轮弱分类器的分类效果来决定下一轮的样本权值分布。这样可以确保后续的弱分类器对前面分类错误的样本给予更多关注,提高整体分类器的性能。

  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)},其中 y ∈ { − 1 , 1 } y \in \{-1, 1\} y{1,1}

第二步:定义基分类器

基分类器 G ( x ) G(x) G(x)可以是逻辑回归、决策树等。选择逻辑回归时,采用交叉熵损失函数和梯度下降方法进行优化。

第三步:循环训练基分类器

  1. 初始化权值 D 1 = ( w 1 , 1 , … , w 1 , N ) = ( 1 N , … , 1 N ) D_1 = (w_{1,1}, \dots, w_{1,N}) = (\frac{1}{N}, \dots, \frac{1}{N}) D1=(w1,1,,w1,N)=(N1,,N1)
  2. 训练基分类器 G m ( x ) G_m(x) Gm(x):如使用逻辑回归,采用交叉熵损失函数和梯度下降方法。
  3. 计算分类误差率 e m = ∑ i = 1 N w m , i ⋅ I ( G m ( x i ) ≠ y i ) e_m = \sum_{i=1}^N w_{m,i} \cdot I(G_m(x_i) \neq y_i) em=i=1Nwm,iI(Gm(xi)=yi)
  4. 计算权重系数 α m = 1 2 ln ⁡ ( 1 − e m e m ) \alpha_m = \frac{1}{2} \ln \left(\frac{1-e_m}{e_m}\right) αm=21ln(em1em)
  5. 更新权值 w m + 1 , i = w m , i ⋅ exp ⁡ ( − α m ⋅ y i ⋅ G m ( x i ) ) w_{m+1,i} = w_{m,i} \cdot \exp(-\alpha_m \cdot y_i \cdot G_m(x_i)) wm+1,i=wm,iexp(αmyiGm(xi)),并进行归一化。
  6. 更新加法模型 f ( x ) = f ( x ) + α m ⋅ G m ( x ) f(x) = f(x) + \alpha_m \cdot G_m(x) f(x)=f(x)+αmGm(x)
  7. 判断退出条件:若达到指定的分类器数量或总误差率低于设定值,则停止训练。

第一次训练

假设这是第一次训练,首先需要初始化权值分布 D 1 = ( w 11 , … , w 1 i ) D_1 = (w_{11}, \ldots, w_{1i}) D1=(w11,,w1i),默认每个样本的权值均匀分布为 1 N \frac{1}{N} N1

然后训练第一个基分类器,例如逻辑回归:使用交叉熵损失函数并通过梯度下降进行优化。

计算分类误差率
  1. 计算当前训练集上的分类误差率 e m e_m em,范围在 0 ≤ e m ≤ 0.5 0 \leq e_m \leq 0.5 0em0.5
    e m = ∑ i = 1 N w m , i I ( y i ≠ G m ( x i ) ) e_m = \sum_{i=1}^{N} w_{m,i} I(y_i \neq G_m(x_i)) em=i=1Nwm,iI(yi=Gm(xi))
    其中, I I I 是指示函数,当 y i ≠ G m ( x i ) y_i \neq G_m(x_i) yi=Gm(xi) 时, I ( y i ≠ G m ( x i ) ) = 1 I(y_i \neq G_m(x_i)) = 1 I(yi=Gm(xi))=1,否则为0。误差率不能超过0.5;因为如果错误率大于0.5,可以 反向预测 ,将错误率降低到0.5以下; w m , i w_{m,i} wm,i是权值,是小于1的数。

  2. 计算权重系数 α m \alpha_m αm,根据以下公式:
    α m = 1 2 ln ⁡ ( 1 − e m e m ) \alpha_m = \frac{1}{2} \ln\left(\frac{1 - e_m}{e_m}\right) αm=21ln(em1em)
    权重系数 α m \alpha_m αm 的值由分类误差率 e m e_m em 决定。 α m \alpha_m αm 越大,说明该分类器的权重越大,即分类效果越好。

函数分析:

  • 对于 1 − e m e m = 1 e m − 1 \frac{1-e_m}{e_m} = \frac{1}{e_m} - 1 em1em=em11,随着 e m e_m em 由0增加到0.5,函数从 + ∞ +\infty +变到0;
    在这里插入图片描述
  • 对于 ln ⁡ ( x ) \ln(x) ln(x) 函数,随着 x x x 从 1 增加到无穷大, ln ⁡ ( x ) \ln(x) ln(x) 从 0 增加到正无穷。
    在这里插入图片描述

因此,随着 误差率 e m e_m em 减小, 1 − e m e m \frac{1-e_m}{e_m} em1em 增大,样本的权值 α m \alpha_m αm 增大。误差率很大的情况下,权重 α m \alpha_m αm 也会较小,这是因为分类器在这轮的效果不好, 不应在最终的分类决策中占很大权重

更新权值分布

根据计算出的分类误差率 e m e_m em 和权重系数 α m \alpha_m αm,更新样本的权值分布 D m + 1 D_{m+1} Dm+1,步骤如下:

  1. 计算新的权值 w m + 1 , i w_{m+1, i} wm+1,i
    w m + 1 , i = w m , i exp ⁡ ( − α m y i G m ( x i ) ) w_{m+1, i} = w_{m,i} \exp(-\alpha_m y_i G_m(x_i)) wm+1,i=wm,iexp(αmyiGm(xi))
    式中:

    • 当样本 x i x_i xi 被正确分类时, y i G m ( x i ) > 0 y_i G_m(x_i) > 0 yiGm(xi)>0,则 exp ⁡ ( − α m y i G m ( x i ) ) < 1 \exp(-\alpha_m y_i G_m(x_i)) < 1 exp(αmyiGm(xi))<1,权值 w m + 1 , i w_{m+1, i} wm+1,i 变小;
    • 当样本 x i x_i xi 被错误分类时, y i G m ( x i ) < 0 y_i G_m(x_i) < 0 yiGm(xi)<0,则 exp ⁡ ( − α m y i G m ( x i ) ) > 1 \exp(-\alpha_m y_i G_m(x_i)) > 1 exp(αmyiGm(xi))>1,权值 w m + 1 , i w_{m+1, i} wm+1,i 变大。
  2. 进行归一化:
    w m + 1 , i = w m + 1 , i ∑ j = 1 N w m + 1 , j w_{m+1, i} = \frac{w_{m+1, i}}{\sum_{j=1}^{N} w_{m+1, j}} wm+1,i=j=1Nwm+1,jwm+1,i
    确保所有样本的权值之和为1。

更新加法模型

更新加法模型 f ( x ) f(x) f(x)
f ( x ) = f ( x ) + α m G m ( x ) f(x) = f(x) + \alpha_m G_m(x) f(x)=f(x)+αmGm(x)
至此,第一轮训练完成,得到第一个弱分类器 G 1 ( x ) G_1(x) G1(x) 及其权重系数 α 1 \alpha_1 α1

判断循环满足条件

每训练一个弱分类器 G m G_m Gm后,进行以下判断:

  1. 若基分类器数量已达到预设的最大迭代次数,则停止训练。
  2. 若当前集成分类器 f ( x ) f(x) f(x)的分类误差率低于设定的阈值,则停止训练。

在实际应用中,通常会选择第一种方式,以保证训练过程的稳定性和效率。

总结:

AdaBoost是一种通过不断迭代、逐步优化的机器学习算法。通过自适应地调整样本权值和弱分类器权重,能够有效地提升分类器的性能。在实际应用中,适当选择基分类器类型和迭代次数,对于提高算法的分类效果至关重要。

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

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

相关文章

黑马es学习

es 0. 基础概念0.1 倒排索引0.2 文档、索引0.3 与mysql对比 1 基本操作1.1 mapping 索引库操作1.2 单个文档CRUD 3. DSL查询3.1 查询所有3.2 全文检索3.3 精确查询3.4 复合查询-相关性得分3.5 分页3.6 高亮3.7 总结 2. RestClientmysql与es数据同步es集群去重 黑马视频 官方使…

Docker:利用Docker搭建一个nginx服务

文章目录 搭建一个nginx服务认识nginx服务Web服务器反向代理服务器高性能特点 安装nginx启动nginx停止nginx查找nginx镜像拉取nginx镜像&#xff0c;启动nginx站点其他方式拉取nginx镜像信息通过 DIGEST 拉取镜像 搭建一个nginx服务 首先先认识一下nginx服务&#xff1a; NGI…

04-认识微服务-SpringCloud

04-认识微服务-SpringCloud 1.SpringCloud&#xff1a; 1.SpringCloud是目前国内使用最广泛的微服务框架。官网地址&#xff1a;https://spring.io/projects/spring-cloud 2.SpringCloud集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&…

SpringCloud-面试篇(二十四)

&#xff08;1&#xff09;Nacos如何支撑数十万服务注册的压力 小型企业来讲nacos压力没有那么大&#xff0c;但是想阿里&#xff0c;服务的数量可能会达到数万&#xff0c;那麽多的服务。当服务原来越多时&#xff0c;除了服务注册以外&#xff0c;还有服务的定时更新&#x…

自养号测评防关联的关键点解析, 确保店铺权重和买家账号的安全稳定

现在很多大卖都是自己管理几百个账号&#xff0c;交给服务商不是特别靠谱。你不知道服务商账号质量怎么样&#xff0c;账号一天下了多少你也不清楚&#xff0c;如果下了很多单万一封号被关联了怎么办&#xff0c;你也不知道服务商用什么卡给你下单&#xff0c;用一些低汇率和黑…

一个简单好用的 C# Easing Animation 缓动动画类库

文章目录 1.类库说明2.使用步骤2.1 创建一个Windows Form 项目2.2 安装类库2.3 编码2.4 效果 3. 扩展方法3.1 MoveTo 动画3.2 使用回调函数的Color动画3.3 属性动画3.4 自定义缓动函数 4.该库支持的内置缓动函数5.代码下载 1.类库说明 App.Animations 类库是一个很精炼、好用的…

Django ORM的QuerySet:解锁数据库交互的魔法钥匙

用到此篇文章知识的几篇文章&#xff1a; Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django API开发实战&#xff1a;前后端分离、Restful风格与DRF序列化器详解 文章目录 前言一、什么是QuerySet&#xff1f;二、QuerySet 的用途三…

Dell服务器根据GPU温度调整风扇转速

前言 dell服务器自动风扇是根据CPU温度来调速的&#xff0c;我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行&#xff0c;我看了下也没有基于显卡温度调速的脚本&#xff0c;于是我就自己写了一个 基于ipmi工具 乌班图等linux先安装ipmi apt …

搭建vauditdemo靶场mysql为NO问题

一、问题 在搭建vauditdemo时&#xff0c;遇到如下显示问题&#xff1a; mysql版本检测为NO 二、解决 查找该方面问题时&#xff0c;并没有找到解决方法 然后换mysql版本换了五六个也没有解决问题 问了AI后给的答复有一条为将mysql改为mysqli 修改保存后解决问题 步骤如…

二分【1】二分查找框架 查找指定元素

目录 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身 2.查找第一个大于等于自己的 3.查找第一个大于自己的 4.严格递减序列 二。有重复元素 1.取其中第一个出现的 2.取其中最后一个出现的 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身…

作业-day-240607

思维导图 C编程 要求&#xff1a; 搭建一个货币的场景&#xff0c;创建一个名为 RMB 的类&#xff0c;该类具有整型私有成员变量 yuan&#xff08;元&#xff09;、jiao&#xff08;角&#xff09;和 fen&#xff08;分&#xff09;&#xff0c;并且具有以下功能&#xff1a;…

模板显式、隐式实例化和(偏)特化、具体化的详细分析

最近看了<The C Programing Language>看到了模板的特化&#xff0c;突然想起来<C Primer>上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀&#xff0c;我在网上了找了好多帖子&#xff0c;才把概念给理清楚。 看着这么多叫法&#xff0c;其…

上位机图像处理和嵌入式模块部署(f407 mcu vs h750)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在目前工业控制上面&#xff0c;f103和f407是用的最多的两种stm32 mcu。前者频率低一点&#xff0c;功能少一点&#xff0c;一般用在低端的嵌入式设…

C语言详解(文件操作)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重

idea上的MapReduce ​ 一般在开发中&#xff0c;若是等到环境搭配好了再进行测试或者统计数据&#xff0c;数据处理等操作&#xff0c;那会很耽误时间&#xff0c;所以一般都是2头跑&#xff0c;1波人去在客户机上搭建环境&#xff0c;1波人通过在idea上搭建虚拟hadoop环境&am…

Vue3父组件如何访问子组件属性和方法

本篇内容主要是父组件如何访问子组件的属性和方法 文章目录 子组件 //son.vue代码const list (info) >{console.log(info) }const name ref("XXXX")//子组件向父组件暴露了一个方法&#xff0c;然后父组件就可以去使用子组件里面的一些属性和方法了 //子组件向…

奇安信停服,国内还有什么可用的高防么?

这里写自定义目录标题 背景DDOS怎么办&#xff1f;方案推荐总结 背景 继前段时间百度云加速通知免费服务&#xff0c;6月底奇安信也将停止服务&#xff0c;到时候国内将几乎不存在免费好用的高防CDN了&#xff1b;类似的事情还有阿里云和腾讯云的一年期免费SSl证书也都停止供应…

C++:SLT容器-->deque

C:SLT容器-->deque 1. 构造函数2. deque 赋值操作3. deque 大小操作4. deque 插入和删除5. deque 容器数据存取6. deque 排序操作 双端数组&#xff0c;可以对头部和尾部进行插入删除操作 需要导入头文件#include <deque> 1. 构造函数 deque deqT; // 默认构造函数 de…

vue-2 组件传值

组件关系分类 父子关系非父子关系 父子通信流程 父组件通过props将数据传递给子组件 给子组件以添加属性的方式传值子组件内部通过 props 接收模板中直接使用 props 接收的值 父组件 Parent.vue <template><div class"parent" style"border: 3px s…

CST Studio Suite 2020 软件安装教程、安装包下载

CST Studio Suite 2020 安装教程 安装包下载 复制链接在浏览器打开 https://www.qqres.com/3150.html CST Studio Suite 是由Dassault Systmes公司开发的一套电磁场仿真软件。它应用于电子、通信、天线设计、射频与微波、电磁兼容性 (EMC)、电磁干扰 (EMI) 等领域。 CST St…