机器学习---Adaboost算法

1. Adaboost算法介绍

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然

后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身是通

过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类

的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每

次得到的分类器最后融合起来,作为最后的决策分类器。

目前,对Adaboost算法的研究以及应用大多集中于分类问题,同时近年也出现了一些在回归问题

上的应用。就其应用adaboost系列主要解决了:两类问题、多类单标签问题、多类多标签问题、大

类单标签问题,回归问题。它用全部的训练样本进行学习。使用adaboost分类器可以排除一些不必

要的训练数据特征,并将关键放在关键的训练数据上面。

该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类

能力。

①先通过对N个训练样本的学习得到第一个弱分类器;

②将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第

二个弱分类器;

③将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学

习得到第三个弱分类器

④最终经过提升的强分类器。即某个数据被分为哪一类要通过......的多数表决。

对于boosting算法,存在两个问题:   

①如何调整训练集,使得在训练集上训练的弱分类器得以进行;   

②如何将训练得到的各个弱分类器联合起来形成强分类器。

针对以上两个问题,AdaBoost算法进行了调整:

①使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练

数据样本上;   

②将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较

大的权重,而分类效果差的分类器具有较小的权重。 

与Boosting算法不同的是,AdaBoost算法不需要预先知道弱学习算法学习正确率的下限即弱分类

器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖

掘弱分类器算法的能力。 

AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应

的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样

本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突显出来,从

而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。依次类推,

经过T次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终

想要的强分类器。  

AdaBoost算法的具体步骤如下:   

①给定训练样本集S,其中X和Y分别对应于正例样本和负例样本;T为训练的最大循环次数;

②初始化样本权重为1/n ,即为训练样本的初始概率分布;   

③第一次迭代:(1)训练样本的概率分布相当,训练弱分类器;(2)计算弱分类器的错误率;(3)选取合

适阈值,使得误差最小;(4)更新样本权重;经T次循环后,得到T个弱分类器,按更新的权重叠

加,最终得到的强分类器。   

Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应性

(Adaptive)调整。上述算法中迭代了T次的主循环,每一次循环根据当前的权重分布对样本x定一个

分布P,然后对这个分布下的样本使用弱学习算法得到一个弱分类器,对于这个算法定义的弱学习

算法,对所有的样本都有错误率,而这个错误率的上限并不需要事先知道,实际上。每一次迭代,

都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概率,增大弱分类器分

类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均。 

2. Adaboosting训练过程  

基于AdaBoost算法的强分类器训练

输入:(1)训练样本集

其中,y =-1,训练样本xi为负样本,y =+1,训练样本xi为正样本

(2)弱分类器的学习算法L

(3)弱分类器的数目M

输出:一个由M个弱分类器构成的强分类器

训练过程:

①初始化训练样本xi权重若正负样本数目一致,则

若正负样本数目分别为N+,N-,则

②for m=1,...,M

训练弱分类器估计弱分类器fm(x)的分类错误率em,如:

(3)估计弱分类器fm(x)的权重

(4)基于弱分类器fm(x)调整各样本权重,并归一化调整:

归一化:,强分类器

算法实现:

3. Adaboost算法例子

 

 

 

 

 

 

 

3. Adaboost算法计算案例

①初始化训练数据权重相等,训练第⼀个学习器。该假设每个训练样本在基分类器的学习中作用相

同,这⼀假设可以保证第⼀步能够在原始数据上学习基本分类器H1 (x)。

②AdaBoost反复学习基本分类器,在每⼀轮m = 1, 2, ..., M顺次的执⾏下列操作:

在权值分布为D的训练数据上,确定基分类器;

计算该学习器在训练数据中的错误率:

计算该学习器的投票权重:

根据投票权重,对训练数据重新赋权:

将下⼀轮学习器的注意⼒集中在错误数据上,重复执⾏上述计算步骤m次;

③对m个学习器进⾏加权投票:

给定下⾯这张训练数据表所示的数据,假设弱分类器由xv产生,其阈值v使该分类器在训练数据集

上的分类误差率最低,试用Adaboost算法学习⼀个强分类器:

问题解答:

①初始化训练数据权重相等,训练第⼀个学习器:

