LightGBM
(Light Gradient Boosting Machine)是一个梯度提升框架,由微软开发。它用于机器学习中的分类、回归和排序等任务,特别适合处理大规模数据和高维特征。LightGBM的核心是梯度提升决策树(GBDT)算法,但它在此基础上做了多种优化,使其在速度和内存使用方面优于传统的GBDT实现。LightGBM
的数学原理基于梯度提升决策树(Gradient Boosting Decision Trees, GBDT),而GBDT本身是一个集成学习算法。
1. 梯度提升决策树(GBDT)
GBDT
是通过逐步构建多个决策树,并通过每棵树来纠正前一棵树的错误。具体而言:
-
初始模型:通常从一个简单的模型开始,比如预测所有样本的平均值。
-
残差计算:计算当前模型的残差(即预测值与真实值之间的差异)。
-
决策树训练:训练一棵新的决策树来拟合残差。
-
模型更新:将新决策树的预测值加到当前模型中。
每次迭代的公式为:
其中:
-
是第 次迭代的模型。
-
是学习率,控制每棵树对最终模型的贡献。
-
是第 棵决策树的预测值。
2. LightGBM的改进
LightGBM
在GBDT的基础上做了许多优化,以提高训练速度和效率:
(1) 基于直方图的算法
传统的GBDT每次分裂节点时都要对所有特征值进行排序,时间复杂度较高。LightGBM通过将连续特征值离散化成直方图的形式来加速分裂过程。具体步骤如下:
-
构建直方图:将特征值划分成多个bin(桶)。
-
统计每个bin中的样本数量和目标值的总和。
-
选择最佳分裂点:在直方图的基础上计算各个分裂点的增益,选择增益最大的分裂点。
(2) 带深度限制的叶子增长策略
LightGBM采用了一个叫做“Leaf-wise”的策略,而不是传统的“Level-wise”策略:
-
Level-wise:按层次生长,每层增加一层深度。
-
Leaf-wise:每次选择增益最大的叶子进行分裂。
Leaf-wise策略能够更好地减少损失,但容易导致不平衡的树结构。为此,LightGBM引入了最大深度限制,以防止过拟合。
3. 数学公式与损失函数
LightGBM的目标是最小化损失函数,一般情况下使用平方误差或交叉熵损失。以平方误差为例,损失函数为:
其中:
-
是第 个样本的真实值。
-
是模型的预测值。
在每次迭代中,通过计算损失函数的负梯度作为残差,来训练下一棵决策树。这一过程可以看作是用梯度下降法来优化模型参数。
LightGBM通过多种优化方法(如基于直方图的分裂、Leaf-wise的增长策略等),在保留GBDT强大预测能力的同时,提高了训练速度和效率。这些优化方法的数学原理相对复杂,但总体思路仍然是基于梯度提升决策树的框架。
LightGBM的Python实例
我们选择乳腺癌数据集,乳腺癌数据集包含了569个样本,每个样本都有30个特征。这些特征主要描述了细胞核的特性(如半径、质地、周长、面积等),目标变量是样本是否为恶性肿瘤(标记为1)或良性肿瘤(标记为0)。
import lightgbm as lgb #