【第一篇章】初识XGBoost 揭开神秘面纱

XGBoost发展历程

在这里插入图片描述
在这里插入图片描述

XGBoost显著优势

在这里插入图片描述
在这里插入图片描述

XGBoost核心概念

XGBoost(eXtreme Gradient Boosting)是一种在机器学习领域广泛使用的集成学习算法,特别是在分类、回归和排序任务中表现出色。其基本原理建立在决策树、梯度提升和损失函数优化等核心概念之上。以下是对XGBoost基本原理的深入浅出介绍:

一、决策树基础

决策树是一种基本的分类与回归方法,它通过构建树状结构来模拟决策过程。在XGBoost中,决策树作为基学习器(弱学习器)被使用。每个决策树通过评估一系列的条件(即特征值)来做出预测。对于分类问题,决策树通过评估If-Then-Else True/False特征问题树来预测标签;对于回归问题,则通过树结构来估算连续数值。

二、梯度提升原理

梯度提升是一种集成学习方法,它通过逐步构建弱学习器来优化模型的预测能力。在XGBoost中,梯度提升的具体实现是通过迭代地训练新的决策树来拟合之前模型的残差(即实际值与预测值之间的差异)。每一轮迭代都关注于前一轮模型的不足,通过新的决策树来弥补这些不足,从而逐步提升整体模型的预测能力。

三、损失函数优化

损失函数描述了模型预测值与真实值之间的差异,是模型优化的关键。在XGBoost中,损失函数的优化是通过梯度下降(或更具体地说,是牛顿法梯度更新)来实现的。与传统的GBDT(Gradient Boosting Decision Tree)相比,XGBoost对损失函数进行了二阶泰勒展开,保留了更多有关目标函数的信息,从而有助于更精确地优化模型。

具体来说,XGBoost在每一轮迭代中,都会计算当前模型的损失函数关于预测值的一阶导数和二阶导数,并通过这些导数信息来指导新决策树的训练。新决策树的目标是尽可能拟合当前模型的残差,从而减小整体损失函数的值。

四、正则化与过拟合控制

为了防止过拟合,XGBoost在损失函数中引入了正则化项。这些正则化项包括树的复杂度(如叶子节点的数量、叶子节点值的平方和等),通过控制这些正则化项的大小,可以有效地限制模型的复杂度,从而避免过拟合。

五、并行计算与分布式计算

XGBoost支持并行计算和分布式计算,这使得它能够高效地处理大规模数据集。在并行计算方面,XGBoost利用多核CPU的并行计算能力来加速决策树的构建和损失函数的计算;在分布式计算方面,XGBoost可以将数据集分布在多个计算节点上,通过并行地训练多个决策树来加速整体模型的训练过程。

XGBoost简单案例

本章先介绍构建XGBoost模型的主要机器学习算法——决策树。决策树是XGBoost最常用的基学习器,在机器学习领域中具有显著特点。决策树不像线性回归和逻辑回归那样将列值乘以数字权重,而是通过询问有关列的问题来分割数据。
构建决策树就像玩问题测试游戏。例如,一个决策树有一个温度列,该列可以分成两组,一组温度高于70摄氏度,一组温度低于70摄氏度。下一个分割可以基于季度进行,如果是夏天,就跟随一个分支,否则跟随另一个分支。现在数据已经被分为4个独立的组。通过分割将数据分成新群组的过程将继续,直到算法达到所需的精度水平。
决策树能够创建成千上万个分支,直到将每个样本在训练集中准确映射到正确的目标为止。但容易对数据过拟合,换句话说,可能会过分贴合训练数据。

第一个决策树模型

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings('ignore')
df_census = pd.read_csv('/Users/c/jupyter lab/CSDN/梯度提升算法XGBoost从入门到精通/国外人口普查数据集(列名英文版).csv')
df_census = pd.get_dummies(df_census)
X = df_census.iloc[:,:-1]
y = df_census.iloc[:,-1]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=2)
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
clf = DecisionTreeClassifier(random_state=2)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy_score(y_pred, y_test)

感兴趣的可以试下准确率是多少,数据集我会上传至本篇博文标题下方。

决策树内部结构

在这里插入图片描述
上图是来自本篇人口普查数据集(国外)的一个决策树,只有两个分叉。顶部是根节点,True/False箭头是分支,数据点是节点。在树的末端,节点被归类为叶节点。
下面详细研究该图:

根节点

树根节点位于顶部。在第一行marital-status是一个二进制列,因为所有值都是0(否定)或1(肯定)。第一个分割是基于是否已婚,树的左侧是True分支,表示未婚;右侧是False分支,表示已婚。

基尼系数

