机器学习算法(12) — 集成技术(Boosting — Xgboost 分类)

news2024/11/23 21:02:51

一、说明

        时间这是集成技术下的第 4 篇文章,如果您想了解有关集成技术的更多信息,您可以参考我的第 1 篇集成技术文章。

机器学习算法(9) - 集成技术(装袋 - 随机森林分类器和......

        在这篇文章中,我将解释XgBoost 分类算法XgBoost代表Extreme Gradient Boosting,这是一种旨在优化分布式梯度提升的提升技术。它是训练机器学习模型的有效且可扩展的方法。这种学习方法结合弱模型来产生更强的预测,极端梯度。它由于能够处理大型数据集并在分类和回归等机器学习任务中实现最先进的性能而被广泛使用。

二、关于XGBoost

        XGBoost 是梯度提升的一种更正则化的形式。XGBoost 使用高级正则化(L1 和 L2),提高了模型泛化能力。与梯度提升相比,XGBoost 提供了高性能。它的训练速度非常快,并且可以跨集群并行。

        XGBoost 通常使用树作为基学习器,该决策树由一系列二元问题组成,最终预测发生在叶子上。XGBoost 本身就是一种集成方法。迭代地构建树,直到满足停止标准。

        XGBoost 使用CART(分类和回归树)决策树。CART 是在每个叶子中包含实值分数的树,无论它们是用于分类还是回归。如有必要,可以将实值分数转换为类别以进行分类。

2.1 何时使用 XGBoost?

  • 当训练样本数量较多时。理想情况下,训练样本大于 1000 个且特征少于 100 个,或者我们可以说特征数量 < 训练样本数量。
  • 当存在分类特征和数字特征的混合或仅数字特征时。

2.2 什么时候不应该使用 XGBoost?

  • 图像识别
  • 计算机视觉
  • 当训练样本数量明显小于特征数量时。

        让我们举一个简单的例子来更好地理解它。银行根据您的工资信用评分(这是第一、第二和第三个特征)来批准您的信用卡贷款。信用评分分为“不良”、“正常”和“良好” 3 类。由于我们正在解决分类问题,输出 0 或 1。XgBoost 也可用于解决多类分类问题。

工资贷款审批数据集

三、如何使用Xgboost

3.1 步骤1 -

        启动XgBoost分类器时,第一步是创建特定的基础模型。在分类问题的情况下,该模型将始终输出 0.5 的概率(输出为零或一)。要计算残差,请从输出值 0.5 中减去实际值。例如,如果批准率为 0.5,则残差将为0–0.5 = -0.5。该基本模型作为所有后续决策树的基础,必须按顺序构建。基本模型本身也是一种决策树,因为它接受输入并提供 0.5 的默认概率。创建基本模型后,下一步就是转向第一个基于顺序的决策树。

残值

3.2 第2步 -

        然后,我们使用相关特征创建二元决策树。然后我选择“薪水”作为第一个功能,您有 2 个类别,分别是>50K 和 ≤50K。在XGBoost中,每当你创建一棵树时,你都需要做一个二元分类器。即使您有两个以上类别,这也适用。

        为此,您需要创建一个二元分类器并对其进行划分。叶节点始终是两个。然后,根据数据的相似度计算相似度权重,求出Gain。

To come up with these points, we use the values,

≤50K
-0.5, 0.5, 0.5 and -0.5 

>50K
-0.5, 0.5 and 0.5

3.3 步骤 3 —

        接下来,我们计算相似度权重,其中涉及使用公式,

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability) + λ)

λ= Hyperparameter that prevents overfitting = 0 (For now consider λ value as 0)

probability = This taken from the base model


Similarity Weight of the left leaf node 
------------------------------------
 
Similarity Weight = -0.5 + 0.5 + 0.5 + -0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
Similarity Weight = 0 / 0.25 + 0.25 + 0.25 + 0.25 + 0.25
                  = 0 / 1.25 = 0

Similarity Weight of the right leaf node
------------------------------------
Similarity Weight = -0.5 + 0.5 + 0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
Similarity Weight = 0.5 ^ 2 / 0.75 = 0.25 / 0.75 = 1/3 = 0.33


Similarity Weight of the root node
------------------------------------
Similarity Weight = 0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) ++ 0.5 * (1 - 0.5) ++ 0.5 * (1 - 0.5) ++ 0.5 * (1 - 0.5)]
Similarity Weight = 0.25 / 1.75 = 1/7 = 0.142

3.4 步骤4-

        计算信息增益。为此,我们可以将所有叶节点相似性权重加在一起,并从中减去根节点的相似性权重。