②AdaBoost反复学习基本分类器,在每⼀轮m = 1, 2, ..., M顺次的执⾏下列操作:

当m=1的时候:在权值分布为D的训练数据上,阈值v取2.5时分类误差率最低,故基本分类器为:

(6,7,8被分错)

计算该学习器在训练数据中的错误率:

计算该学习器的投票权重:

根据投票权重,对训练数据重新赋权:

根据下公式,计算各个权重值:

经计算得,D2的值为:

计算过程:

分类器H1(x)在训练数据集上有3个误分类点。

当m=2的时候:

在权值分布为D 的训练数据上,阈值v取8.5时分类误差率最低,故基本分类器为:

(3,4,5被分错)

计算该学习器在训练数据中的错误率:

计算该学习器的投票权重:

根据投票权重,对训练数据重新赋权:经计算得,D 的值为:

分类器H2(x)在训练数据集上有3个误分类点。

当m=3的时候:

在权值分布为D 的训练数据上,阈值v取5.5时分类误差率最低,故基本分类器为:

计算该学习器在训练数据中的错误率:

计算该学习器的投票权重:

根据投票权重,对训练数据重新赋权:经计算得,D4的值为:

分类器H3(x)在训练数据集上的误分类点个数为0。

③对m个学习器进行加权投票,获取最终分类器:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS学习

CSS学习 1. 什么是css?2.css引入方式2.1 内嵌式2.2 外联式2.3 行内式2.4 引入方式特点 3. 基础选择器3.1 标签选择器3.2 类选择器3.3 id选择器3.4 通配符选择器 1. 什么是css? 2.css引入方式 2.1 内嵌式 2.2 外联式 提示: 需要在html文件中link目标样式表; 2.3 行内式 注意:…

【EventBus】EventBus源码浅析

二、EventBus源码解析 目录 1、EventBus的构造方法2、订阅者注册 2.1 订阅者方法的查找过程2.2 订阅者的注册过程1. subscriptionsByEventType 映射:2. typesBySubscriber 映射:2.3 总结订阅者的注册过程 3、事件的发送 3.1 使用Post提交事件3.2 使用p…

【STM32】DMA直接存储器存取

1 DMA简介 DMA(Direct Memory Access)直接存储器存取 可以直接访问STM32的存储器的,包括运行SRAM、程序存储器Flash和寄存器等等 DMA可以提供外设寄存器和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节…

【lombok】从easyExcel read不到值到cglib @Accessors(chain = true)隐藏的大坑

背景: 在一次使用easyExcel.read 读取excel时,发现实体类字段没有值,在反复测试后,发现去掉Accessors(chain true)就正常了,为了验证原因,进行了一次代码跟踪 由于调用链路特别长,只列举出部分代码&#x…

二蛋赠书十一期:《TypeScript入门与区块链项目实战》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

【C 剑指offer】有序整型矩阵元素查找 {杨氏矩阵}