根节点的第二行数据是基尼系数,是决策树用来决定如何进行分割的误差值,这里的基尼系数为0.364。分割目标是找到一个导致误差最低的切割点。基尼系数为0意味着0个误差,基尼系数为1表示全部为误差。基尼系数为0.5表示元素分布是均等的,那么预测的准确率不比随机猜测更高。误差越接近于0,误差越低。根节点上的基尼系数为0.364,表示训练集是不平衡的,其中36.4%属于类别1。
PS: 基尼系数的应用没想到这么广泛!

样本、值和类别

根节点表明有24420个样本,这是训练集中的样本总数。下面一行是[18575,5845]。由于排序方式为先0后1,因此代表有18575个样本值为0(收入低于5万美元),5845个样本值为1(收入高于5万美元)。

True/False节点

第一个分割后,左边分支是True,右边是False。这种左右模型贯穿了整个决策树。在第二行的左侧节点中,分割capital_gain <= 7073.5被用于后续节点,其余信息来自前一次分割。在13160位未婚人士中,有12311位收入低于5万美元,有849位收入高于5万美元。基尼系数为0.121,接近零代表误差很低。

树桩

只有一个分割的树被称为树桩,尽管树桩本身不能成为强大的预测器,但到了第4章,我们会明白,在使用提升器时,树桩可以变得非常强大。

叶节点

树最末端的节点被称为叶节点,叶节点饮食所有最终预测。
最左侧的叶节点基尼系数为0.093,这表示它正确预测了12938个案例中的12304个,准确率为95%,即对于资本收益低于7073.50的未婚用户来说,其收入不会超过5万美元的可能性有95%。
其他叶节点的信息也可以类似地进行解读。

本篇未完,持续更新中,欢迎给博客其他内容提宝贵建议!数据集已上传。

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

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

相关文章

shell-awk命令详解

目录 一.概述 二.工作原理 三.工作流程 1.运行模式 2.运行流程 四.基本语法 1.命令格式 2.常用变量  五.变量类型 1.内建变量 2.内置变量 3.BEGIN END运算  4.awk高级用法 5.awk if语句 6.BEGIN END循环 一.概述 AWK是一种处理文本文件的语言&#xff0c;是一…

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析 任务一、操作系统取证解析:总结:任务一、操作系统取证解析: A 集团某电脑系统被恶意份子攻击并控制,怀疑其执行了破坏操作,窃取了集团内部的敏感信息,现请分析 A 集团提供的系统镜像和内存镜像,找到…

国产大模型的逆袭:技术路径的策略与实践

〔探索AI的无限可能&#xff0c;微信关注“AIGCmagic”公众号&#xff0c;让AIGC科技点亮生活〕 一.聚焦长文本&#xff0c;国产大模型已有赶超GPT之势 1.1 理科能力差距较大&#xff0c;注重文科能力的提升 整体比较而言&#xff0c;国内大模型与GPT-4&#xff08;官网&…

树与二叉树【数据结构】

前言 之前我们已经学习过了各种线性的数据结构&#xff0c;顺序表、链表、栈、队列&#xff0c;现在我们一起来了解一下一种非线性的结构----树 1.树的结构和概念 1.1树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一…

【计算机网络】ICMP报文实验

一&#xff1a;实验目的 1&#xff1a;掌握ICMP报文的各种类型及其代码。 2&#xff1a;掌握ICMP报文的格式。 3&#xff1a;深入理解TTL的含义&#xff08;Time to Live&#xff0c;生存时间&#xff09;。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS-C服务器…

等级保护测评解决方案

什么是等级保护测评&#xff1f; 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统中发生的信息安全…

小模型狂飙!6家巨头争相发布小模型,Andrej Karpathy:大语言模型的尺寸竞争正在倒退...

过去一周&#xff0c;可谓是小模型战场最疯狂的一周&#xff0c;商业巨头改变赛道&#xff0c;向大模型say byebye~。 OpenAI、Apple、Mistral等“百花齐放”&#xff0c;纷纷带着自家性能优越的轻量化小模型入场。 小模型(SLM)&#xff0c;是相对于大语言模型&#xff08;LLM…

Istio 学习笔记

Istio 学习笔记 作者&#xff1a;王珂 邮箱&#xff1a;49186456qq.com 文章目录 Istio 学习笔记[TOC] 前言一、基本概念1.1 Istio定义 二、Istio的安装2.1 通过Istioctl安装2.2 通过Helm安装 三、Istio组件3.1 Gateway3.2 VirtulService3.2.1 route详解3.2.2 match详解3.2.3…

【前端 02】新浪新闻项目-初步使用CSS来排版

