LightGBM
LightGBM(Light Gradient Boosting Machine)是基于 GBDT 的高效实现,采用直方图分箱、Leaf-wise 生长、GOSS(梯度单侧采样)与 EFB(互斥特征捆绑)等机制,在保证精度的同时显著提升训练速度与内存效率。LightGBM 既可…
LightGBM 算法(Light Gradient Boosting Machine)
1. 方法概述
LightGBM(Light Gradient Boosting Machine)是基于 GBDT 的高效实现,采用直方图分箱、Leaf-wise 生长、GOSS(梯度单侧采样)与 EFB(互斥特征捆绑)等机制,在保证精度的同时显著提升训练速度与内存效率。LightGBM 既可用于分类任务,也可用于回归任务。
设共有 \(n\) 个样本、\(d\) 个特征,数据集为
$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^d \tag{1} $$
其中 \(y_i\) 为类别标签(分类)或连续值(回归)。
2. 公共部分(预处理与 LightGBM 机制)
系统在模型训练前支持缺失处理、编码、缩放、特征构造、特征选择与降维等步骤(均在训练集上拟合,再作用于测试集或交叉验证折内,避免数据泄漏)。
2.1 标准化与归一化
Z-score 标准化: $$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{2} $$
Min-Max 归一化: $$ z_{ij}=\frac{x_{ij}-\min x_j}{\max x_j-\min x_j+\varepsilon} \tag{3} $$
2.2 One-Hot 编码(类别型变量)
$$ x^{(k)}_{ij}= \begin{cases} 1,& x_{ij}=\text{cat}_k\\ 0,& \text{otherwise} \end{cases} \tag{4} $$
2.3 加性模型(Boosting)
LightGBM 的模型为加性形式:
$$ F_M(x)=F_0(x)+\sum_{m=1}^{M}\nu\,h_m(x) \tag{5} $$
其中 \(h_m(x)\) 为第 \(m\) 棵树,\(\nu\in(0,1]\) 为学习率。
2.4 一阶/二阶梯度
对损失函数 \(L(y,F(x))\) ,一阶梯度与二阶梯度分别为
$$ g_i=\frac{\partial L(y_i,F(x_i))}{\partial F(x_i)},\quad h_i=\frac{\partial^2 L(y_i,F(x_i))}{\partial F(x_i)^2} \tag{6} $$
2.5 二阶近似目标
LightGBM 使用二阶泰勒展开近似:
$$ \tilde{L}=\sum_{i=1}^{n}\big(g_i f(x_i)+\tfrac{1}{2}h_i f(x_i)^2\big)+\Omega(f) \tag{7} $$
其中 \(f\) 为当前树的输出函数,\(\Omega\) 为正则项。
2.6 叶节点最优输出
对叶节点 \(j\) 上样本集合 \(I_j\),最优叶值为
$$ w_j^*=-\frac{\sum_{i\in I_j} g_i}{\sum_{i\in I_j} h_i+\lambda} \tag{8} $$
2.7 分裂增益
将叶节点分裂为左、右子节点,增益为
$$ \text{Gain}=\frac{1}{2}\left(\frac{G_L^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda}-\frac{(G_L+G_R)^2}{H_L+H_R+\lambda}\right)-\gamma \tag{9} $$
其中 \(G_* = \sum g_i\)、\(H_* = \sum h_i\),\(\lambda\) 为 L2 正则,\(\gamma\) 为叶节点惩罚。
2.8 直方图分箱
对连续特征 \(x\) 映射到 \(B\) 个桶:
$$ \text{bin}(x)=b\in\{1,\ldots,B\} \tag{10} $$
以桶统计近似分裂增益,提高效率并降低内存。
2.9 Leaf-wise 生长策略
每轮选择增益最大的叶子进行分裂:
$$ \ell^*=\arg\max_{\ell}\ \text{Gain}(\ell) \tag{11} $$
该策略可在相同树规模下获得更低的训练误差,但需用 \(\text{max\_depth}\) 或 \(\text{num\_leaves}\) 控制过拟合。
2.10 GOSS(Gradient-based One-Side Sampling)
保留大梯度样本 \(A\) 与从小梯度样本 \(B\) 中随机采样 \(b\) 比例:
$$ \tilde{g}_i= \begin{cases} g_i,& i\in A\\ \frac{1-a}{b}g_i,& i\in B \end{cases} \tag{12} $$
其中 \(a\) 为大梯度样本比例,\(b\) 为小梯度采样比例。
2.11 EFB(Exclusive Feature Bundling)
将互斥特征集合 \(\{x^{(1)},\ldots,x^{(k)}\}\) 捆绑为单特征:
$$ \tilde{x}=\sum_{t=1}^{k} x^{(t)}\cdot s_t \tag{13} $$
其中 \(s_t\) 为互不冲突的偏移量,使特征稀疏性得到利用。
2.12 样本权重(可扩展)
引入样本权重 \(w_i\) 的加权损失:
$$ L_w=\sum_{i=1}^{n} w_i\,L(y_i,F(x_i)) \tag{14} $$
系统实现说明:当前 UI 提供“类别不均衡自动加权(class_weight_auto)”,用于分类任务的类别权重平衡;尚未开放显式样本权重输入,如需样本权重可在核心代码中扩展传入 sample_weight。
2.13 单调约束(可扩展)
若对特征 \(x_k\) 施加单调约束,则要求
$$ x_k^{(a)}\le x_k^{(b)}\Rightarrow F(x^{(a)})\le F(x^{(b)}) \tag{15} $$
系统实现说明:当前 UI 未提供单调约束参数,可在自定义参数中扩展 monotone_constraints。
2.14 早停(Early Stopping,可扩展)
在验证集指标 \(M_t\) 上选择最优迭代:
$$ t^*=\arg\min_t M_t \tag{16} $$
若连续 \(p\) 轮无改进则提前停止训练。
系统实现说明:当前采用固定 n_estimators 训练,UI 未开放早停轮次设置;若需要,可在训练阶段加入 early_stopping_rounds 与验证集。
2.15 SHAP 解释(可扩展)
TreeSHAP 将模型输出分解为各特征的贡献:
$$ f(x)=\phi_0+\sum_{j=1}^{d}\phi_j \tag{17} $$
其中 \(\phi_j\) 为第 \(j\) 个特征的 Shapley 值。
系统实现说明:当前仅输出特征重要性 Top-N 图;若需 SHAP,可扩展生成全局/局部解释图。
2.16 符号说明
| 符号 | 含义 |
|---|---|
| \(n\) | 样本数量 |
| \(d\) | 特征维度 |
| \(x_i\) | 第 \(i\) 个样本特征向量 |
| \(y_i\) | 第 \(i\) 个样本标签/真实值 |
| \(g_i,h_i\) | 一阶/二阶梯度 |
| \(\nu\) | 学习率 |
| \(\lambda,\gamma\) | 正则与叶惩罚 |
3. 回归版(LightGBM Regressor)
3.1 回归损失与指标
均方误差(MSE) $$ \text{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \tag{18} $$
平均绝对误差(MAE) $$ \text{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \tag{19} $$
均方根误差(RMSE) $$ \text{RMSE}=\sqrt{\text{MSE}} \tag{20} $$
决定系数 $$ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} \tag{21} $$
3.2 分位数回归(可选)
对分位数 \(\tau\in(0,1)\) 的 pinball 损失:
$$ L_{\tau}(y,\hat{y})=\max\big(\tau(y-\hat{y}),(\tau-1)(y-\hat{y})\big) \tag{22} $$
3.3 回归文字说明(可直接用于论文)
- 采用 LightGBM 进行回归建模,逐步拟合残差并最小化损失函数。
- 指标使用 MAE、MSE、RMSE 与 \(R^2\)(见式(18)–(21)),用于衡量预测误差与拟合优度。
- 输出预测–真实散点、真实值-预测值折线对比、残差直方图、残差-拟合图与 Q-Q 图,用于诊断误差分布与模型稳定性。
- 交叉验证结果用于评估不同折上的误差稳定性与泛化能力。
4. 分类版(LightGBM Classifier)
4.1 二分类 Logloss
$$ L(y,p)=-\big[y\ln p+(1-y)\ln(1-p)\big],\quad p=\sigma(F(x))=\frac{1}{1+e^{-F(x)}} \tag{23} $$
4.2 多分类 Softmax
$$ P(y=c\mid x)=\frac{\exp(F_c(x))}{\sum_{k=1}^{C}\exp(F_k(x))} \tag{24} $$
$$ L=-\sum_{i=1}^{n}\sum_{c=1}^{C}\mathbf{1}(y_i=c)\ln P(y_i=c\mid x_i) \tag{25} $$
4.3 多分类评估细节(One-vs-Rest)
对每个类别 \(c\) 构造二分类标签 \(y^{(c)}\in\{0,1\}\),分别计算 ROC/PR,并对各类别结果取宏平均:
$$ \text{AUC}_{\text{macro}}=\frac{1}{C}\sum_{c=1}^{C}\text{AUC}_c, \quad \text{AP}_{\text{macro}}=\frac{1}{C}\sum_{c=1}^{C}\text{AP}_c \tag{26} $$
系统实现说明:当前系统在多分类时输出每类 ROC/PR 曲线,并汇总宏平均指标;阈值曲线主要针对二分类场景。
4.4 分类评价指标
准确率 $$ \text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \tag{27} $$
精确率 / 召回率 $$ \text{Precision}=\frac{TP}{TP+FP} \tag{28} $$
$$ \text{Recall}=\frac{TP}{TP+FN} \tag{29} $$
F1 值 $$ F1=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}} \tag{30} $$
ROC 曲线与 AUC $$ \text{TPR}=\frac{TP}{TP+FN},\quad \text{FPR}=\frac{FP}{FP+TN} \tag{31} $$
$$ \text{AUC}=\int_0^1 \text{TPR}(\text{FPR})\,d(\text{FPR}) \tag{32} $$
4.5 分类文字说明(可直接用于论文)
- LightGBM 通过逐步拟合分类损失的梯度构建加性模型,输出分类概率或类别标签。
- 分类指标包括 Accuracy、Precision、Recall、F1 与 AUC(见式(27)–(32))。
- 提供混淆矩阵、ROC/PR 曲线、阈值-F1、阈值-TPR/FPR、校准曲线与类别分布图,用于评估阈值敏感性与概率可靠性。
5. 训练与验证(公共)
5.1 训练/测试划分
若设置测试集比例为 \(t\in(0,1)\),则 $$ n_{\text{test}}=\lceil n\cdot t\rceil,\quad n_{\text{train}}=n-n_{\text{test}} \tag{33} $$
5.2 \(K\)-折交叉验证
对 \(K\) 折的评价指标取均值: $$ \bar{M}=\frac{1}{K}\sum_{k=1}^{K}M_k \tag{34} $$
6. 结果输出说明
系统输出的 Excel 通常包含:原始数据、处理后数据、预测、指标、参数、参数说明、交叉验证与每折预测、报告摘要、图表清单、训练/测试集数据等。
图表输出按任务分为:
- 回归:预测–真实散点、真实值-预测值折线对比、残差直方图、残差-拟合图、Q-Q 图、学习曲线、特征重要性;
- 分类:混淆矩阵、ROC 曲线、PR 曲线、阈值-F1、阈值-TPR/FPR、校准曲线、类别分布、学习曲线、特征重要性。
论文写作建议按以下顺序组织结果:
- 参数与特征工程(学习率、num_leaves、max_depth、subsample、正则化等);
- 核心指标表(回归:MAE/MSE/RMSE/\(R^2\);分类:Accuracy/Precision/Recall/F1/AUC);
- 可视化图表(残差分析、ROC/PR、阈值曲线等);
- 交叉验证稳定性(各折指标与均值)。
在正文中给出模型公式与核心指标,详细的折内预测与参数清单可放入附录,以兼顾可读性与可复现性。
附录 A:可选增强(当前未启用)
A.1 概率校准(Calibration)
Platt Scaling: $$ \hat{p}=\frac{1}{1+\exp(af(x)+b)} \tag{35} $$
Isotonic 回归: $$ \hat{p}=g(f(x)),\quad g\ \text{为单调函数} \tag{36} $$
说明:系统仅输出校准曲线,未进行校准拟合。
A.2 阈值优化(Threshold Tuning)
可选取使指标最优的阈值,例如最大化 F1:
$$ t^*=\arg\max_t F1(t) \tag{37} $$
说明:系统提供阈值-F1 与阈值-TPR/FPR 曲线,不自动选择最优阈值。
A.3 贝叶斯超参搜索(Bayesian Optimization)
以评价指标 \(M(\theta)\) 为目标,搜索最优超参 \(\theta\):
$$ \theta^*=\arg\max_{\theta} M(\theta) \tag{38} $$
说明:系统未启用贝叶斯超参搜索,参数采用手动/默认设置。
7. 与代码实现的对应关系
LightGBM 程序的关键实现位于 具体的算法/LightGBM/core/critic_calculator.py。真实程序并不只是输出一个模型指标,而是同时保留模型文件、逐折预测、特征重要性和报告摘要。
实现上需要说明的内容有:
-
结果目录包含模型与推理模板
程序会导出lightgbm_model.pkl、lightgbm_model_meta.json与predict_template.py,其中模板脚本会做列对齐与结果写出,便于独立预测。 -
Excel 工作表面向复核与交付
典型结果表包括:原始数据、处理后数据、训练集、测试集、指标、预测、混淆矩阵、分类报告、特征重要性、学习曲线、图表清单、CV汇总、CV折i_预测、验证集、参数、参数与配置(分组)、报告摘要。 -
交叉验证明细与
cv_eval_only互斥
程序在代码中对“仅评估交叉验证”与“导出逐折预测”做了互斥控制,因此论文里如果说明已保留每折预测,应确保对应运行不是cv_eval_only模式。 -
特征重要性既有表也有 Top-N 图
代码会把重要性写入 Excel,并额外导出 Top-N 特征重要性图,这对论文变量解释部分很有用。 -
分类与回归共享一套导出框架
分类任务会多出 ROC、PR、阈值和校准分析;回归任务则重点输出残差相关图和回归评价指标。正文写作时应按任务分开叙述。
8. 论文写作模板
方法描述模板:
“本文采用 LightGBM 模型进行监督学习分析。利用直方图分箱与叶子优先生长机制构建梯度提升树,并结合缺失处理、编码及必要的特征工程完成建模。通过训练测试划分与交叉验证对模型进行综合评估,同时输出特征重要性、学习曲线及逐样本预测结果。”
结果描述模板:
“程序结果目录除最终 Excel 外,还包含模型文件、预测模板脚本与多张性能图。Excel 中进一步提供处理后数据、CV 汇总、参数与配置、报告摘要和特征重要性表,因此论文中既可以报告最终 Accuracy/F1 或 RMSE/\(R^2\),也可以补充说明变量重要性排序与多折稳定性。”
9. 单篇终审补充
9.1 图题与表题对齐建议
原始数据表可写为:表X LightGBM 原始数据表。处理后数据表可写为:表X LightGBM 处理后数据表。指标表可写为:表X LightGBM 性能指标表。预测表可写为:表X LightGBM 逐样本预测结果表。特征重要性表可写为:表X LightGBM 特征重要性表。图表清单表可写为:表X LightGBM 图表索引表。CV汇总表可写为:表X LightGBM 交叉验证汇总表。CV折1_预测、CV折2_预测可分别写为:表X LightGBM 第1折、第2折预测结果表。验证集表可写为:表X LightGBM 验证集结果表。参数表可写为:表X LightGBM 参数设置表。参数与配置(分组)表可写为:表X LightGBM 分组参数配置表。报告摘要表可写为:表X LightGBM 结果摘要表。feature_importance_topN.png建议写为:图X LightGBM Top-N 特征重要性图。pred_vs_true.png建议写为:图X LightGBM 预测值与真实值散点图。true_vs_pred_line.png建议写为:图X LightGBM 真实值与预测值对比图。residuals_hist.png建议写为:图X LightGBM 残差直方图。residuals_qq.png建议写为:图X LightGBM 残差 Q-Q 图。residuals_vs_fitted.png建议写为:图X LightGBM 残差与拟合值关系图。
9.2 终审说明
- 当前最适合作为终审证据的代表性目录可采用
具体的算法/LightGBM/results/LightGBM分析结果_20260329_163802。该目录同时具备结果簿、实体图和 repro 脚本。 - 真实工作表为
原始数据/处理后数据/指标/预测/特征重要性/图表清单/CV汇总/CV折1_预测/CV折2_预测/验证集/参数/参数与配置(分组)/报告摘要。与文档自述相比,这个代表性目录没有单独的训练集/测试集 sheet,因此终审说明应以当前真实结果簿为准。 - 当前真实图文件稳定为
feature_importance_topN.png、pred_vs_true.png、true_vs_pred_line.png、residuals_hist.png、residuals_qq.png、residuals_vs_fitted.png。这说明当前代表性证据是回归场景,不是分类场景。 - 当前复现脚本为
repro_template_20260329_163802.py,采用SRC_FILE = 'repro_inputs/sample_regression.xlsx'。该代表性结果目录下未见lightgbm_model_meta.json,因此 LightGBM 这篇应把repro_inputs/...作为标准复现路径写入附录,而不要把模型元数据文件写成该目录既有产物。 - 这篇文档标题覆盖了分类与回归两类任务,但本轮终审证据目录是回归场景。若后续要做更完整终稿,可再补一套分类场景的真实 sheet 和图名证据。
9.3 全量强化补充
- 本轮按真实磁盘再次核对,代表性算法目录为
具体的算法/LightGBM,代表性结果目录为具体的算法/LightGBM/results/LightGBM分析结果_20260329_163802。 - 该目录当前实际可见文件为
LightGBM分析结果_20260329_163802.xlsx、feature_importance_topN.png、pred_vs_true.png、true_vs_pred_line.png、residuals_hist.png、residuals_qq.png、residuals_vs_fitted.png、repro_template_20260329_163802.py以及repro_inputs/sample_regression.xlsx。本目录下未见lightgbm_model.pkl或lightgbm_model_meta.json,因此论文与交付文档应以当前真实目录为准,不应把其他运行批次或代码分支中的模型文件写成这一轮结果的既有产物。 - 主结果工作簿
LightGBM分析结果_20260329_163802.xlsx的实际工作表为原始数据、处理后数据、指标、预测、特征重要性、图表清单、CV汇总、CV折1_预测、CV折2_预测、验证集、参数、参数与配置(分组)、报告摘要。这说明当前证据目录的交叉验证导出是 2 折预测明细,不应在文中泛写成“不定数量的 CV折i_预测”。 - 当前真实图文件全部位于结果目录根部,而不是单独
plots/子目录;若后续论文附录列文件路径,应直接按根目录文件清单书写。 - 当前 repro 口径是标准相对路径:
repro_template_20260329_163802.py中写明SRC_FILE = 'repro_inputs/sample_regression.xlsx'。因此这篇可以明确归类为“结果目录自带输入副本、可独立复现”的标准化案例。 - 需要特别区分的是:当前目录只有一份主结果工作簿,没有与主结果并列的第二份 repro 输出工作簿。也就是说,这一目录更适合作为“主运行结果+复现脚本”的证据,而不是“主结果与 repro 再生产物同时落盘”的双结果目录。
9.4 软件实现核查补充(2026-07)
- 当前最新结果目录
results/LightGBM分析结果_20260411_204335_998459是回归证据集,工作簿里保留原始数据、处理后数据、指标、预测、特征重要性、学习曲线、图表清单、CV汇总、CV折1_预测到CV折5_预测、验证集、参数、参数与配置(分组)、报告摘要。 - 当前这版目录的图文件全部在根目录,主要是
feature_importance_topN.png、learning_curve.png、pred_vs_true.png、true_vs_pred_line.png、residuals_hist.png、residuals_qq.png、residuals_vs_fitted.png。 - 分类目录是另一批次结果,若正文讲分类,就应回到带
混淆矩阵和分类报告的时间戳目录;不要把分类图写进这一版回归目录。 - 当前最新目录未见 SHAP 文件或模型元数据文件,文档里可以把 SHAP 作为可选能力保留,但不能写成本轮导出结果已经包含。