【机器学习笔记】 9 集成学习

集成学习方法概述

Bagging

从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果:
在这里插入图片描述
假设一个班级每个人的成绩都不太好,每个人单独做的考卷分数都不高,但每个人都把自己会做的部分做了,把所有考卷综合起来得到成绩就会比一个人做的高

Boosting

训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果。
在这里插入图片描述

Stacking

将训练好的所有基模型对训练基进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。
在这里插入图片描述

Random Forest(随机森林)

用随机的方式建立一个森林。随机森林算法由很多决策树组成,每一棵决策树之间没有关联。建立完森林后,当有新样本进入时,每棵决策树都会分别进行判断,然后基于投票法给出分类结果。

  • 优点
    在数据集上表现良好,相对于其他算法有较大的优势
    易于并行化,在大数据集上有很大的优势;
    能够处理高维度数据,不用做特征选择。

Random Forest(随机森林)是 Bagging 的扩展变体,它在以决策树为基学习器构建Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括 随机森林包括四个部分:

  1. 随机选择样本(放回抽样);
  2. 随机选择特征;
  3. 构建决策树;
  4. 随机森林投票(平均)。
    在这里插入图片描述
    随机选择样本和 Bagging 相同,采用的是Bootstraping 自助采样法;随机选择特征是指在每个节点在分裂过程中都是随机选择特征的(区别与每棵树随机选择一批特征)。
    这种随机性导致随机森林的偏差会有稍微的增加(相比于单棵不随机树),但是由于随机森林的“平均”特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。
    在这里插入图片描述

AdaBoost算法

AdaBoost(Adaptive Boosting,自适应增强),其自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
用一句话概括该思想就是后一个模型的训练永远是在前一个模型的基础上完成
在这里插入图片描述

  • 算法思想
    • 初始化训练样本的权值分布,每个样本具有相同权重;
    • 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器;
    • 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。
    在这里插入图片描述

GBDT算法

GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,该算法由多棵决策树组成,GBDT 的核心在于累加所有树的结果作为最终结果,所以 GBDT 中的树都是回归树,不是分类树,它是属于 Boosting 策略。GBDT 是被公认的泛化能力较强的算法。

  • GBDT 由三个概念组成:Regression Decision Tree(即 DT)、Gradient Boosting(即 GB),和 Shrinkage(缩减)
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
损失函数的负梯度在当前模型的值作为提升树的残差的近似值来拟合回归树
在这里插入图片描述
在这里插入图片描述

XGBoost

XGBoost 是大规模并行 boosting tree 的工具,它是目前最快最好的开源 boosting tree 工具包
,比常见的工具包快 10 倍以上。XGBoost 和GBDT 两者都是 boosting 方法,除了工程实现及解决问题上的一些差异外,最大的不同就是目标函数的定义。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • XGBoost的分裂方式
    使用贪心方法,选增益( 𝑔𝑎𝑖𝑛 )最大的分裂方式。
    贪心方法,众多𝑔𝑎𝑖𝑛中找到最大值做为最优分割节点(split point),因此模型会将所有样本按照(一阶梯度)从小到大排序,通过遍历,查看每个节点是否需要分割,计算复杂度是:决策树叶子节点数 – 1。

LightGBM

由微软提出,主要用于解决 GDBT 在海量数据中遇到的问题,以便其可以更好更快地用于工业实践中,其相对 XGBoost 具有训练速度快、内存占用低的特点。

  • LightGBM与XGBoost相比,主要有以下几个优势:
    1)更快的训练速度
    2)更低的内存消耗
    3)更好的准确率
    4)分布式支持,可快速处理海量数据

  • LightGBM 的主要改进
    LightGBM与XGBoost相比,主要有以下几个改进:
    • 基于梯度的单边采样算法(Gradient-based One-Side Sampling, GOSS);
    • 互斥特征捆绑算法(Exclusive Feature Bundling, EFB);
    • 直方图算法( Histogram );
    • 基于最大深度的 Leaf-wise 的垂直生长算法;
    LightGBM = XGBoost + GOSS + EFB+ Histogram

基于梯度的单边采样算法(Gradient-based One-Side Sampling, GOSS)

