集成学习
00:00
集成学习原理、Bagging/Boosting框架、Random Forest/AdaBoost/GBDT/XGBoost/LightGBM详解。
1. 集成学习原理
集成学习通过组合多个基学习器来获得比单一学习器更好的性能。
1.1 核心思想
理论保证:如果每个弱学习器的准确率略高于随机猜测(),则随着弱学习器数量增加,集成的错误率指数下降:
其中 为优势度, 为基学习器数量。
1.2 多样性来源
| 来源 | 方法 | 代表算法 |
|---|---|---|
| 数据扰动 | Bootstrap采样 | Bagging |
| 特征扰动 | 随机特征子集 | Random Forest |
| 算法扰动 | 不同算法/参数 | 异质集成 |
| 标签扰动 | 样本权重调整 | Boosting |
2. Bagging与随机森林
2.1 Bagging
Bootstrap Aggregating:通过有放回采样生成多个子训练集,分别训练基学习器,最后投票/平均。
采样比例:每个Bootstrap样本约包含 的原始样本:
Out-of-Bag(OOB)估计:未被采样的 样本可作为验证集,无需额外划分。
2.2 随机森林
在Bagging基础上增加特征随机性:
| 参数 | 说明 | 典型值 |
|---|---|---|
n_estimators | 树的数量 | 100~500 |
max_features | 每次分裂考虑的特征数 | (分类)/ (回归) |
max_depth | 树的最大深度 | 不限制或较大值 |
min_samples_split | 分裂最小样本数 | 2~10 |
特征重要性:
3. Boosting框架
3.1 Boosting原理
Boosting 通过序列训练基学习器,每个新学习器重点关注前一轮的错误样本:
h1 → 评估 → 更新样本权重 → h2 → 评估 → 更新样本权重 → h3 → ... → 组合
3.2 AdaBoost
指数损失函数:
算法流程:
- 初始化样本权重
- 对于 :
- 用权重 训练弱学习器
- 计算加权错误率:
- 计算学习器权重:
- 更新样本权重:
- 归一化权重
最终预测:
3.3 GBDT
梯度提升决策树:用负梯度近似残差,每棵树拟合当前模型的负梯度:
回归(MSE损失):负梯度恰好等于残差
学习率收缩:
为学习率,通常取 。
4. XGBoost
4.1 目标函数
XGBoost 在损失函数中加入正则化项:
正则化项:
其中 为叶节点数, 为叶节点权重。
4.2 二阶泰勒展开
其中:
4.3 最优分裂
叶节点最优权重:
分裂增益:
4.4 XGBoost特性
| 特性 | 说明 |
|---|---|
| 二阶优化 | 利用二阶导数更精确 |
| 正则化 | L1+L2正则化防止过拟合 |
| 列采样 | 类似RF的特征随机 |
| 稀疏感知 | 自动处理缺失值 |
| 并行化 | 特征粒度并行 |
| 缓存优化 | 缓存感知访问模式 |
5. LightGBM
5.1 核心创新
GOSS(Gradient-based One-Side Sampling):
- 保留大梯度样本(对学习贡献大)
- 随机丢弃小梯度样本
- 对小梯度样本乘以放大系数
EFB(Exclusive Feature Bundling):
- 将互斥特征(很少同时非零)捆绑为一个特征
- 减少特征数量,加速训练
5.2 Leaf-wise vs Level-wise
| 策略 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| Level-wise (XGBoost) | 层级生长 | 不易过拟合 | 低效(不必要分裂) |
| Leaf-wise (LightGBM) | 叶节点最大增益优先 | 更高效 | 可能过拟合 |
5.3 三大框架对比
| 维度 | XGBoost | LightGBM | CatBoost |
|---|---|---|---|
| 树生长策略 | Level-wise | Leaf-wise | Level-wise |
| 特征直方图 | 支持 | 默认 | 支持 |
| 类别特征 | 需编码 | 原生支持 | 原生支持 |
| 缺失值处理 | 自动 | 自动 | 自动 |
| 训练速度 | 中 | 快 | 慢 |
| 内存占用 | 高 | 低 | 中 |
| 过拟合风险 | 中 | 较高 | 低 |
| 适用场景 | 通用 | 大数据 | 类别特征多 |