Total Gain with respect to the split = 0 + 0.33 - 0.14 = 0.19

        好的!我们选择了Salary特征进行分割,我们得到的 Gain 为0.19但我们也可以开始从Credit功能中进行拆分。如果我们开始拆分 Credit 特征,则需要进行二元分类器。叶节点始终是两个。但你有两个以上的类别(“坏”、“正常”和“好”)。为此,您可以像这样进行拆分,

Step 1
=======
Bad
-0.5, -0.5

Good and Normal
0.5, 0.5, 0.5, 0.5 and -0.5

Step 2
==========

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))

Similarity Weight of the left leaf node 
------------------------------------
 
Similarity Weight = -0.5 + -0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
Similarity Weight = 1 / 0.25 + 0.25 
                  = 1 / 0.5 = 2

Similarity Weight of the right leaf node
------------------------------------
Similarity Weight = 0.5 + 0.5 + 0.5 + 0.5 - 0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
Similarity Weight = 2.25 / 1.25 = 1.8

Similarity Weight of the root node
------------------------------------
Similarity Weight = 0.142


Step 3
=========

Total Gain with respect to the split  = 2 + 1.8 - 0.142 = 3.658

        现在您可以看到,如果我们从 Credit 功能中分离出来,我们可以获得最高的 Gain。然后您可以使用信用功能。您可以对所有组合执行此操作,并选择提供最高增益的根节点特征

        好的,现在我选择我的第一个单据作为信用功能,并继续对该功能进行拆分。我必须再次进行二元拆分,我将为第二次拆分选择“薪资”功能,并将其分类为 ≤50K 和 >50K。现在您可以看到有多少数据点超过 ≤50K 和 >50K。

        现在我们可以计算第二级叶节点的相似度权重。

Leaf Node A:

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))
                  = -0.5^2 / 0.25 = 0.25 / 0.25 = 1

Leaf Node B:

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))
                  = -0.5^2 / 0.25 = 0.25 / 0.25 = 1


Root Node:

Similarity Weight = -0.5 + -0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
Similarity Weight = 1 / 0.25 + 0.25 
                  = 1 / 0.5 = 2


Leaf Node C:

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))
                  = (0.5 + 0.5 + -0.5)^2 / (0.25 + 0.25 + 0.25) = 0.25 / 0.25 = 1
                  = 0.25 / 0.75 = 1/3 = 0.33


Leaf Node D:

Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))
                  = (0.5 + 0.5)^2 / (0.25 + 0.25) = 1 / 0.5 = 2

Root Node: 
Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))
                  = 0.5 + 0.5 + 0.5 + 0.5 - 0.5 ^ 2/ [0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5) + 0.5 * (1 - 0.5)]
                  = 2.25 / 1.25 = 1.8



Now we can calculate the Information Gain:
Information Gain  Left Tree = Similarity Weight of A + Similarity Weight of B - Similarity Weight of Root Node 

                            = 1 + 1 - 2 = 0

Information Gain  Left Tree = Similarity Weight of C + Similarity Weight of D - Similarity Weight of Root Node 

                            = 0.33 + 2 - 1.8 = 0.53

        我们将根据信息增益来比较哪种分割是最好的。现在我已经创建了整个决策树。让我们考虑推理部分。假设一条新记录将进入模型以及我们如何计算输出。首先,该行将转到基本模型。那么基本模型将给出 0.5 的概率。现在我们如何从基本模型计算真实概率?为此,我们可以应用称为Logs的东西。我们可以使用一个公式来计算概率。

P = Base Model Probability
Log (P/1-P)
Log (0.5 / 1 - 0.5) = Log(1) = 0

        如果我们仔细看看,这等于零。这意味着初始值将为零并通过二元决策树。

        所得值将添加到属于不良信用限额且薪资≤ 50K 的分支机构。相似度权重为1,我们传递学习率参数(α)。

0 + α (1)   α = Learning Rate =  0.001

        将学习率参数乘以相似度权重1,得到参考值。我们使用 Alpha 值(α)作为我们的学习率,它可以是基于我们在其他地方定义的学习参数的最小值。为了解决这个分类问题,我们应用称为 Sigmoid(σ) 的激活函数。这可确保输出值落在零和一之间。

σ (0 + α (1))

        同样,您也可以创建其他决策树。

        所以最后你的新记录的输出将是这样的,

σ (0 + α1 (Dicision Tree Similarty Weight1) + α2 (Dicision Tree Similarty Weight2) + α3 (Dicision Tree Similarty Weight3) + α4 (Dicision Tree Similarty Weight4) + ..... + αn (Dicision Tree Similarty Weightn))

        类似地,该算法会生成多个决策树,并将它们相加组合以生成更好的估计。