主要思想是通过对样本采样的方法来减少计算目标函数增益时候的复杂度。
GOSS 算法保留了梯度大的样本,并对梯度小的样本进行随机抽样,为了不改变样本的数据分布,在计算增益时为梯度小的样本引入一个常数进行平衡。
如果一个样本的梯度很小,说明该样本的训练误差很小,或者说该样本已经得到了很好的训练(well-trained)。

  • 算法思想
    输入:训练数据,迭代步数d,大梯度数据的采样率a,小梯度数据的采样率b,损失函数和若学习器的类型(一般为决策树)
    输出:训练好的强学习器
    (1)根据样本点的梯度的绝对值对它们进行降序排序;
    (2)对排序后的结果选取前a*100%的样本生成一个大梯度样本点的子集;
    (3)对剩下的样本集合(1-a)*100%的样本,随机的选取b *(1-a)*100%个样本点,生成一个小梯度样本点的集合;
    (4)将大梯度样本和采样的小梯度样本合并;
    (5)将小梯度样本乘上一个权重系数1−𝑎𝑏 ;
    (6)使用上述的采样的样本,学习一个新的弱学习器;
    (7)不断地重复(1)~(6)步骤直到达到规定的迭代次数或者收敛为止。
    在这里插入图片描述

互斥特征捆绑算法(Exclusive Feature Bundling, EFB)

高维特征往往是稀疏的,而且特征间可能是相互排斥的(如两个特征不同时取非零值),如果两个特征并不完全互斥(如只有一部分情况下是不同时取非零值),可以用互斥率表示互斥程度。EFB算法指出如果将一些特征进行融合绑定,则可以降低特征数量。
论文给出特征合并算法,其关键在于原始特征能从合并的特征中分离出来
在这里插入图片描述

直方图算法

直方图算法的基本思想是将连续的特征离散化为𝑘个离散特征,同时构造一个宽度为𝑘的直方图用于统计信息(含有 𝑘 个 bin)。利用直方图算法我们无需遍历数据,只需要遍历 𝑘 个 bin 即可找到最佳分裂点。
在这里插入图片描述
在这里插入图片描述

  • 直方图加速
    在构建叶节点的直方图时,我们还可以通过父节点的直方图与相邻叶节点的直方图相减的方式构建,从而减少了一半的计算量。即:一个叶子节点的直方图可以由它的父亲节点的直方图与其兄弟的直方图做差得到。如节点分裂成两个时,右边叶子节点的直方图等于其父节点的直方图减去左边叶子节点的直方图。从而大大减少构建直方图的计算量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

一键彻底清理!解密如何清理电脑C盘垃圾的绝佳方法

随着我们在电脑上进行各种活动,C盘往往会逐渐积累大量的垃圾文件,这可能导致系统运行缓慢、启动时间延长以及存储空间被占用。对于许多用户而言,如何高效而一键地清理电脑C盘的垃圾成为一个备受关注的问题。如何清理电脑c盘垃圾?在…

树与二叉树

树与二叉树 文章目录 树与二叉树一、树的概念及结构1.、树的概念2、树的相关概念1.3 树的表示 二、二叉树1.概念2、特殊的二叉树3、二叉树的性质4、二叉树的存储结构 三、二叉树的顺序结构及实现1、二叉树的顺序结构2、堆的概念及结构3、堆的实现 四、二叉树链式结构的实现1、遍…

【Unity2019.4.35f1】配置JDK、NDK、SDK、Gradle

目录 JDK NDK SDK 环境变量 Gradle JDK JDK:jdk-1.8版本Java Downloads | Oracle 下载要登录,搜索JDK下载公用账号:Oracle官网 JDK下载 注册登录公共账号和密码_oracle下载账号-CSDN博客 路径:C:\Program Files\Java\jd…

RichAF 中文版(下)

原文:Rich AF : The Winning Money Mindset That Will Change Your Life 译者:飞龙 协议:CC BY-NC-SA 4.0 五、我出生时不是富人,但我的孩子会是 投资部分 当涉及投资时,我有三个关于致富的真相要分享: …

外贸人大部分都复工了吧

这几天是属于国家规定的节后上班时间,估计大部分人都已经开始复工了。作为粤西地区小伙伴中的一员,表示虽然身在广州,心却还在高州,毕竟年例在这些天才刚刚开始,我们那边每年最热闹的时候就是年例了! 由于…

AI破局俱乐部,你要了解的都在这里

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)

阅读导航 引言一、生产者消费者模型二、环形队列简介三、基于环形队列的生产者消费者模型(C 代码模拟实现)⭕Makefile文件⭕ . h 头文件✅sem.hpp✅ringQueue.hpp ⭕ . cpp 文件✅testMain.cpp 温馨提示 引言 在上一篇文章中,我们深入探讨了…

S32 Design Studio PE工具配置Watch Dog

