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

news2024/9/21 0:29:05

设计思路

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.coloradmin.cn/o/1808633.html

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

相关文章

Tomcat源码解析(八):一个请求的执行流程(附Tomcat整体总结)

Tomcat源码系列文章 Tomcat源码解析(一)&#xff1a;Tomcat整体架构 Tomcat源码解析(二)&#xff1a;Bootstrap和Catalina Tomcat源码解析(三)&#xff1a;LifeCycle生命周期管理 Tomcat源码解析(四)&#xff1a;StandardServer和StandardService Tomcat源码解析(五)&…

keda-P0460. 潜水员

可达信奥 - 登录 - 可达信奥https://kedaoi.cn/p/P0460 代码思路&#xff1a; 01背包DP。 思路也是比较经典的&#xff0c;就是看用这个水缸的最小值小&#xff0c;还是不用这个水缸的最小值小。但是这里涉及到一个初始化的问题&#xff0c;因为要求最小所以初始化理应…

使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端

要使用NetAssist网络调试助手在同一台计算机上配置一个实例作为服务器&#xff08;server&#xff09;和另一个实例作为客户端&#xff08;client&#xff09;&#xff0c;可以按照以下步骤进行操作&#xff1a; 前提条件 确保已经安装NetAssist网络调试助手&#xff0c;并了…

streamlit:如何快速构建一个应用,不会前端也能写出好看的界面

通过本文你可以了解到&#xff1a; 如何安装streamlit&#xff0c;运行起来第一个demo熟悉streamlit的基本语法&#xff0c;常用的一些组件使用streamlit库构建应用 大模型学习参考&#xff1a; 大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业…

鞠小云张霖浩闪耀北京广播电视台春晚发布会,豪门姐弟感爆棚

昨日&#xff0c;2025年北京广播电视台“追梦春晚”全国海选发布会在杭州举行&#xff0c;中国内地青年女演员鞠小云同人气幕后张霖浩&#xff0c;受主办方盛情邀请出席本次活动。从现场流露出的照片中可以看出&#xff0c;鞠小云一袭白色长裙灵动温婉素雅&#xff0c;而张霖浩…

springboot与flowable(1):介绍、Flowable-ui使用

一、工作流引擎使用场景 工作流在企业管理系统中是高频使用的功能&#xff0c;一个最常见的例子是请假加班申请与审批的过程。事实上&#xff0c;工作流引擎能支持的业务场景远远不止单据审批&#xff0c;几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流…

Vue3【二】 VSCode需要安装的Vue语法插件

VSCode需要安装的 适配Vue3的插件 Vue-Official插件安装

A股所有公司ZL申请与创新绩效分析(2000-2022年)

数据简介&#xff1a;专利是创新成果的主要载体&#xff0c;专利所包含的技术、经济、法律等信息主要通过结构化专利专利文献著录项的形式加以呈现。专利申请与创新绩效已成为衡量上市公司竞争力的重要指标。目前&#xff0c;各国ZSCQ管理部门开发管理的开放式平台是获取ZL数据…

PyQt5 多进程 多任务 多线程实现进度条功能 无边框 含源码

概述&#xff1a; 在项目 中我们常遇到&#xff0c;大量计算或者加载数据时&#xff0c;需要用到多线程&#xff0c;此时只能等待&#xff0c;我们这个时间需要添加一下进度条&#xff0c;告诉用户当前需要等待&#xff0c;这时间就需要用到多线程和等待进度条&#xff1b; 效…

【STM32】GPIO输出(江科大)

一、GPIO简介 1.GPIO&#xff1a;通用输入输出口 2.可配置为8种输入输出模式 3.引脚电平&#xff1a;0-3.3V&#xff08;输出最大3.3V&#xff09;&#xff0c;部分引脚可容忍5V&#xff08;输入&#xff0c;有FT&#xff09; 4.输出模式下&#xff0c;可控制端口输出高低电平…

94、二叉树的迭代遍历

实现对二叉树的前后序非递归遍历 题解&#xff1a; 递归的实现就是&#xff1a;递去&#xff0c;归来。每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中&#xff0c;然后递归返回的时候&#xff0c;从栈顶弹出上一次递归的各项参数&#xff0c;所以这就是…

MySQL系列-安装配置使用说明(MAC版本)

1、前言 本文将介绍MySQL的安装配置以及基本语法操作说明 环境&#xff1a;mac 版本&#xff1a;MySQL 8.0.28 之前电脑安装卸载过&#xff0c;后面在装的时候遇到一些问题&#xff0c;用了四五天才解决&#xff0c;主要是参考 https://blog.csdn.net/zz00008888/article/deta…

IPv6 自动配置流程图

IPv6 自动配置流程图 IPv6 自动配置生命周期 Mark

人事信息管理系统(Java+MySQL)

一、项目背景 在现代企业中&#xff0c;管理大量员工的工作信息、薪资、请假、离职等事务是一项非常繁琐和复杂的任务。传统的手工管理方式不仅效率低下&#xff0c;而且容易出错。为了提高人事管理的效率&#xff0c;减少人工操作带来的错误&#xff0c;企业迫切需要一个高效…

乒乓球烧拍日记之一结构分析

先上图 这是这两年烧过的球拍&#xff0c;最贵的是palio C2 80元左右&#xff0c;大部分球拍儿都是十多元&#xff0c;其中横拍儿是小朋友用的&#xff0c;直拍是我自己用的。照片中球拍儿的分类是按结构特点和材料来分的&#xff0c;最下面的两个剑轮球拍是成品拍儿。胶皮也都…

基于运动控制卡的圆柱坐标机械臂设计

1 方案简介 介绍一种基于运动控制卡制作一款scara圆柱坐标的机械臂设计方案&#xff0c;该方案控制器用运动控制卡制作一台三轴机械臂&#xff0c;用于自动抓取和放料操作。 2 组成部分 该机械臂的组成部分有研华运动控制卡&#xff0c;触摸屏&#xff0c;三轴圆柱坐标的平面运…

多目标融合参数搜索

多目标融合 权重分类目人群。 trick normlize 不同Score之间含义、量级和分布差异较大&#xff1a;评分计算的不同部分的意义、范围和分布存在显著差异&#xff0c;这使得直接比较或融合它们的结果变得困难。显式反馈&#xff08;如点赞率&#xff09;存在用户间差异&#…

2、数据操作

索引从0开始 一行 [1,:] 一列[:,1] 子区域&#xff1a;[1:3,1:] 第一行和第二行&#xff0c;从第一列开始 [::3,::2] 每3行一跳&#xff0c;每2列一跳 torch.tensor([[1,2,3,4]] 按位置算 xy ,x-y x*y x**y&#xff08;幂&#xff09; 1、广播机制形状不一样&#xff0c;…

2021 hnust 湖科大 操作系统课设 报告+原代码+指导书+流程图源文件

2021 hnust 湖科大 操作系统课设 报告原代码指导书流程图源文件 详情 目录 验证类实验&#xff1a; 1 实验一&#xff1a;Windows进程管理 1 一、 实验题目&#xff1a; 1 二、 实验目的 1 三、 实验内容 1 四、 实验结果与分析 2 五、 小结与心得体会 5 实验二&#xff1a;L…

【前端】详解JavaScript事件代理(事件委托)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…