AdaBoost算法实例详解

2023-11-08

提升树Boosting Tree算法实例详解_程大海的博客-CSDN博客

从提升树Boosting Tree过度到梯度提升Gradient Boosting_程大海的博客-CSDN博客

GBDT梯度提升之回归算法个人理解_程大海的博客-CSDN博客_梯度回归算法

GBDT梯度提升之二分类算法个人理解_程大海的博客-CSDN博客_gbdt二分类

GBDT梯度提升之多分类算法个人理解_程大海的博客-CSDN博客_gbdt可以多分类吗

XGBoost算法个人理解_程大海的博客-CSDN博客_xgboost 叶子节点权重

交叉熵损失与极大似然估计_程大海的博客-CSDN博客_极大似然估计和交叉熵

使用泰勒展开解释梯度下降方法参数更新过程_程大海的博客-CSDN博客

AdaBoost算法实例详解_程大海的博客-CSDN博客_adaboost算法实例


AdaBoost算法其实很精炼,算法流程也好理解,但是看了算法的解释版本之后,什么前向分布算法,什么指数损失函数之后有点迷糊了。抛开这些理论性的推导不谈(其实是因为能力有限),通过例子直观的了解AdaBoost算法的计算过程。


简要叙述一下AdaBoost算法的主要过程:

AdaBoost为每个数据样本分配权重,权重符合概率分布,初始权重符合均匀分布,串行训练M个模型,依据每轮训练的模型的错误率(被误分类样本的权重之和)确定当前模型在最终模型中的权重,以及更新训练样本的权重,误分类样本权重升高,分类正确的样本权重降低。

下图的算法流程来自于《统计学习方法》。


下面通过具体的实例来理解AdaBoost算法的流程,例子来自于《统计学习方法》。

第一轮迭代:

此时得到的组合模型中只有一个 ,此时 的分类结果就是最终模型的分类结果。第一轮迭代中6,7,8(6,7,8指的是x的值,不是指的序号)被误分类。此时得到的组合模型在训练数样本上的预测结果如下:

X

y

分类结果

0

1

0.4236

0.4236

1

正确

1

1

0.4236

0.4236

1

正确

2

1

0.4236

0.4236

1

正确

3

-1

-0.4236

-0.4236

-1

正确

4

-1

-0.4236

-0.4236

-1

正确

5

-1

-0.4236

-0.4236

-1

正确

6

1

-0.4236

-0.4236

-1

错误

7

1

-0.4236

-0.4236

-1

错误

8

1

-0.4236

-0.4236

-1

错误

9

-1

-0.4236

-0.4236

-1

正确

其中sign符号函数如下:

第二轮迭代:

第二轮迭代中3,4,5被误分类,此时得到的最终模型是前两轮模型的线性组合。那么在当前的组合条件下 的分类结果是怎样的?

X

y

分类结果

0

1

0.4236

0.6496

1.0732

1

正确

1

1

0.4236

0.6496

1.0732

1

正确

2

1

0.4236

0.6496

1.0732

1

正确

3

-1

-0.4236

0.6496

0.226

1

错误

4

-1

-0.4236

0.6496

0.226

1

错误

5

-1

-0.4236

0.6496

0.226

1

错误

6

1

-0.4236

0.6496

0.226

1

正确

7

1

-0.4236

0.6496

0.226

1

正确

8

1

-0.4236

0.6496

0.226

1

正确

9

-1

-0.4236

-0.6496

-1.0732

-1

正确

第三轮迭代:

第三轮迭代中0,1,2,9被误分类,此时得到的最终模型是前三轮模型的线性组合。那么在当前的组合条件下 的分类结果是怎样的?

X

y

分类结果

0

1

0.4236

0.6496

-0.7514

0.3218

1

正确

1

1

0.4236

0.6496

-0.7514

0.3218

1

正确

2

1

0.4236

0.6496

-0.7514

0.3218

1

正确

3

-1

-0.4236

0.6496

-0.7514

-0.5254

-1

正确

4

-1

-0.4236

0.6496

-0.7514

-0.5254

-1

正确

5

-1

-0.4236

0.6496

-0.7514

-0.5254

-1

正确

6

1

-0.4236

0.6496

0.7514

0.9774

1

正确

7

1

-0.4236

0.6496

0.7514

0.9774

1

正确

8

1

-0.4236

0.6496

0.7514

0.9774

1

正确

9

-1

-0.4236

-0.6496

0.7514

-0.3218

-1

正确

经过三轮迭代之后,在训练集上的错误率为0。


AdaBoost是如何侧重于误分类的样本的?

经过上面的算法流程介绍,下面我们就来通过一个简图看一下AdaBoost是如何通过调整训练样本的权重来是模型逐步关注分类错误的样本的。

 1、初始化权重。首先在第1轮的时候,初始化一个权重分布

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AdaBoost算法实例详解 的相关文章

