【机器学习基础】机器学习入门核心算法:XGBoost 和 LightGBM

news2025/6/3 7:26:58

在这里插入图片描述

机器学习入门核心算法:XGBoost 和 LightGBM

      • 一、算法逻辑
        • XGBoost (eXtreme Gradient Boosting)
        • LightGBM (Light Gradient Boosting Machine)
      • 二、算法原理与数学推导
        • 目标函数(二者通用)
        • 二阶泰勒展开:
        • XGBoost 分裂点增益计算:
        • LightGBM 直方图加速:
      • 三、模型评估
        • 常用评估指标:
        • 过拟合控制:
      • 四、应用案例
        • XGBoost 典型场景:
        • LightGBM 典型场景:
      • 五、面试题及答案
        • 常见问题:
      • 六、相关论文
      • 七、优缺点对比
      • 总结

一、算法逻辑

XGBoost (eXtreme Gradient Boosting)
  • 核心思想
    基于梯度提升框架(Gradient Boosting),通过迭代添加弱学习器(CART树)优化损失函数,支持正则化防止过拟合。
  • 关键优化
    • 预排序(Pre-sorted):对特征值预先排序并存储为块结构,加速分裂点查找。
    • 加权分位数草图(Weighted Quantile Sketch):近似算法高效生成候选分裂点。
LightGBM (Light Gradient Boosting Machine)
  • 核心思想
    针对XGBoost计算效率瓶颈改进,核心是 直方图算法(Histogram-based)生长策略优化
  • 关键创新
    • Gradient-based One-Side Sampling (GOSS):保留大梯度样本,随机采样小梯度样本。
    • Exclusive Feature Bundling (EFB):互斥特征捆绑,减少特征维度。
    • Leaf-wise 生长策略:选择增益最大叶子分裂,提升精度但可能加深树深。

二、算法原理与数学推导

目标函数(二者通用)

t t t 次迭代的目标函数:
O b j ( t ) = ∑ i = 1 n L ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) Obj^{(t)} = \sum_{i=1}^{n} L(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) + \Omega(f_t) Obj(t)=i=1nL(yi,y^i(t1)+ft(xi))+Ω(ft)
其中正则项 Ω ( f t ) = γ T + 1 2 λ ∥ w ∥ 2 \Omega(f_t) = \gamma T + \frac{1}{2}\lambda \|w\|^2 Ω(ft)=γT+21λw2 T T T为叶子数, w w w为叶子权重)。

二阶泰勒展开:

O b j ( t ) ≈ ∑ i = 1 n [ L ( y i , y ^ ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) Obj^{(t)} \approx \sum_{i=1}^{n} \left[ L(y_i, \hat{y}^{(t-1)}) + g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i) \right] + \Omega(f_t) Obj(t)i=1n[L(yi,y^(t1))+gift(xi)+21hift2(xi)]+Ω(ft)
其中 g i = ∂ y ^ ( t − 1 ) L ( y i , y ^ ( t − 1 ) ) g_i = \partial_{\hat{y}^{(t-1)}} L(y_i, \hat{y}^{(t-1)}) gi=y^(t1)L(yi,y^(t1)), h i = ∂ y ^ ( t − 1 ) 2 L ( y i , y ^ ( t − 1 ) ) h_i = \partial_{\hat{y}^{(t-1)}}^2 L(y_i, \hat{y}^{(t-1)}) hi=y^(t1)2L(yi,y^(t1))

XGBoost 分裂点增益计算:

G a i n = 1 2 [ ( ∑ i ∈ I L g i ) 2 ∑ i ∈ I L h i + λ + ( ∑ i ∈ I R g i ) 2 ∑ i ∈ I R h i + λ − ( ∑ i ∈ I g i ) 2 ∑ i ∈ I h i + λ ] − γ Gain = \frac{1}{2} \left[ \frac{(\sum_{i \in I_L} g_i)^2}{\sum_{i \in I_L} h_i + \lambda} + \frac{(\sum_{i \in I_R} g_i)^2}{\sum_{i \in I_R} h_i + \lambda} - \frac{(\sum_{i \in I} g_i)^2}{\sum_{i \in I} h_i + \lambda} \right] - \gamma Gain=21[iILhi+λ(iILgi)2+iIRhi+λ(iIRgi)2iIhi+λ(iIgi)2]γ
I L , I R I_L, I_R IL,IR 为分裂后左右子节点样本集。

LightGBM 直方图加速:
  • 将连续特征离散化为 k k k 个桶(默认256),生成直方图。
  • 分裂时遍历直方图桶,计算增益:
    G a i n = max ⁡ j ∈ [ 1 , k ] ( ( ∑ i ∈ B l e f t j g i ) 2 ∑ i ∈ B l e f t j h i + λ + ( ∑ i ∈ B r i g h t j g i ) 2 ∑ i ∈ B r i g h t j h i + λ ) Gain = \max_{j \in [1,k]} \left( \frac{(\sum_{i \in B_{left}^j} g_i)^2}{\sum_{i \in B_{left}^j} h_i + \lambda} + \frac{(\sum_{i \in B_{right}^j} g_i)^2}{\sum_{i \in B_{right}^j} h_i + \lambda} \right) Gain=j[1,k]max(iBleftjhi+λ(iBleftjgi)2+iBrightjhi+λ(iBrightjgi)2)
    其中 B l e f t j B_{left}^j Bleftj B r i g h t j B_{right}^j Brightj 为按桶 j j j 分裂的样本子集。

