当前位置: 首页 > news >正文

机器学习(12)——LGBM(1)

文章目录

  • LightGBM算法详解
    • 1. 算法背景
    • 2. 核心创新
      • 2.1 基于直方图的决策树算法
      • 2.2 单边梯度采样(GOSS)
      • 2.3 互斥特征捆绑(EFB)
    • 3. 算法细节
      • 3.1 树生长策略
      • 3.2 特征并行与数据并行
      • 3.3 类别特征处理
    • 4. 关键参数说明
      • 4.1 核心参数
      • 4.2 控制速度参数
      • 4.3 控制过拟合参数
    • 5. 与XGBoost对比
    • 6. 实践建议
    • 7. 代码示例
    • 8. 适用场景
    • 9. 局限性

LightGBM算法详解

LightGBM(Light Gradient Boosting Machine)是微软开发的一个基于决策树算法的分布式梯度提升框架,专为高效性和可扩展性设计。

1. 算法背景

LightGBM属于梯度提升决策树(GBDT)家族,是XGBoost之后的一个重要改进。它于2017年由微软团队提出,主要解决了以下问题:

  • 传统GBDT在大规模数据上效率低
  • 内存消耗大
  • 训练速度慢

2. 核心创新

2.1 基于直方图的决策树算法

LightGBM将连续特征值离散化为k个整数(默认255),构造特征直方图。训练时基于这些直方图寻找最优分割点,带来以下优势:

  • 内存消耗降低:从O(#data * #features)降到O(k * #features)
  • 计算代价降低:从O(#data * #features)降到O(k * #features)

2.2 单边梯度采样(GOSS)

传统GBDT计算信息增益时需要对所有数据点的梯度进行统计。GOSS通过以下方式优化:

  1. 保留梯度较大的前a%样本
  2. 从剩余样本中随机抽取b%样本
  3. 在计算信息增益时,对小梯度样本的权重乘以常数(1-a)/b

2.3 互斥特征捆绑(EFB)

高维特征通常是稀疏的,许多特征互斥(不会同时取非零值)。EFB将这些特征捆绑在一起,将复杂度从O(#features)降到O(#bundle),同时不影响准确性。

3. 算法细节

3.1 树生长策略

LightGBM采用leaf-wise生长策略(区别于level-wise):

  • 每次从当前所有叶子中,选择分裂增益最大的叶子进行分裂
  • 能更有效地降低损失,但可能导致较深的树
  • 可通过max_depth参数限制深度防止过拟合

3.2 特征并行与数据并行

  • 特征并行:不同机器处理不同特征,寻找最佳分割点
  • 数据并行:数据分散到不同机器,每台机器构建局部直方图后合并

3.3 类别特征处理

LightGBM原生支持类别特征,无需独热编码:

  • 直接按类别值排序后寻找最优分割
  • 通过max_cat_threshold控制分裂数
  • 比独热编码更高效且通常效果更好

4. 关键参数说明

4.1 核心参数

  • boosting_type: 提升类型,默认gbdt
  • objective: 目标函数,如regression、binary、multiclass等
  • metric: 评估指标

4.2 控制速度参数

  • num_iterations: 迭代次数
  • learning_rate: 学习率
  • num_leaves: 叶子数(主要控制复杂度)
  • max_depth: 树的最大深度

4.3 控制过拟合参数

  • lambda_l1: L1正则化
  • lambda_l2: L2正则化
  • min_data_in_leaf: 叶子最小样本数
  • feature_fraction: 特征采样比例
  • bagging_fraction: 数据采样比例

5. 与XGBoost对比

特性LightGBMXGBoost
树生长策略leaf-wiselevel-wise
特征离散化直方图算法预排序算法
内存使用更低较高
训练速度更快较慢
类别特征处理原生支持需要编码
并行方式特征+数据并行主要特征并行
小数据集表现可能过拟合通常更好

6. 实践建议

  1. 参数调优顺序

    • 首先设置较大的num_leaves和较小的learning_rate
    • 调整num_iterations使用早停法
    • 然后调节min_data_in_leafmax_depth防止过拟合
    • 最后调整正则化参数
  2. 类别特征处理

    • 直接指定为类别类型比独热编码更高效
    • 对高基数类别特征可考虑目标编码
  3. 不平衡数据

    • 使用is_unbalance参数或设置scale_pos_weight
    • 也可调整class_weight参数
  4. 并行加速

    • 设置feature_fractionbagging_fraction小于1
    • 使用bagging_freq启用随机采样

7. 代码示例

import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split# 加载数据
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)# 创建数据集
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)# 设置参数
params = {'boosting_type': 'gbdt','objective': 'binary','metric': 'binary_logloss','num_leaves': 31,'learning_rate': 0.05,'feature_fraction': 0.9,'bagging_fraction': 0.8,'bagging_freq': 5,'verbose': 0
}# 训练模型
gbm = lgb.train(params,train_data,num_boost_round=100,valid_sets=[test_data],early_stopping_rounds=10)# 预测
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)

8. 适用场景

LightGBM特别适合以下场景:

  • 大规模数据集(百万级样本以上)
  • 高维特征数据
  • 需要快速迭代的实验环境
  • 对预测延迟要求不严格的场景

9. 局限性

  1. 在小数据集上可能容易过拟合
  2. leaf-wise生长策略可能导致模型复杂度较高
  3. 对噪声数据较为敏感
  4. 相比线性模型可解释性较差

LightGBM因其高效性和优秀的性能,已成为许多机器学习竞赛和工业界应用的首选工具之一。理解其核心原理和参数调优技巧,能够帮助在实际问题中更好地应用这一强大算法。

相关文章:

  • 软件架构之--论微服务的开发方法1
  • 一种开源的高斯泼溅实现库——gsplat: An Open-Source Library for Gaussian Splatting
  • Leetcode 3553. Minimum Weighted Subgraph With the Required Paths II
  • EMQX开源版安装指南:Linux/Windows全攻略
  • 初学c语言15(字符和字符串函数)
  • 【图像生成大模型】Wan2.1:下一代开源大规模视频生成模型
  • windows笔记本连接RKNN3588网络配置解析
  • jvm安全点(四)openjdk17 c++源码垃圾回收之安全点轮询页内存设置不可访问
  • 李臻20242817_安全文件传输系统项目报告_第12周
  • 【Java ee初阶】jvm(3)
  • ARM A64 STR指令
  • Java大厂面试:从Web框架到微服务技术的场景化提问与解析
  • Java基础知识总结(超详细整理)
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • c++学习之--- list
  • Nordic 的RTC(Real-time counter)的介绍
  • 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 VSCode + IoT Link 插件
  • SQL脚本规范
  • 【OpenCV基础 1】几何变换、形态学处理、阈值分割、区域提取和脱敏处理
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 习近平向第三十四届阿拉伯国家联盟首脑理事会会议致贺信
  • 菲律宾中期选举结果揭晓,马科斯与杜特尔特家族重回“权力的游戏”
  • 高飞已任南航集团党组副书记
  • 80后女博士黄双燕拟提名为内蒙古盟市政府(行署)副职人选
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?