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

一、说明

        时间这是集成技术下的第 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 modelSimilarity 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 = 0Similarity 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.33Similarity 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.5Good and Normal
0.5, 0.5, 0.5, 0.5 and -0.5Step 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 = 2Similarity 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.8Similarity Weight of the root node
------------------------------------
Similarity Weight = 0.142Step 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 = 1Leaf Node B:Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))= -0.5^2 / 0.25 = 0.25 / 0.25 = 1Root 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 = 2Leaf 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.33Leaf Node D:Similarity Weight = Σ(Residuals) ^2 / Σ(probability * (1 - probability))= (0.5 + 0.5)^2 / (0.25 + 0.25) = 1 / 0.5 = 2Root 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.8Now 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 = 0Information 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.rhkb.cn/news/222745.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LangChain入门指南:定义、功能和工作原理

LangChain入门指南&#xff1a;定义、功能和工作原理 引言LangChain是什么&#xff1f;LangChain的核心功能LangChain的工作原理LangChain实际应用案例如何开始使用LangChain 引言 在人工智能的浪潮中&#xff0c;语言模型已成为推动技术革新的重要力量。从简单的文本生成到复…

ChatGPT一周年:开源语言大模型的冲击

自2022年末发布后&#xff0c;ChatGPT给人工智能的研究和商业领域带来了巨大变革。通过有监督微调和人类反馈的强化学习&#xff0c;模型可以回答人类问题&#xff0c;并在广泛的任务范围内遵循指令。在获得这一成功之后&#xff0c;人们对LLM的兴趣不断增加&#xff0c;新的LL…

《每天一分钟学习C语言·七》指针、字节对齐等

1、 对于二维数组如a[3][4]可以当做有三个元素的一维数组&#xff0c;每个元素包含四个小元素。 2、 printf(“%-5d”, i); //负号表示左对齐&#xff0c;5d表示空五个光标的位置 3、 栈&#xff1a;先进后出&#xff0c;堆&#xff1a;先进先出 4、 &#xff08;1&#xff…

yolo-nas无人机高空红外热数据小目标检测(教程+代码)

前言 YOLO-NAS是目前最新的YOLO目标检测模型。从一开始&#xff0c;它就在准确性方面击败了所有其他 YOLO 模型。与之前的 YOLO 模型相比&#xff0c;预训练的 YOLO-NAS 模型能够以更高的准确度检测更多目标。但是我们如何在自定义数据集上训练 YOLO NAS&#xff1f; 这将是我…

基于ERC20代币协议实现的去中心化应用平台

文章目录 内容简介设计逻辑ERC20TokenLoanPlatform 合约事件结构体状态变量函数 Remix 运行实现部署相关智能合约存款和取款贷款和还款 源码地址 内容简介 使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的…

[Angular] 笔记 7:模块

Angular 中的模块(modules) 是代码在逻辑上的最大划分&#xff0c;它类似于C, C# 中的名字空间&#xff1a; module 可分为如下几种不同的类型&#xff1a; 使用模块的第一个原因是要对代码进行逻辑上的划分&#xff0c;第二个非常重要的原因是为了实现懒惰加载(lazy loading)&…

Koordinator 支持 K8s 与 YARN 混部,小红书在离线混部实践分享

作者&#xff1a;索增增&#xff08;小红书&#xff09;、宋泽辉&#xff08;小红书&#xff09;、张佐玮&#xff08;阿里云&#xff09; 背景介绍 Koordinator 是一个开源项目&#xff0c;基于阿里巴巴在容器调度领域多年累积的经验孵化诞生&#xff0c;目前已经支持了 K8s…

hiveserver负载均衡配置