四、XGBoost的优点

  1. 性能:XGBoost 在各种机器学习任务中产生高质量结果方面拥有良好的记录,尤其是在 Kaggle 竞赛中,它一直是获胜解决方案的热门选择。
  2. 可扩展性:XGBoost 专为机器学习模型的高效且可扩展的训练而设计,使其适用于大型数据集。
  3. 可定制性:XGBoost 具有广泛的超参数,可以调整这些超参数来优化性能,从而使其高度可定制。
  4. 处理缺失值:XGBoost 具有处理缺失值的内置支持,可以轻松处理经常包含缺失值的现实数据。
  5. 可解释性:与某些难以解释的机器学习算法不同,XGBoost 提供了特征重要性,可以更好地理解哪些变量在做出预测时最重要。

五、XGBoost 的缺点

  1. 计算复杂性:XGBoost 可能是计算密集型的,特别是在训练大型模型时,使其不太适合资源受限的系统。
  2. 过度拟合:XGBoost 很容易过度拟合,特别是在小数据集上训练或模型中使用太多树时。
  3. 超参数调整:XGBoost 有许多可以调整的超参数,因此正确调整参数以优化性能非常重要。然而,找到最佳参数集可能非常耗时并且需要专业知识。
  4. 内存要求:XGBoost 可能会占用大量内存,尤其是在处理大型数据集时,因此不太适合内存资源有限的系统。

这就是 XgBoost 分类器的全部内容。我希望你能更好地理解这个算法。在另一个教程中见。

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

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

相关文章

先进制造身份治理现状洞察:从手动运维迈向自动化身份治理时代

在新一轮科技革命和产业变革的推动下&#xff0c;制造业正面临绿色化、智能化、服务化和定制化发展趋势。为顺应新技术革命及工业发展模式变化趋势&#xff0c;传统工业化理论需要进行修正和创新。其中&#xff0c;对工业化水平的判断标准从以三次产业比重标准为主回归到工业技…

服务器数据恢复-昆腾存储StorNext文件系统下raid5数据恢复案例

服务器数据恢复环境&#xff1a; 昆腾某型号存储&#xff0c;StorNext文件存储系统。 共有9个分别配置了24块磁盘的磁盘柜&#xff0c;其中8个磁盘柜存放普通数据&#xff0c;1个磁盘柜存放元数据。 存放元数据的磁盘柜中的24块磁盘组建了8组RAID1阵列和1组4盘RAID10阵列&#…

Ubuntu 常用命令之 history 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 history命令在Ubuntu系统中用于显示用户执行过的命令列表。这个命令在bash shell中非常有用&#xff0c;特别是当你需要记住你之前执行过的命令时。 history命令的参数如下 -c&#xff1a;清除历史记录。-d offset&#xff1a;删…

全功能知识付费小程序系统源码是什么?有什么好处?

全功能知识付费小程序系统源码&#xff0c;是一个集课程管理、用户管理、支付管理、数据分析等于一体的综合性解决方案。它支持多种形式的课程内容&#xff0c;如视频、音频、图文等&#xff0c;满足不同用户的学习需求。同时&#xff0c;系统具备完善的支付功能&#xff0c;保…

怎么开通独立站支付?独立站客户退款谁支付运费?——站斧浏览器

怎么开通独立站支付&#xff1f; 选择支付服务提供商&#xff1a;开通独立站支付首先需要选择一个可靠的支付服务提供商。目前市场上有许多知名的支付服务提供商&#xff0c;如支付宝、微信支付、PayPal等。根据自己的业务需求和目标市场选择合适的支付服务提供商。 注册账号…

目前电视盒子哪个最好?工程师盘点超值电视盒子推荐

因工作原因每天都会跟各种各样类型的电视盒子打交道&#xff0c;拆机、维修&#xff0c;身边朋友在挑选电视盒子的时候会问我目前电视盒子哪个最好&#xff0c;哪些电视盒子最值得入手&#xff0c;我整理了五款超值电视盒子推荐给大家&#xff0c;在挑选电视盒子时可以把这几款…

两套高质量可视化模板套件,需要进!

小编整理了两套高质量可视化模板套件&#xff0c;均来自于山海鲸可视化&#xff0c;需要源文件可私。 一、「星曜蓝」主题可视化模板 可以自由调用模板库中的所有内容&#xff0c;轻松搭建风格统一的地图、工厂、城市多种数字孪生项目。真免费、0代码数字孪生设计搭建&#xf…

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用