三、模型评估

常用评估指标:
任务类型指标
分类AUC, F1-Score, 准确率
回归RMSE, MAE, R-squared
排序NDCG, MAP
过拟合控制:
  • XGBoostgamma(分裂阈值)、lambda(L2正则)、subsample(样本采样)。
  • LightGBMmin_data_in_leaffeature_fraction(特征采样)、lambda_l1/l2

四、应用案例

XGBoost 典型场景:
  1. Kaggle竞赛:2015-2016年多数表格数据竞赛冠军方案。
  2. 金融风控:预测贷款违约概率(如Lending Club数据集)。
LightGBM 典型场景:
  1. 大规模数据:腾讯广告点击率预测(十亿级样本)。
  2. 高维特征:推荐系统特征工程(EFB减少特征维度)。

五、面试题及答案

常见问题:
  1. Q: XGBoost 为什么用二阶导数?
    A: 二阶导提供损失函数的曲率信息,比一阶导更精准定位最优解,加速收敛。

  2. Q: LightGBM 的 Leaf-wise 为什么更快但可能过拟合?
    A: Leaf-wise 减少不必要的分裂(对比 Level-wise),但树深度可能更大,需通过 max_depthmin_data_in_leaf 约束。

  3. Q: 直方图算法的缺点?
    A: 离散化引入误差,桶数量少时精度下降(精度与效率权衡)。


六、相关论文

  1. XGBoost
    Chen & Guestrin, 2016. “XGBoost: A Scalable Tree Boosting System”
    Key: 分布式加权分位数草图、稀疏感知算法。

  2. LightGBM
    Ke et al., 2017. “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”
    Key: GOSS 样本采样、EFB 特征捆绑、直方图优化。


七、优缺点对比

算法优点缺点
XGBoost1. 精度高,正则化强;
2. 支持自定义损失函数;
3. 树结构可解释性好。
1. 内存消耗大(预排序);
2. 训练速度较慢。
LightGBM1. 训练速度快3~5倍;
2. 内存占用低;
3. 支持大规模数据并行。
1. 小数据集易过拟合;
2. 离散化可能损失精度。

总结

  • XGBoost:精度优先,适合中小规模数据、需强正则化的场景。
  • LightGBM:效率优先,适合大规模数据、高维特征、实时性要求高的场景。
    两者均属于GBDT优化框架,选择需权衡数据规模、特征维度与精度要求。

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

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

相关文章

Linux | Shell脚本的常用命令

一. 常用字符处理命令 1.1 连续打印字符seq seq打印数字;且只能正向打印,不可反向连续打印 设置打印步长 指定打印格式 1.2 反向打印字符tac cat 正向,tac 反向 1.3 打印字符printf printf "打印的内容"指定格式打印内容 换行…

【JUC】深入解析 JUC 并发编程:单例模式、懒汉模式、饿汉模式、及懒汉模式线程安全问题解析和使用 volatile 解决内存可见性问题与指令重排序问题

单例模式 单例模式确保某个类在程序中只有一个实例,避免多次创建实例(禁止多次使用new)。 要实现这一点,关键在于将类的所有构造方法声明为private。 这样,在类外部无法直接访问构造方法,new操作会在编译…

2025年全国青少年信息素养大赛复赛C++算法创意实践挑战赛真题模拟强化训练(试卷3:共计6题带解析)

2025年全国青少年信息素养大赛复赛C++算法创意实践挑战赛真题模拟强化训练(试卷3:共计6题带解析) 第1题:四位数密码 【题目描述】 情报员使用4位数字来传递信息,同时为了防止信息泄露,需要将数字进行加密。数据加密的规则是: 每个数字都进行如下处理:该数字加上5之后除…

Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)

目录 Project background Development time Project questions Create Project create springboot project project framework create folder Create Models user post Comment Like Message Serive tier user login and register Dynamic Publishing and Bro…

飞腾D2000与FPGA结合的主板

UD VPX-404是基于高速模拟/数字采集回放、FPGA信号实时处理、CPU主控、高速SSD实时存储架构开发的一款高度集成的信号处理组合模块,采用6U VPX架构,模块装上外壳即为独立整机,方便用户二次开发。 UD VPX-404模块的国产率可达到100%&#xff0…

百度量子蜘蛛3.0横空出世,搜索引擎迎来“量子跃迁“级革命

一、量子蜘蛛3.0的三大颠覆性升级 1. 动态抓取:让内容实时"量子纠缠" - 智能频率调节:根据网站更新频率自动调整抓取节奏,新闻类站点日抓取量达3-5次,静态页面抓取间隔延长至72小时。某财经媒体通过"热点事件15分钟…

