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

article/2025/6/16 20:02:19

在这里插入图片描述

机器学习入门核心算法: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.hkcw.cn/article/rjjTbjtBfy.shtml

相关文章

《STL--stack 和 queue 的使用及其底层实现》

引言: 上次我们学习了容器list的使用及其底层实现,相对来说是比较复杂的,今天我们要学习的适配器stack和queue与list相比就简单很多了,下面我们就开始今天的学习: 一:stack(后进先出&#xff…

Redis缓存问题重点详解

前言:本节包含常见redis缓存问题,包含缓存一致性问题,缓存雪崩,缓存穿透,缓存击穿问题及其解决方案 1. 缓存一致性 我们先看下目前企业用的最多的缓存模型。缓存的通用模型有三种: 缓存模型解释Cache Asi…

Redis最佳实践——安全与稳定性保障之访问控制详解

Redis 在电商应用的安全与稳定性保障之访问控制全面详解 一、安全访问控制体系架构 1. 多层级防护体系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…

矩阵快速幂算法快速上手

矩阵快速幂算法快速上手 一、基础知识回顾1.1 矩阵乘法1.2 单位矩阵 二、快速幂算法思想2.1 整数快速幂2.2 矩阵快速幂 三、矩阵快速幂的代码实现3.1 Python实现3.2 C实现3.3 Java实现 四、矩阵快速幂的应用场景4.1 斐波那契数列4.2 线性递推数列4.3 图论中的路径计数4.4 动态规…

外国人眼中的端午赛龙舟 文化共鸣与体验

当地人教恩佐包香囊,黄春隆体验划龙舟,罗珃身着汉服,沉浸式体验端午文化后拍照留念。吃粽子、赛龙舟、做香囊……外国友人对端午文化有多少了解?哪些端午习俗令他们印象深刻?恩佐来自法国中部卢瓦雷省的小城蒙塔日,他的家乡与中国渊源已久,是邓小平年轻时曾经勤工俭学的…

博主:登贝莱预定金球奖 欧冠决赛闪耀

巴黎圣日耳曼在欧冠决赛中以5-0大胜国米,首次夺得冠军。奥斯曼-登贝莱为队友送出了两次助攻。《队报》认为,他比以往任何时候都更有希望角逐2025年金球奖。作为俱乐部主席,纳赛尔-阿尔赫莱菲按惯例出现在颁奖台上,紧紧拥抱了奥斯曼-登贝莱,并在他耳边低语。这位卡塔尔人脸…

uniapp调试,设置默认展示的toolbar内容

uniapp调试,设置默认展示的toolbar内容 设置pages.json中 pages数组中 json的顺序就可以只需要调整顺序,不会影响该bar在页面中的显示默认展示第一条page

设计模式——适配器设计模式(结构型)

摘要 本文详细介绍了适配器设计模式,包括其定义、核心思想、角色、结构、实现方式、适用场景及实战示例。适配器模式是一种结构型设计模式,通过将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容问题,提高系统灵活性和…

元胞自动机(Cellular Automata, CA)

一、什么是元胞自动机(Cellular Automata, CA) 元胞自动机(CA) 是一种基于离散时间、离散空间与规则驱动演化的动力系统,由 冯诺依曼(John von Neumann) 于1940年代首次提出,用于模…

华为OD机试真题——模拟消息队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《模拟消息队列》: 目录 题…

Nacos 配置文件总结

Nacos 配置文件总结 文章目录 Nacos 配置文件总结1 、在 Nacos 服务端添加配置文件1. 启动Nacos Server。2. 新建配置文件。3. 发布配置集后,我们便可以在配置列表中查看相应的配置文件。4. 配置nacos数据库5. 运行 Nacos 容器6. 验证安装结果7. 配置验证 2 、在 Na…

一文读懂MCP模型上下文协议

前言:MCP(Model Context Protocol,模型上下文协议)作为一个全新的开源协议框架被提出,它试图重塑模型开发、集成与协作的方式。MCP让只能人机交互的大模型转化为了能够快速对接各类业务系统的生产力大脑。传统做法通常…

C#数字图像处理(一)

文章目录 1.C#图像处理基础1.1 Bitmap类1.2 Bitmapdata类1.3 Graphics类1.4 Image类 2.彩色图像灰度化1.提取像素法2.内存法3.指针法三种方法的比较4.灰度图像二值化: 3.相关链接 Bitmap类、 Bitmapdata类和 Graphics类是C#图像处理中最重要的3个类,如果要用C# 进行…

各种数据库,行式、列式、文档型、KV、时序、向量、图究竟怎么选?

慕然回首,发现这些年来涌现出了许多类型的数据库,今天抽空简单回顾一下,以便于后面用到时能快速选择。 1. 关系型数据库(行式) 关系型数据库(RDBMS),我们常说的数据库就是指的关系型数据库。 它的全称是关…

uView UI的使用

1. uView UI 封装了request.get登方法请求,异步调用。 故需可以使用then, catch, finally uView UI. 是一个专为UniApp设计的跨平台UI框架, 注意这里是跨平台,也就是可以再IOS, ANDROID 机器上运行的框架 2. easycom 词面意思容易使用的组件 在使用…

win32相关(临界区)

临界区 每个线程都有自己的栈,而局部变量是存在在栈中的,这就意味着每个线程都有一份自己的”局部变量“,如果线程仅仅只是使用自己的”局部变量“那么就不会有线程安全问题,那如果多个线程使用一个全局变量呢? 我们用…

UE5蓝图暴露变量,在游戏运行时修改变量实时变化、看向目标跟随目标Find Look at Rotation、修改玩家自身弹簧臂

UE5蓝图中暴露变量,类似Unity中public一个变量,在游戏运行时修改变量实时变化 1,添加变量 2,设置变量的值 3,点开小眼睛,此变量显示在编辑器中,可以运行时修改 看向目标跟随目标Find Look at R…

112 Gbps 及以上串行链路的有效链路均衡

通道均衡已成为当今高速串行链路的关键机制。目前有许多均衡方案,例如发射机加重均衡、接收机CTLE(连续时间线性均衡器)、FFE(前馈均衡器)、DFE(判决反馈均衡器)和FEC(前向纠错&…

【LLM相关知识点】关于LangChain框架学习简单整理(三)

【LLM相关知识点】关于LangChain框架学习简单整理(三) 一、核心模块和协作模式 参考极简LangChain智能体开发入门指南,LangChain官方文档 LangChain核心模块与功能: 核心模块功能描述关键技术点​模型I/O管理大模型输入输出&a…

基于CangjieMagic的RAG技术赋能智能问答系统

目录 引言 示例程序分析 代码结构剖析 导入模块解读 智能体配置详情 提示词模板说明 主程序功能解析 异步聊天功能实现 检索信息展示 技术要点总结 ollama 本地部署nomic-embed-text 运行测试 结语 引言 这段时间一直在学习CangjieMagic。前几天完成了在CangjieMa…