前面一直在讲 Requests 模块如何使用&#xff0c;那都是在请求阶段要做的事情&#xff0c;相信很多网友都在等一个能够开始爬网站信息的教程&#xff0c;今天它来了&#xff0c;今天我要给大家讲一个很简单易懂的库&#xff1a;BeautifulSoup4。 一、概述&安装 Beautiful…

BWS2000倾角传感器c++测试代码【2】

问题一&#xff1a;串口频率的初始化 由于本次项目之中使用的线长为40米的倾角传感器&#xff0c;需要对于其频率输出存在要求&#xff0c;如何测试其频率如下所示&#xff1a; 如上所示相应的软件&#xff0c;软件中存在一句如果设置后不保存&#xff0c;则存在传感器断电后设…

众和策略:大盘涨手中的股票却大跌,到底怎么回事?

大盘涨手中的股票却大跌&#xff0c;究竟怎么回事&#xff1a; 1、大盘上涨是权重股所造成的 大盘上涨可能是受一些权重比较大的工作所影响&#xff0c;比如证券工作、钢铁工作、银行工作等等&#xff0c;这些工作的大涨&#xff0c;可以拉升大盘的上涨&#xff0c;可是其它工…

C++20形式的utf-8字符串转宽字符串,不依赖编译器编码形式

默认的char[]编码都是要看编译器编译选项的&#xff0c;你选了ANSI那它就是ANSI&#xff0c;你选了UTF8那它就是UTF8. 【注意&#xff1a;经典DevC只支持ANSI编码&#xff08;痛苦&#xff09;&#xff1b;上图是小熊猫DevC&#xff0c;则有这个选项】 这一点对我的代码造成了…

20231220将NanoPC-T4(RK3399)开发板的Android10的SDK按照Rockchip官方挖掘机开发板编译打包刷机之后启动跑飞

20231220将NanoPC-T4(RK3399)开发板的Android10的SDK按照Rockchip官方挖掘机开发板编译打包刷机之后启动跑飞 2023/12/20 17:19 简略步骤&#xff1a;rootrootrootroot-X99-Turbo:~/3TB$ tar --use-compress-programpigz -xvpf rk3399-android-10.git-20210201.tgz rootrootro…

Poi实现复杂Excel导出,理解POI操作Excel思路!!!

前言 对于简单excel报表导出&#xff0c;有很多简单的工具如easypoi&#xff0c;而且现在网上已经有很多工具类整合easypoi使用起来非常方便。但是简单的弊端往往无法适配一些负责场景&#xff0c;而我们实际生产中面临的都是客户自定以的一个负责报表导出&#xff0c;这是利用…

【RTOS学习】源码分析(信号量和互斥量 事件组 任务通知)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f353;信号量和互斥量&#x1f345;创建&#x1f345;Take&#x1f345;Give &#x…

百川大模型AI对话实战——Python开发一个对话机器人

百川大模型开放提供API体验中心&#xff0c;体验不错&#xff0c;有小伙伴也对搭建自己的对话机器人比较兴趣&#xff0c;今天通过Python来简单介绍下&#xff0c;如何调用百川大模型的API来构建自己的小产品。 在开发环境中安装Python&#xff0c;如何安装&#xff1f;参照网…

(附源码)基于Springboot框架的网络投票系统 计算机毕设42855

基于springboot网络投票系统 摘 要 随着全球Internet的迅猛发展和计算机应用的普及&#xff0c;特别是近几年无线网络的广阔覆盖以及无线终端设备的爆炸式增长&#xff0c;使得人们能够随时随地的访问网络&#xff0c;以获取最新信息、参与网络活动、和他人在线互动。为了能及时…

Python Pandas 多重索引DataFrame数据(第19讲)

Python Pandas 多重索引DataFrame数据(第19讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

VScode安装C/C++编译器步骤

一、安装C/C插件 二、安装 MinGW-w64 工具链 使用国内源 git clone https://gitee.com/cuihongxi/ubuntu2-mac.git 下载后进入到VScode文件夹下&#xff0c;点击msys2-x86_64-20231026.exe进行安装 完成后&#xff0c;确保选中“立即运行 MSYS2”框&#xff0c;然后选择“完…

董事长陈小华辞职,上市一年半的快狗打车让奇瑞亏掉3.5亿元

近年来&#xff0c;即时货运行业以高速高效的优势&#xff0c;在头部电商的带动下迎来了新一波的流量红利。然而诞生于“58系”的同城货运平台快狗打车&#xff08;HK:02246&#xff09;却起了个大早&#xff0c;赶了个晚集。 12月19日&#xff0c;快狗打车发布公告称&#xf…

本地MinIO存储服务如何创建Buckets并实现公网访问上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…