GitHub开源|AI顶会论文中文翻译PDF合集(gpt-translated-pdf-zh)

项目核心特点 该项目专注于提供计算机科学与人工智能领域的高质量中文翻译资源,以下为关键特性: 主题覆盖广泛:包含算法、数据结构、概率统计等基础内容,以及深度学习、强化学习等前沿研究方向。格式统一便捷:所有文…

Drawio编辑器二次开发

‌ Drawio (现更名为 Diagrams.net )‌是一款完全免费的在线图表绘制工具,由 JGraph公司 开发。它支持创建多种类型的图表,包括流程图、组织结构图、UML图、网络拓扑图、思维导图等,适用于商务演示、软件设计等多种场景…

1.测试过程之需求分析和测试计划

测试基础 流程 1.分析测试需求 2.编写测试计划 3.设计与编写测试用例 4.执行测试 5.评估与总结 测试目标 根据测试阶段不同可分为四个主要目标:预防错误(早期)、发现错误(开发阶段)、建立信心(验收阶段&a…

[春秋云镜] CVE-2023-23752 writeup

首先奉上大佬的wp表示尊敬:(很详细)[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)_joomla未授权访问漏洞(cve-2023-23752)-CSDN博客 知识点 Joomla版本为4.0.0 到 4.2.7 存在未授权访问漏洞 Joomla是一套全球知名的内容管理…

CSS专题之水平垂直居中

前言 石匠敲击石头的第 16 次 在日常开发中,经常会遇到水平垂直居中的布局,虽然现在基本上都用 Flex 可以轻松实现,但是在某些无法使用 Flex 的情况下,又应该如何让元素水平垂直居中呢?这也是一道面试的必考题&#xf…

(新)MQ高级-MQ的可靠性

消息到达MQ以后,如果MQ不能及时保存,也会导致消息丢失,所以MQ的可靠性也非常重要。 一、数据持久化 为了提升性能,默认情况下MQ的数据都是在内存存储的临时数据,重启后就会消失。为了保证数据的可靠性,必须…

Leetcode 3231. 要删除的递增子序列的最小数量

1.题目基本信息 1.1.题目描述 给定一个整数数组 nums,你可以执行任意次下面的操作: 从数组删除一个 严格递增 的 子序列。 您的任务是找到使数组为 空 所需的 最小 操作数。 1.2.题目地址 https://leetcode.cn/problems/minimum-number-of-increas…

4.2.5 Spark SQL 分区自动推断

在本节实战中,我们学习了Spark SQL的分区自动推断功能,这是一种提升查询性能的有效手段。通过创建具有不同分区的目录结构,并在这些目录中放置JSON文件,我们模拟了一个分区表的环境。使用Spark SQL读取这些数据时,Spar…

【图像处理入门】2. Python中OpenCV与Matplotlib的图像操作指南

一、环境准备 import cv2 import numpy as np import matplotlib.pyplot as plt# 配置中文字体显示(可选) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False二、图像的基本操作 1. 图像读取、显示与保存 使用OpenCV…

Spring Boot微服务架构(九):设计哲学是什么?

一、Spring Boot设计哲学是什么? Spring Boot 的设计哲学可以概括为 ​​“约定优于配置”​​ 和 ​​“开箱即用”​​,其核心目标是​​极大地简化基于 Spring 框架的生产级应用的初始搭建和开发过程​​,让开发者能够快速启动并运行项目…

TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍

前言 时间同步网络中的每个节点,都被称为时钟,PTP协议定义了三种基本时钟节点。本文将介绍这三种类型的时钟,以及gPTP在同步机制上与其他机制的区别 本系列文章将由浅入深的带你了解gPTP,欢迎关注 时钟类型 在PTP中我们将各节…

Kafka数据怎么保障不丢失

在分布式消息系统中,数据不丢失是核心可靠性需求之一。Apache Kafka 通过生产者配置、副本机制、持久化策略、消费者偏移量管理等多层机制保障数据可靠性。以下从不同维度解析 Kafka 数据不丢失的核心策略,并附示意图辅助理解。 一、生产者端&#xff1a…

AI书签管理工具开发全记录(八):Ai创建书签功能实现

文章目录 AI书签管理工具开发全记录(八):AI智能创建书签功能深度解析前言 📝1. AI功能设计思路 🧠1.1 传统书签创建的痛点1.2 AI解决方案设计 2. 后端API实现 ⚙️2.1 新增url相关工具方法2.1 创建后端api2.2 创建crea…

X-plore v4.43.05 强大的安卓文件管理器-MOD解锁高级版 手机平板/电视TV通用

X-plore v4.43.05 强大的安卓文件管理器-MOD解锁高级版 手机平板/电视TV通用 应用简介: X-plore 是一款强大的安卓端文件管理器,它可以在电视或者手机上管理大量媒体文件、应用程序。…