一.安装nginx 参数我的另一篇文章&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/135152478 二.配置nginx服务参数 worker_processes 1; events { worker_connections 1024; } stream { upstream hiveserver2 { # least_conn; # 使用最少连接路由…

【Amazon 实验①】使用Amazon WAF做基础 Web Service 防护

文章目录 一、实验介绍二、实验环境准备三、验证实验环境四、Web ACLs 配置 & AWS 托管规则4.1 Web ACLs 介绍4.2 Managed Rules 托管规则4.3 防护常见威胁类型&#xff08;sql注入&#xff0c;XSS&#xff09;4.4 实验步骤4.4.1 创建Web ACL4.4.2 测试用例4.4.3 测试结果4…

csrf自动化检测调研

https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md CSRF 攻击者在钓鱼站点&#xff0c;可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求&#xff1a; <form action"https://my.site.com/me/something-destructive" metho…

The Cherno C++笔记 03

目录 Part 07 How the C Linker Works 1.链接 2.编译链接过程中出现的错误 2.1 缺少入口函数 注意:如何区分编译错误还是链接错误 注意&#xff1a;入口点可以自己设置 2.2 找不到自定义函数 2.2.1缺少声明 2.2.2自定义函数与引用函数不一致 2.3 在头文件中放入定义 …

编译原理----算符优先级的分析(自底向上)

自底向上分析的分类如下所示&#xff1a; 算符优先分析 算符优先分析只规定算符之间的优先关系&#xff0c;也就是只考虑终结符之间的优先关系。 &#xff08;一&#xff09;若有文法G&#xff0c;如果G没有形如A->..BC..的产生式&#xff0c;其中B和C为非终结符&#xff…

rtsp视频在使用unity三维融合播放后的修正

1 rtsp 接入 我们使用unity UE 等三维渲染引擎中使用c编写插件来接入rtsp 视频。同时做融合的时候&#xff0c;和背景的三维颜色要一致&#xff0c;这就要使用视频融合修正技术。包括亮度&#xff0c;对比度&#xff0c;饱和度的修正。在单纯颜色上的修正可以简单使用rgb->…

NXP iMX8MM 通过 TFTP和 NFS 启动示例

By Toradex秦海 1). 简介 嵌入式 Linux 设备开发调试时候为了方便部署各种配置和修改常用的一种方法就是通过网络启动&#xff0c;具体就是将 Linux Kernel&#xff08;以及 Device tree/Device Tree overlays) 从开发主机的 TFTP 服务加载&#xff0c; Linux rootfs 通过开发…

听GPT 讲Rust源代码--src/tools(18)

File: rust/src/tools/rust-analyzer/crates/ide-ssr/src/from_comment.rs 在Rust源代码中的from_comment.rs文件位于Rust分析器&#xff08;rust-analyzer&#xff09;工具的ide-ssr库中&#xff0c;它的作用是将注释转换为Rust代码。 具体来说&#xff0c;该文件实现了从注…

【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成…

Centos7在安装Graylog时新安装MongoDB报错端口不监听服务不启动无法运行启动失败

由于虚拟机服务器上需要安装Graylog需要安装MongoDB&#xff0c;尝试官网下载安装包&#xff0c;和yum安装均无法正常启动&#xff0c;折腾了好几天&#xff0c;重装了十几次&#xff0c;网上搜索了很多很多资料&#xff0c;均无法正常运行&#xff0c;百度上搜索各种文档&…

华为端口隔离简单使用方法同vlan下控制个别电脑不给互通

必须得用access接口&#xff0c;hybrid口不行 dhcp enable interface Vlanif1 ip address 192.168.1.1 255.255.255.0 dhcp select interface interface MEth0/0/1 interface GigabitEthernet0/0/1 port link-type access port-isolate enable group 1 interface GigabitEther…

Node.js-模块化(二)

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层将系统拆分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 1.2 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&…

Python之Django项目的功能配置

1.创建Django项目 进入项目管理目录&#xff0c;比如&#xff1a;D盘 执行命令&#xff1a;diango-admin startproject demo1 创建项目 如果提示diango命令不存在&#xff0c;搜索diango-admin程序的位置&#xff0c;然后加入到环境变量path中。 进入项目&#xff0c;cd demo…