随机推荐

  • 洛谷P1149(NOIP2008) 火柴棒等式 (C语言 + 详细注释)

    题目描述 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是00 用火柴棍拼数字0 9的拼法如图所示 注意 加号与等号各自需要两根火柴棍 如果A B 则A B C与B
  • 使用taro或react框架的,针对微信小程序隐私协议的组件封装,网上找了很久都没有相关模版,只有自己写了一个,现分享给有困难的同伴

    注意 我是使用hooks的 其他可以参考封装思路大同小异的 首先写一个PrivacyAgreement js文件 import useState useEffect from react Taro 额外添加的 hooks 要从 tarojs
  • TypeScript基础

    目录 基本使用 使用场景 枚举类型 any 类型 类型断言 TypeScript 泛型 泛型在函数上的应用 泛型在接口上的应用 泛型在类型别名上的应用 字面量类型 将字面量当做一个类型去使用 基本使用 思考以下代码 两个变量的类型分别是什么
  • Java基础面试题笔记(三)

    目录 Java基础面试题笔记 面试题 答案与解析 Java基础面试题笔记 面试题 51 类 ExampleA 继承 Exception 类 ExampleB 继承 ExampleA try throw new ExampleB b catc
  • TensorRT使用笔记

    一 简介 1 官网 https docs nvidia com deeplearning sdk tensorrt install guide index html NVIDIA TensorRT是一个C 库 可以进行NVIDIA GPU的
  • javaweb个人主页设计(html+css+js)

    目录 1 前言和要求 1 1 前言 1 2 设计要求 2 预览 2 1 主页页面 2 2 个人简介 2 3 个人爱好 2 4 个人成绩有代码 但是图片已省略 可以根据自己情况添加 2 5 收藏夹 3 代码实现 3 1 主页 3 2 个人简介
  • centos7 部署 Redis

    从源安装Redis 一 安装Redis 1 1 下载源文件 1 2 编译源文件 1 2 1 解压文件 1 2 2 编译Redis 1 2 3 安装Redis 1 2 4 启动 Redis 二 Redis设置 2 1 缓存设置 2 2 red
  • 记录一下关于golang版本升级的那些问题

    一 windows系统go版本升级后 出现报错 报错内容 如下错误出现在为项目设置GOROOT时 报错如下 The selected directory is not a valid home for Go Sdk 报错原因 将go版本从1
  • 一文了解视频编解码原理

    视频编解码算法分为传统算法和基于深度学习的方法 本文主要介绍视频编解码技术的原理 部分内容和图片参考网上技术博客 链接已放在文章末尾 一 基本术语 数字图像的定义及理解可以参考这篇文章 数字图像处理笔记 一文搞懂数字图像基础 颜色深度 存储
  • Qt:开源与商业版区别,以及LGPL和闭源程序

    Qt 开源与商业版区别 以及LGPL和闭源程序 Qt是一个跨平台的C 应用程序框架 使用简单 功能强大 Qt分为开源版本和商业版本 两个版本之间有很多不同之处 本文将详细介绍Qt的开源版本和商业版本的区别 以及两种许可证 LGPL和闭源程序
  • sctp 编程接口指南

    SCTP 套接字接口 当 socket 调用为 IPPROTO SCTP 创建套接字时 它会调用特定于 SCTP 的套接字创建例程 针对 SCTP 套接字执行的套接字调用会自动调用相应的 SCTP 套接字例程 在一对一套接字中 每个套接字都
  • conda使用yml配置文件,复制环境,导出环境

    首先 conda是python虚拟环境管理的软件 对于代码需要迁移到别的机器上时 采用配置文件收集环境依赖 这样 将代码迁移的另一个机器时 使用一条命令一次性安装 快速复现代码 更加方便简洁 能很大程度上减少环境迁移 安装错误版本导致的版本
  • xBranch——新一代金融前端系统

    xBranch是集设计开发 测试部署和运维于一体的金融前端系统实施环境 充分体现了体验良好 实施快捷 成本较低 易于整合 运行高效 外设支持方便等优势 以 面向客户 面向营销 面向流程 面向体验 为设计理念 构建了统一的客户视图和以客户为中
  • java自动化测试语言高级之MySQL 连接

    java自动化测试语言高级之MySQL 连接 文章目录 java自动化测试语言高级之MySQL 连接 Java MySQL 连接 Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库
  • TypeError: __init__() got an unexpected keyword argument ‘transport_options‘

    在较新版本的 Elasticsearch Python 客户端中 确实没有名为 transport options 的参数 要设置传输选项 需要使用 transport class 参数来创建自定义传输类 并在传输类中设置选项 以下是一个示
  • Python打包的艺术(一)- 综述

    本文转载至 http blog chinaunix net uid 15174104 id 3863249 html Python打包的艺术是一个专题 我将在这个专题里分享自己对构建 管理和发布Python软件包的理解 这个专题 将涉及几个
  • 初识密码学

    初识密码学 摩斯密码 猪圈密码 键盘密码 普通键盘密码 用键盘换数字 拼音九键 栅栏密码 恺撒密码 维吉尼亚密码 希尔密码 摩斯密码 加密之前先来认识一下摩尔斯电码 点划 图像 二叉树 SOS并不是任何求救英文的缩写 而是因为在摩尔斯电码中
  • 无锁和偏向锁有什么区别?

    无锁和偏向锁是 Java 中的两种轻量级锁实现 它们和重量级锁相比 具有更高的性能和更低的开销 它们之间的区别如下 无锁 CAS 自旋锁 无锁是一种不需要使用锁的同步技术 它的实现依赖于 CAS Compare And Swap 操作 通过
  • ARM:分散加载

    1 GCC编译器下的分散加载 ld文件 SECTIONS ram text flash start LOADADDR ram text ram text ram text start user iic o text ALIGN 4 All
  • AdaBoost算法实例详解

    提升树Boosting Tree算法实例详解 程大海的博客 CSDN博客 从提升树Boosting Tree过度到梯度提升Gradient Boosting 程大海的博客 CSDN博客 GBDT梯度提升之回归算法个人理解 程大海的博客 CS
Powered by Hwhale