LightGBM原理详解

lightGBM的介绍 AdaBoost(Adaptive Boosting)是一种集成学习算法,通过组合多个弱分类器来构建一个强分类器。它是由Freund和Schapire在1996年提出的,是集成学习中最早被广泛应用的算法之一。如何改变训练数据的权重或概率分布提高前一轮被弱分类器错误分类的样本的权重,降低前一轮被分对的权重。如何将弱分类器组合成一个强分类器,亦即,每个分类器,前面的权重如何设置采取“多数表决”的方法。 阅读详情
AI摘要

本文深入解析LightGBM,一种高效实现GBDT算法的框架,强调其在训练速度、内存消耗和准确率方面的优势。文章详细介绍了LightGBM的核心技术,包括基于Histogram的决策树算法、Gradient-based One-Side Sampling(GOSS)、Exclusive Feature Bundling(EFB)以及Leaf-wise的叶子生长策略。此外,还探讨了LightGBM的并行学习优化、Cache命中率优化以及类别特征支持,最后给出了参数调优指南和实战代码示例。

GBDT (Gradient Boosting Decision Tree)是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT在工业界应用广泛,通常被用于点击率预测,搜索排序等任务。GBDT也是各种数据挖掘竞赛的致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。
LightGBM (Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有以下优点:

  • 更快的训练速度
  • 更低的内存消耗
  • 更好的准确率
  • 分布式支持,可快速处理海量数据

实验数据结果表明,Higgs数据集上LightGBM比XGBoost快将近10倍,内存占用率大约为XGBoost的1/6,并且准确率有所提升。在其他数据集上也可以观察相似的结论。
准确率:

内存消耗:

训练速度:

XGBoost的工作原理
目前已有的GBDT工具基本都是基于预排序的方法(Pre-sorted)的决策树算法(如xgboost)。这种构建决策树的算法基本思想是:

  1. 对所有特征都按照特征的数值进行排序
  2. 再遍历分割点的时候用 O ( d a t a ) O(data) O(data)的代价找到一个特征上的最优分割点
  3. 找到一个特征的分割点后,将数据分裂成左右子节点

预排序算法的优点是能精确地找到分割点
缺点:

  • 空间消耗大,算法需要保存数据的特征值,还保存了特征排序后的结果(例如排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。
  • 时间上有较大的开销,在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价很大。
  • cache优化不友好。预排序后,特征对梯度的访问时一种随机访问,并且不同的特征访问顺序不一样,无法对cache进行优化。同时,在每一层长树的时候,需要随机访问一个row_index到叶子索引的数组,并且不同特征访问顺序也不一样,也会造成较大的cache miss。

LightGBM

1. 基于Histogram的决策树算法

直方图算法的基本思想是先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了数据的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。

Histogram算法的具体实现细节

优点:

  • 降低内存消耗:直方图算法不仅不需要额外存储预排序的结果,而且可以只保存特征离散化后的bin值,而这个值一般用8位整型存储就足够了,内存消耗可以降低为原来的1/8。
  • 降低计算代价:Pre-sorted算法每遍历一个特征值就需要计算一次分裂的增益,而直方图只需要计算k次,时间复杂度从 O ( d a t a × f e a t u r e s ) O(data\times features) O(data×features)优化到 O ( k × f e a t u r e s ) O(k\times features) O(k×features)。构建直方图时仍然需要 O ( d a t a × f e a t u r e s ) O(data\times features) O(data×features)。

Histogram算法并不是完美的。由于特征被离散化后,找到的分割点并不是很精确的分割点,所以会对结果产生影响。但在不同的数据集上的结果表明,离散化的分割点对最终的精度影响并不是很大,甚至有时候会更好一点。原因是决策树本来就是弱模型,分割点是不是精确并不是很重要;较粗的分割点也有正则化的效果,可以有效地防止过拟合;即使单颗树的训练误差比精确分割算法稍大,但在梯度提升(Gradient Boosting)的框架下没有太大的影响。

2. LightGBM的核心

Alg.1算法中,Histogram算法基于feature直方图寻找最优分割点。构建Histogram的复杂度为 O ( d a t a × f e a t u r e ) O(data\times feature) O(data×feature),而寻找最优分割点的复杂度为 O ( b i n × f e a t u r e ) O(bin\times feature) O(bin×feature)。因为bin远远小于data,所以整个过程的复杂度为 O ( d a t a × f e a t u r e ) O(data\times feature) O(data×feature)。通过减少data或者feature可以加速GBDT的训练过程。

2.1 Gradient-based One-Side Sampling(GOSS)

在AdaBoost算法中,样本权重作为数据实例重要性的指标。然而,GBDT没有这样的样本权重从而导致不能采用AdaBoost的取样方法。幸运的是,我们注意到GBDT中每个数据实例的梯度信息能为数据采样提供有价值的信息。换句话说,如果一个实例的梯度很小,说明这个实例得到很好的训练,其训练误差很小。一个简单的想法是丢弃这些小梯度的数据实例。然而,这样会改变数据分布从而降低训练模型的精确度。为了解决这个问题,我们提出了一个Gradient-based One-Side Sampling的新方法。以下Alg.2是GOSS算法的实现细节。

GOSS算法的描述

输入:训练数据,迭代次数d,大梯度数据的采样率a,小梯度数据的采样率b,损失函数和若干个弱学习器
输出:训练的强学习器

  1. 根据样本的绝对值梯度对其进行降序排序
  2. 对排序后的序列选取前 a × 100 % a\times100\% a×100%的样本作为大梯度样本的子集
  3. 对剩下的样本集合 ( 1 − a ) × 100 % (1-a)\times100\% (1−
关于LightGBM算法基本原理概述 2017年微软公司提出了LightGBM算法(Light Gradient Boosting Machine),该算法也是基于GBDT算法的改进,,但相较于GBDT、XGBoost算法,LightGBM算法有效地解决了处理海量数据的问题,在实际应用中取得出色的效果。 阅读详情

相关推荐

LightGBM实战进阶:从核心原理到工业级部署(Python代码详解)

本文深入解析LightGBM在工业级部署中的核心挑战与优化策略,涵盖内存效率、特征对齐及并发预测等关键问题。通过Python代码示例展示直方图算法、GOSS与EFB调优技巧,并提供生产环境中的模型服务化最佳实践,帮助开发者实现高性能机器学习应用部署。

weixin_30776273的博客 356

【算法底座研究室】机器学习基础算法 (十一) - LightGBM-微软

LightGBM(Light Gradient Boosting Machine)是由微软(Microsoft)研发的一种基于梯度提升算法(Gradient Boosting)的机器学习框架,它在处理大规模数据时非常高效。作为一种集成学习方法,LightGBM通过构建多个弱学习器来提高模型的整体性能,尤其擅长处理高维稀疏数据、类别特征和大规模数据集。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 3935

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1967

【eNSP 华为模拟器】单臂路由实战:从原理到配置全解析

本文详细解析了单臂路由技术,通过华为eNSP模拟器从原理到配置进行实战教学。文章阐述了单臂路由如何利用路由器单物理接口创建多个子接口,实现不同VLAN间通信,并提供了完整的操作步骤、配置命令及排错方法,帮助网络工程师掌握这一经典网络技术。

698

家庭路由器从入门到精通:连接设置、优化排障全指南

路由器作为家庭网络的核心枢纽,其工作原理基于NAT(网络地址转换)和DHCP(动态主机配置协议)两大关键技术。NAT负责将公网IP转换为多个内网IP,实现多设备共享上网;DHCP则自动为接入设备分配IP地址,简化网络配置。这些技术共同构建了稳定、安全的局域网环境,其价值在于为智能家居、在线办公、高清影音和游戏娱乐等场景提供可靠的网络基础。理解路由器的物理连接、后台设置与故障排查逻辑,是优化Wi-Fi信号覆盖、提升网络性能、保障家庭网络安全的关键。本文以路由器配置与排障为核心,详细解析从WAN/LAN口区分、

weixin_33393017的博客 405

SAP PP模块MRP控制参数实战指南:从NETCH到NEUPL的深度解析

本文深入解析SAP PP模块中MRP控制参数的配置与应用,涵盖NETCH、NETPL和NEUPL三种运行模式的优化策略。通过实战案例和参数对比,帮助用户提升物料需求计划的效率和准确性,优化库存周转率和生产交付能力。

weixin_28419039的博客 244

别再为授权费头疼了!手把手教你免授权搞定西门子、马扎克等12种主流数控机床的数据采集

本文提供了一套免授权采集西门子、马扎克等12种主流数控机床数据的实战指南,帮助中小型机加工车间节省80%以上的采集成本。通过TCP/UDP协议逆向工程和跨平台数据整合,实现经济、灵活且可持续的数据采集方案,涵盖设备兼容性处理、数据频率优化等关键问题。

weixin_26873711的博客 707

基于STM32的简易电压、频率、占空比测量仪

任务详解:我们需要实现三个功能: 第一个是测频率的功能,输入信号为频率为1kHz~10kHz的三种波形(方波、三角波、正弦波),这也是我们最常见的三种波形。幅度是不需要测量的,所以先不关心幅度。 第二个是电压报警功能,当输入信号的幅度超过15V时,我们需要报警(这里我用了一个红色LED当报警器,有条件的还可以加个蜂鸣器)并且把此时的信号幅度显示在OLED屏幕上。 第三个是通信方式的要求,需要有串口通信功能。 第四个是计算占空比的任务,这个任务的输入是幅度为1V~10V、频率为20Hz ~1kHz的方波,需要

weixin_43469377的博客 7251

【干货】SAP物料分类账的简单理解

一、SAP物料分类账理解 物料分类账,简称ML(material ledger),其基本用途是可以用八个字概括“还原成本”、“还原库存”。即通过月底运行物料分类账,将库存差异(原材料-材料成本差异、库存商品-自制半成本差异、库存商品-自制产成品差异)自动按当期库存出库数和库存结存数的比例分摊至成本和库存中。为了理解其概念,可以简单举一个例子: 开一工单,生产A产品,数量为3个,当月全部生产完工

ERP运维咨询(目标和成功) 1万+

【网络基础2】路由器的 “两扇门”:二层接口和三层接口到底有啥不一样?

家里的路由器背后总有几个网线接口,有的标着 “LAN”,有的标着 “WAN”;公司机房的路由器上,接口更是五花八门,有的插着网线,有的连着光纤,旁边还贴着 “GE0/0/1”“Eth-Trunk1” 这样的标签。你可能会想:不就是插网线的地方吗?有啥区别?其实,这些接口分 “二层接口” 和 “三层接口”,它们的作用差得远了 —— 就像你家的门,有的是 “小区内的单元门”(只通小区内部),有的是 “小区的大门”(能通往外面的世界)。接下来,咱们用大白话 + 生活例子,一点点把这两种接口讲透。

jundao1997的专栏 565

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 集成学习之XGBoost原理
下一篇: CTR预估中GBDT与LR融合方案
code__online
博客等级 码龄9年 142粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值