目录 题目内容: 思路: 图形演示: 复杂度分析 C源码: /** *************************************************************************** ******************** ********************* ******…

DWA(dynamic window approach)算法学习

系列文章目录 A*算法学习-CSDN博客 弗洛伊德算法(Floyd)和路径平滑弗洛伊德算法(Smooth Floyd)学习-CSDN博客 D*算法学习-CSDN博客 目录 系列文章目录 前言 搜索空间 —减小速度搜索空间 优化过程 —最大化目标函数 算法实…

《洛谷深入浅出》斯特林数

斯特林数被分为三种,但我们这只介绍两种。即第一类斯特林数,和第二类斯特拉数。 第一类斯特林数指的是: 将n个不同元素,变成m个圆排列的方案数量。第一类斯特林数,分为有符号和无符号。通常我们只研究无符号斯特林数&…

Layui深入

1、代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>注册页面</title> <style> .container { max-width: 600px; margin: 0 auto; padding: 20px; …

Proxmox VE 安装 OpenWrt 配置旁路由教程

话不多说&#xff0c;本篇文章将记录如何在 Proxmox VE 环境通过虚拟机安装 OpenWrt 配置旁路由的过程&#xff0c;仅做参考。 PVE 创建虚拟机 名称随意&#xff0c;GuestOS 选择 Linux&#xff0c;不使用任何 iso 镜像。&#xff08;记住你的 VMID&#xff09; 清空将要创建…

超越边界:Mistral 7B挑战AI新标准,全面超越Llama 2 13B

引言 在人工智能领域&#xff0c;模型的性能一直是衡量其价值和应用潜力的关键指标。近日&#xff0c;一个新的里程碑被设立&#xff1a;Mistral AI发布了其最新模型Mistral 7B&#xff0c;它在众多基准测试中全面超越了Llama 2 13B模型&#xff0c;标志着AI技术的一个重大进步…

python实现形态学建筑物指数MBI提取建筑物及数据获取

前言 形态学建筑物指数MBI通过建立建筑物的隐式特征和形态学算子之间的关系进行建筑物的提取[1]。 原理 上图源自[2]。 实验数据 简单找了一张小图片&#xff1a; test.jpg 代码 为了支持遥感图像&#xff0c;读写数据函数都是利用GDAL写的。 import numpy as np import …

静态路由的原理和配置

一.路由器的工作原理 首先我们知道路由器是工作在网络层的&#xff0c;那就是三层设备。网络层的功能主要为&#xff1a;不同网段之间通信、最佳路径选择也就是逻辑地址&#xff08;ip地址&#xff09;寻址、转发数据。 1.路由器是什么 路由器是能将数据包转发到正确的目的地…

【MySQL】MySQL数据库基础--什么是数据库/基本使用/MySQL架构/存储引擎

文章目录 1.什么是数据库2.主流数据库3.基本使用3.1MySQL安装3.2连接服务器3.3服务器管理3.4服务器&#xff0c;数据库&#xff0c;表关系3.5使用案例3.6数据逻辑存储 4.MySQL架构5.SQL分类6.存储引擎6.1什么是存储引擎6.2查看存储引擎6.3存储引擎对比 1.什么是数据库 对于回答…

【vue实战项目】通用管理系统:信息列表,信息的编辑和删除

本文为博主的vue实战小项目系列中的第七篇&#xff0c;很适合后端或者才入门的小伙伴看&#xff0c;一个前端项目从0到1的保姆级教学。前面的内容&#xff1a; 【vue实战项目】通用管理系统&#xff1a;登录页-CSDN博客 【vue实战项目】通用管理系统&#xff1a;封装token操作…

Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

Docker容器:Centos7搭建Docker镜像私服harbor

目录 1、安装docker 1.1、前置条件 1.2、查看当前操作系统的内核版本 1.3、卸载旧版本(可选) 1.4、安装需要的软件包 1.5、设置yum安装源 1.6、查看docker可用版本 1.7、安装docker 1.8、开启docker服务 1.9、安装阿里云镜像加速器 1.10、设置docker开机自启 2、安…

Linux驱动入门 —— LED点灯驱动程序

目录 IMX6ULL 的 GPIO 操作方法 GPIO 操作相关名词 IMX6ULL 的 GPIO 模块结构 GPIO 模块内部 读 GPIO​编辑 写 GPIO​编辑 LED 点灯驱动程序 字符设备驱动程序框架 编写驱动程序的步骤&#xff1a; 先编写驱动程序代码&#xff1a; 再编写测试程序代码&#xff1a;…

神经网络是如何工作的? | 京东云技术团队

作为一名程序员&#xff0c;我们习惯于去了解所使用工具、中间件的底层原理&#xff0c;本文则旨在帮助大家了解AI模型的底层机制&#xff0c;让大家在学习或应用各种大模型时更加得心应手&#xff0c;更加适合没有AI基础的小伙伴们。 一、GPT与神经网络的关系 GPT想必大家已…

理解linux中反向映射与应用

反向映射的作用是根据物理页&#xff0c;找到全部相关进程的vma。 主要有两个结构&#xff0c;anon_vma_chain链表&#xff0c;和 anon_vma->rb_root红黑树 打个不恰当的比喻&#xff1a;可以简单认为&#xff0c;红黑树是用来读的&#xff08;遍历找全部映射的vm_area&am…