机器学习——Boosting、提升树、随机森林(Random Forest)学习笔记

2023-11-19

大数据工作室学习打卡 第 N 次

一、Boosting(提升)

1.什么是集成学习?

首先,我们得先了解什么是集成学习,集成学习是一种通过组合弱学习器来产生强学习器的通用且有效的方法,简单来说,就是通过训练多个分类器,然后将其组合起来,从而达到更好的预测性能,提高分类器的泛化能力。
如下图:
在这里插入图片描述

2.什么是boosting(提升)?

boosting和集成学习什么关系?

前面我们了解了集成学习,那么集成学习的关键就在于如何组合多个弱学习器,所以依次发展出了三大主要框架:

  • bagging
  • boosting
  • stacking

显而易见,boosting是集成学习中的一种框架。

boosting每次对训练集进行转换后重新训练出基模型,最后再综合所有的基模型预测结果。主要算法有AdaBoost(adaptive boosting自适应增强) 和 GBDT。
如下图:
在这里插入图片描述
boosting可以用来提高其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting 框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成基分类器;

每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,这样在给定训练轮数 n 后,就可产生 n 个基分类器,然后Boosting框架算法将这 n个基分类器进行加权融合,产生一个最后的结果分类器,在这 n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。在产生单个的基分类器时可用相同的分类算法,也可用不同的分类算法,这些算法一般是不稳定的弱分类算法,如神经网络(BP) ,决策树(C4.5)等。

3.AdaBoost(自适应提升)

AdaBoost被称为是Boosting算法家族中的代表算法。曾被称为数据挖掘十大算法之一。

是由Yoav Freund和Robert Schapire在1995年提出。Adaboost是一种基于boost思想的一种自适应的迭代式算法。通过在同一个训练数据集上训练多个弱分类器(weak classifier), 然后把这一组弱分类器ensmble起来, 产生一个强分类器(strong classifier)。可以说是一个meta algorithms。

AdaBoost 的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数

整个Adaboost 迭代算法就3步:

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
  3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

该算法的优点如下:

(1) 具有较低的泛化误差(low generalization)

(2) 改善了分类器的分类正确率

(3) 可以将这个算法配合多个分类算法使用。 例如, 我们可以选择C4.5, CART, SVM, 贝叶斯分类器, 或者decision stump等作为我们的弱分类器。

(4)容易coding

(5)不容易出现overfiting(过拟合)现象

缺点如下:

对outliers(异常点)非常的sensitive。 因为异常点容易分错, 会逐级影响后面的产生的弱分类器。

Adaboost每一轮迭代的时候都会训练一个新的弱分类器。 直至达到某个预定的足够小的错误率。

二、提升树(boosting tree)

1.什么是提升树?

提升树是以 分类树 或 回归树 为基分类器。

提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。

创新点在于第一个回归树预测的效果可能一般,但是第二个回归树把第一个预测错的残差作为输入, 也就是说,如果第一个点的值被预测错误,那么在下一个回归树里面的模型的权值的就会变大,相当于吸取前一个模型的经验,从而提高模型的效果。

2.提升树模型

如果我们取一个基本分类器 if (x > 30) 1 else 0,这可以看做是由一个根节点直接连接两个叶结点的简单决策树,即所谓的决策树桩(decision stump)。提升树模型可以表示为决策树的加法模型。
在这里插入图片描述
其中,T(x;θm)表示决策树;θm为决策树的参数;M为树的个数。

3.梯度提升算法(GBDT)

提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失函数时,每一步优化是很简单的。但对一般损失函数而言,往往每一步优化并不是那么容易。针对这一问题,Freidman提出了梯度提升(gradient boosting)算法。这是利用最速下降法的近似方法,器其关键是利用损失函数的负梯度在当前模型的值:
在这里插入图片描述

作为回归问题提升树算法中的残差的近似值,拟合一个回归树。

梯度提升算法:
输入:训练数据集T=(x1,y1),(x2,y2),…(xN,yN),xi∈X⊂Rn,yi∈y⊂R; 损失函数L(y, f(x));
输出:回归树f(x).

三、随机森林(Random Forest)

1.什么是bagging

前面在介绍集成学习的时候提到了集成学习的三大主要框架:

  • bagging
  • boosting
  • stacking
    Bagging框架算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1996年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。

2.什么是随机森林?

随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,是在bagging基础上做了修改的一种算法。

基本思路是:
(1)从样本集中用Bootstrap采样(有放回的采样)选出n个样本(重采样);
(2)从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树;
(3)重复以上两步m次,即建立了m棵CART决策树;
(4)这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类随机性在于n个样本的随机,及其k个特征属性的选择,这两个随机。

随机森林的优点有 :
(1)对于很多种资料,它可以产生高准确度的分类器;
(2)它可以处理大量的输入变数;
(3)它可以在决定类别时,评估变数的重要性;
(4)在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
(5)它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
(6)它提供一个实验方法,可以去侦测variable interactions;
(7)对于不平衡的分类资料集来说,它可以平衡误差;
(8)它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用;
(9)使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
(10)学习过程是很快速的。

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

机器学习——Boosting、提升树、随机森林(Random Forest)学习笔记 的相关文章

