大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本文主要阐述Boosting中常用算法(GBDT、XGBoost、LightGBM)的迭代路径。
@[toc]
XGBoost 相对 GBDT 的改进
GBDT(Gradient Boosting Decision Tree,梯度提升决策树) 是一种集成学习算法。GBDT 使用梯度提升(Gradient Boosting)的思想,每一棵决策树都是基于前一轮预测的残差(即误差)来训练的,从而逐步逼近真实值。
XGBoost 相对传统 GBDT 在原理和实现上进行了多项改进,使得它在计算效率、模型精度、内存管理和并行性等方面有显著提升。以下是 XGBoost 相对 GBDT 的关键改进:
| 改进项 | 具体描述 | 优势 |
|---|---|---|
| 正则化项 | 引入 () 和 () 正则化控制叶节点权重 | 防止过拟合,提高泛化能力 |
| 二阶导数信息 | 使用梯度和 Hessian 信息进行优化 | 提高收敛速度和精度 |
| 列采样和行采样 | 每棵树采样特征和样本 | 降低过拟合风险,提高泛化性 |
| 并行化处理 | 特征分片和直方分裂,支持 GPU 加速 | 提升训练速度 |
| 缺失值处理 | 自动选择缺失样本最佳分裂方向 | 处理缺失值和稀疏数据 |
| 早停和学习率衰减 | 监控验证集性能,学习率衰减控制每棵树贡献 | 降低过拟合和节省计算开销 |
| 自定义目标和评估 | 支持用户自定义目标函数和评估指标 | 提高适应性,满足不同场景需求 |
引入正则化项,防止过拟合
在 GBDT 中,每棵树的叶子节点权重没有额外的正则化控制,容易导致模型过拟合。XGBoost 在每棵树的目标函数中引入了 ( ) 和 ( ) 正则化项,控制叶节点数量和权重大小,使模型更具泛化能力。目标函数为:
损失函数
损失函数 测量每个样本的预测误差。例如,常用的损失函数有:
- 均方误差 (MSE):用于回归问题,定义为 。
- 对数损失 (Log Loss):用于二分类问题。
正则化项
正则化项 用于控制模型复杂度,包含 L1 和 L2 正则化:
其中:
- 是树的叶节点数目。
- 是第 个叶节点的权重。
- 控制叶节点的数量,较大的 倾向于减少叶节点数量,使模型更简单。
- 是 L2 正则化系数,控制叶节点权重的平方和,有助于平滑叶节点的权重。
- 是 L1 正则化系数,控制叶节点权重的绝对值之和,促使部分权重趋向于零,从而构建更稀疏的模型。
使用二阶导数信息,加速收敛
详细全文请移步公主号:Goodnote。