配置操作 在一个component下面可以创建多个看门狗,一般会有个限制,就是不能创建多个 看门狗比较简单,在configurations list里面新建软件看门狗,配置里面的名字、超时时间等配置即可。 代码对应 生成的代码在watchdog1.c和 wat…

CV论文--2024.2.19

1、Self-Play Fine-Tuning of Diffusion Models for Text-to-Image Generation 中文标题:自我对弈微调扩散模型,用于文本到图像生成 简介:在生成人工智能(GenAI)领域,微调扩散模型仍然是一个未被充分探索的…

搭建本地git仓库 gogs本地大家 CentOS搭建本地git仓库 CentOS部署gogs

运行环境 操作系统:CentOS7.8 64位 使用mysql5.7.44数据库 选用依赖 yum install vim wget unzip -y本文选择使用WLNMP集成环境 第一步 配置epel源(必须) yum install epel-release第二步 添加wlnmp源 这里选择自动脚本 curl -fsSL "https://sh.wlnmp.com/wlnmp…

算法模板 7.拓扑排序

拓扑排序 用来解决循环依赖相关问题!!! 一个有向无环图一定存在一个拓扑序列!一定存在至少一个入度为0的点 有向无环图也被称作拓扑图 先把入度为0的点压入队列,然后进行广度优先搜索(找到队头&#xf…

遥感影像数据处理分析软件与ChatGPT集成、多光谱数据分析与实践、高光谱数据分析与实践

目录 第一章 遥感科学与AI基础 第二章 遥感影像数据处理分析软件与ChatGPT集成 第三章 多光谱数据分析与实践专题 第四章 高光谱分析与实践专题 更多应用 将最新的人工智能技术与实际的遥感应用相结合,提供不仅是理论上的,而且是适用和可靠的工具和…

【天锐绿盾】| 数据防泄漏软件——防止公司核心文件数据\资料外泄、泄露!

数据防泄漏软件 数据防泄漏(DLP)软件是一种专门设计用于保护企业和组织内部敏感信息的网络安全工具。 PC端:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 它们通常包含以下核心功能: 文件加密…

2、windows环境下vscode开发c/c++环境配置(一)

前言:VSCode是微软出的一款轻量级编辑器,它本身只是一款文本编辑器而已,并不是一个集成开发环境(IDE),几乎所有功能都是以插件扩展的形式所存在的。因此,我们想用它编程,不只是把vscode下载下来就行&#x…

C语言系列(所需基础:大学C语言及格)-3-字符串/ASCII码表

文章目录 一、字符串二、ASCII码表 一、字符串 用" "来定义字符串&#xff1a; #include <stdio.h>int main() {"";//空字符串"hkl";//由""定义的字符串return(0); }用数组来存储字符串&#xff0c;并打印&#xff1a; #incl…

深度学习系列——“试错”发展直觉

试错法以发展直觉&#xff1a;面对复杂的深度学习问题时&#xff0c;学习者可以通过不断尝试不同解决方案&#xff0c;并观察其对模型性能的影响&#xff0c;逐渐形成一套针对特定任务的有效策略。这些经验有助于提升对深度学习模型工作原理的直观理解。 那么试错法是如何发展直…

专修戴尔R730xd服务器闪电灯 心跳亮黄灯故障

2024年开年第二天接到一个用户反馈说他公司有一台DELL PowerEdge R730xd服务器春节前由于市电问题意外断电关机了&#xff0c;刚好碰上春节就没去开机了&#xff0c;今天工厂开工服务器通电发现开不了机&#xff0c;且机器过了一会后报了2个黄灯错误&#xff0c;如下图&#xf…

SpringCloud-基于Feign远程调用

Spring Cloud 是一个用于构建分布式系统的开发工具包&#xff0c;它提供了一系列的微服务组件&#xff0c;其中之一就是 Feign。Feign 是一种声明式的 Web 服务客户端&#xff0c;它简化了在 Spring Cloud 中进行远程调用的过程。本文将介绍如何在 Spring Cloud 中使用 Feign 进…

这里有几个0?

注意n最大取 #include<iostream> #define endl \n using namespace std; void solve(long long x) {int cnt 0, sum 0;while (x) {cnt x & 1;sum;x >> 1;}cout << sum-cnt << endl; } int main() {int t;long long n;cin >> t;while (t-…

【力扣白嫖日记】1890.2020年最后一次登录

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1890.2020年最后一次登录 表&#xff1a;Logins 列名类型user_idinttime_stampvarchar (user_id, time_sta…