在今天的博文中&#xff0c;我们将围绕“新浪新闻”项目&#xff0c;深入探讨HTML和CSS在网页制作中的基础应用。通过具体实例&#xff0c;我们将学习如何设置图片、标题、超链接以及文本排版&#xff0c;同时了解CSS的引入方式和选择器优先级&#xff0c;以及视频和音频标签的…

【Gin】智慧架构的巧妙砌筑:Gin框架中控制反转与依赖注入模式的精华解析与应用实战(下)

【Gin】智慧架构的巧妙砌筑&#xff1a;Gin框架中控制反转与依赖注入模式的精华解析与应用实战(下) 大家好 我是寸铁&#x1f44a; 【Gin】智慧架构的巧妙砌筑&#xff1a;Gin框架中控制反转与依赖注入模式的精华解析与应用实战(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; …

怀旧必玩!重返童年,扫雷游戏再度登场!

Python提供了一个标准的GUI&#xff08;图形用户界面&#xff09;工具包&#xff1a;Tkinter。它可以用来创建各种窗口、按钮、标签、文本框等图形界面组件。 而且Tkinter 是 Python 自带的库&#xff0c;无需额外安装。 Now&#xff0c;让我们一起来回味一下扫雷小游戏吧 扫…

快速搞定分布式RabbitMQ---RabbitMQ进阶与实战

本篇内容是本人精心整理&#xff1b;主要讲述RabbitMQ的核心特性&#xff1b;RabbitMQ的环境搭建与控制台的详解&#xff1b;RabbitMQ的核心API&#xff1b;RabbitMQ的高级特性;RabbitMQ集群的搭建&#xff1b;还会做RabbitMQ和Springboot的整合&#xff1b;内容会比较多&#…

【C++】C++入门知识(上)

好久不见&#xff0c;本篇介绍一些C的基础&#xff0c;没有特别的主题&#xff0c;话不多说&#xff0c;直接开始。 1.C的第一个程序 C中需要把定义文件代码后缀改为 .cpp 我们在 test.cpp 中来看下面程序 #include <stdio.h> int main() {printf("hello world\n…

SQL Server 设置端口号:详细步骤与注意事项

目录 一、了解SQL Server端口号的基础知识 1.1 默认端口号 1.2 静态端口与动态端口 二、使用SQL Server配置管理器设置端口号 2.1 打开SQL Server配置管理器 2.2 定位到SQL Server网络配置 2.3 修改TCP/IP属性 2.4 重启SQL Server服务 三、注意事项 3.1 防火墙设置 3…

Java小抄|Java中的List与Map转换

文章目录 1 List<User> 转Map<User.id,User>2 基础类型的转换&#xff1a;List < Long> 转 Map<Long,Long> 1 List 转Map<User.id,User> Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getId, v -> v, …

p28 vs环境-C语言实用调试技巧

int main() { int i0; for(i0;i<100;i) { printf("%d",i); } } 1.Debug 和Release的介绍 Debug通常称为调试版本&#xff0c;它包含调试信息&#xff0c;并且不做任何优化&#xff0c;便于程序员调试程序。 Release称为发布版本&#x…

PTPD 在 QNX 系统上的授时精度验证与误差排查

文章目录 0. 引言1.关键函数实现2. 验证策略与结果3. 授时误差的排查与解决3. 授时误差的排查与解决4. 结论 0. 引言 PTPD是一种时间同步的开源实现&#xff0c;在不同操作系统上的表现可能存在显著差异。 本文通过在QNX系统上运行PTPD&#xff0c;针对其授时精度进行详细验证…

探索算法系列 - 双指针

目录 移动零&#xff08;原题链接&#xff09; 复写零&#xff08;原题链接&#xff09; 快乐数&#xff08;原题链接&#xff09; 盛最多水的容器&#xff08;原题链接&#xff09; 有效三角形的个数&#xff08;原题链接&#xff09; 查找总价格为目标值的两个商品&…

优化算法:2.粒子群算法(PSO)及Python实现

一、定义 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;是一种模拟鸟群觅食行为的优化算法。想象一群鸟在寻找食物&#xff0c;每只鸟都在尝试找到食物最多的位置。它们通过互相交流信息&#xff0c;逐渐向食物最多的地方聚集。PSO就是基于这…

【python_将一个列表中的几个字典改成二维列表,并删除不需要的列】

def 将一个列表中的几个字典改成二维列表(original_list,headersToRemove_list):# 初始化一个列表用于存储遇到的键&#xff0c;保持顺序ordered_keys []# 遍历data中的每个字典&#xff0c;添加其键到ordered_keys&#xff0c;如果该键还未被添加for d in original_list:for …