随机推荐

  • vue项目中使用iconfont阿里图标库

    1 进入icon 官网 iconfont 阿里巴巴矢量图标库 2 根据搜索选择自己想要的图片 添加到项目中或者新建项目 如下图 3 添加之后如下图 点击下载至本地 4 下载本地解压后的文件如下图 5 在vue项目中 css新建一个文件夹 把
  • JS时间格式和时间戳的相互转换

    时间戳转化为日期的方式 var timestamp 1527521052 var newDate new Date newDate setTime timestamp 1000 Mon May 28 2018 console log new
  • 计算机视觉知识点-图像增强

    图像增强技术通过对训练图像进行一系列随机更改以生成相似但不同的训练示例来扩展训练数据集的规模 随机更改训练示例可以减少模型对某些属性的依赖 从而提高模型的泛化能力 我们可以以不同的方式裁剪图像 以使感兴趣的对象出现在不同的位置 从而减少了模
  • YoungTalk STM32入门第12步——CRC校验和芯片ID

    1 CRC 循环冗余校验 计算单元 2 96位芯片唯一序列号 1 CRC 循环冗余校验 计算单元 CRC计算单元使用一个固定的多项式发生器 从一个32位的数据字产生一个CRC码 在众多应用中 基于CRC的技术被用于验证数据传输或者存储的一致
  • Qt -信号槽实现原理

    一 简介 QT信号槽的实现实质是什么 回调函数 简要说一下信号与槽的底层原理 信号与槽的实现是借助了Qt 的元对象系统 元对象系统有一个元对象编译器 程序编译之前会有一个预处理过程 预处理将一个类 对象中的信号 槽的字符串值分别保存在一个容
  • 小白学股票基金_1

    债券要集资 利息比银行同等期限的高 但是不能随意提取现金 如果未到期就提取就不能按约定的利息给于 不可买卖 可以抵压 股票为单向交易 只能在低时进入买涨 T 1交易当天不能卖出 固定的开收盘时间 易受庄家控制 全资动作 多少钱买多少股 必须
  • lmg_Model Links and Torrents

    lmg Model Links and Torrents Changelog MDY 4 bit GPU Model Requirements 4 bit CPU llama cpp RAM Requirements LLaMA 16 bi
  • GraphicsLayer知识点

    require esri layers GraphicsLayer function GraphicsLayer code goes here 包含一个或多个图形特征的图层 每个地图都包含默认的GraphicsLayer 可以使用map g
  • 如何访问虚拟机中的Web服务

    需求 1 在虚拟机Vmware中安装了CentOS6 5 虚拟机使用NAT的方式 2 在CentOS中安装了APACHE 并且使用 http 192 168 237 128可以正常访问 3 想在其他windows机器上访问该虚拟机的web服
  • linux系统的系统性学习 (持续更新)

    分类 系统启动过程 第一步 内核的引导 第二步 运行 init 第三步 系统初始化 第四步 建立终端 第五步 用户登录系统 关机 查看系统基本信息 CPU相关 内存相关 查看网络信息 用户 服务 进程相关 磁盘管理 df 命令 du 命令
  • Thrift、Dubbo、Spring Cloud 和 gRPC

    何为RPC RPC Remote Procedure Call 远程过程调用 是一种进程间通信方式 是一种技术的思想 而不是规范 它允许程序调用另一个地址空间 通常是共享网络的另一台机器上 的过程或函数 而不用程序员显式编码这个远程调用的细
  • 计算机常用函数及写法,计算机常用的函数公式有哪些?

    01 计算机常用的函数公式包括RANK函数 COUNTIF函数 IF函数 ABS函数 AND函数 AVERAGE函数 COLUMN 函数等 RANK函数是Excel计算序数的主要工具 它的语法为 RANK number ref order
  • 现代OpenGL教程 01 - 入门指南

    文章转载自 http huangwei pro 2015 05 modern opengl1 以下是我学习opengl得到的启示最多的一篇文章 我强烈地建议大家去读一下这位大神的相关系列的文章 还有https github com tomd
  • Allegro约束管理器的设置

    1 打开约束管理器 2 设置管理器 黄色表示未打开 右击 选择analysis mode打开 3 添加物理规则 修改的数据 4 建立组 同时选中几个网络 右击选择Create New Group新建一个组 修改组的规则里面的网络也都跟着修改
  • Orangepi Zero2 全志H616 的初识

    Q 为什么要学习香橙派 A 在之前对于Linux系统的学习 其内容主要是对于系统API的掌握 而很难进行外设的交互 Linux系统很强大 如果能够结合外设 可以做出STM32 C52等单片机无法实现的复杂项目 而我们可以通过将Linux系统
  • Python 中导入csv数据的三种方法

    这篇文章主要介绍了Python 中导入csv数据的三种方法 内容比较简单 非常不错 具有一定的参考借鉴价值 需要的朋友可以参考下微点阅读小编收集的文章介绍 Python 中导入csv数据的三种方法 具体内容如下所示 1 通过标准的Pytho
  • lnmp集群的搭建及优化

    文章目录 lnmp 名词解释 搭建 mysql nginx php 一键安装 优化及应用 Discuz论坛搭建 php增加memcache模块 nginx添加memcache模块 tomcat lnmp 名词解释 LNMP是指一组通常一起使
  • 服务器上配置jupyter并使用浏览器远程连接

    一 服务器上配置jupyter 1 安装jupyter 执行两条安装命令 conda install ipykernel conda install jupyter 2 添加配置文件 jupyter notebook generate co
  • vi vim快捷键

    快捷键 行为 x 删除光标所在后面的字符 X 删除光标所在前面的字符 d e 删除光标所在位置到本单词末尾 d E 删除光标所在位置到本单词末尾包括标点符号 d b 删除光标所在位置到前面单词 d B 删除光标所在位置到前面单词包括标点符号
  • 机器学习——Boosting、提升树、随机森林(Random Forest)学习笔记

    大数据工作室学习打卡 第 N 次 一 Boosting 提升 1 什么是集成学习 首先 我们得先了解什么是集成学习 集成学习是一种通过组合弱学习器来产生强学习器的通用且有效的方法 简单来说 就是通过训练多个分类器 然后将其组合起来 从而达到