4. 集成学习基础
集成学习通过组合多个基学习器来获得比单一学习器更优的泛化性能。在时间序列预测中,集成方法能有效降低方差、减少过拟合,并捕捉数据中的复杂模式。本章系统梳理三种主流集成范式的核心思想与数学原理。
4.1 集成学习的核心问题:偏差与方差的权衡
单一模型通常面临偏差-方差困境:简单模型偏差高但方差低,复杂模型偏差低但方差高。集成学习通过组合多个模型,在保持低偏差的同时降低方差,或在保持低方差的同时降低偏差。
| 集成方法 | 主要目标 | 基学习器关系 | 典型算法 |
|---|---|---|---|
| Bagging | 降低方差 | 并行、独立 | 随机森林 |
| Boosting | 降低偏差 | 串行、依赖 | AdaBoost、XGBoost |
| Stacking | 同时优化偏差与方差 | 层级、异构 | 元学习器组合 |
时间序列要点: 时序数据存在自相关性和趋势性,Bagging 通常使用块状采样(Block Bootstrap)保持时间依赖;Boosting 需注意顺序拟合可能放大异常值影响;Stacking 的元特征构造需避免未来信息泄露。
4.2 Bagging:并行式自举聚合
核心思想: 对原始训练集进行 Bootstrap 有放回抽样,生成 T 个不同的子集,在每个子集上独立训练基学习器,最终通过平均(回归)或投票(分类)得到集成输出。
数学原理
设原始数据集 D 包含 n 个样本。对 t = 1, 2, …, T:
- 从 D 中有放回抽取 n 个样本,得到自助样本集 Dt;
- 在 Dt 上训练基学习器 ht(x);
- 最终预测:H(x) = (1/T) Σt=1T ht(x)(回归)或多数投票(分类)。
Bagging 的方差缩减效果可表示为:若基学习器方差为 σ²,两两相关系数为 ρ,则集成方差 Var(H) = ρσ² + (1-ρ)σ²/T。当 ρ 较小时,方差随 T 增大显著下降。
实践建议: 时间序列 Bagging 中,推荐使用 Moving Block Bootstrap 或 Stationary Bootstrap 替代简单 Bootstrap,以保留序列内的自相关结构。
4.3 Boosting:串行式自适应提升
核心思想: 基学习器按顺序训练,每一轮重点关注前一轮被错误预测的样本,通过调整样本权重或残差来逐步降低整体偏差。
数学原理(以 AdaBoost 回归为例)
- 初始化样本权重 wi(1) = 1/n;
- 对 t = 1, 2, …, T:
- 在加权样本上训练基学习器 ht(x);
- 计算加权误差 εt = Σi wi(t) · L(yi, ht(xi));
- 计算学习器权重 αt = ½ ln((1-εt)/εt);
- 更新样本权重:wi(t+1) = wi(t) · exp(-αt · yi · ht(xi)),并归一化;
- 最终预测:H(x) = sign( Σt=1T αt · ht(x) )。
对于梯度提升(GBDT),每轮拟合前一轮的负梯度 rt = -∂L/∂H,将加法模型与梯度下降统一。
时序风险提示: Boosting 对异常值敏感,时间序列中的突发性异常点会被反复放大权重。建议在训练前进行异常值检测或使用 Huber 损失等鲁棒损失函数。
4.4 Stacking:层级式异构集成
核心思想: 使用多个异构基学习器(第一层)的输出作为新特征,训练一个元学习器(第二层)进行最终预测。Stacking 不依赖 Bootstrap 或权重迭代,而是通过交叉验证构造元特征,避免过拟合。
数学原理与流程
- 划分数据: 将训练集 D 划分为 K 折(通常 K=5 或 10);
- 生成元特征: 对每个基学习器 hm,使用 K-1 折训练,预测剩余 1 折,遍历所有折后得到完整的 N 维元特征向量;
- 训练元学习器: 以元特征为输入,原始标签为输出,训练第二层模型 g;
- 最终预测: H(x) = g( h₁(x), h₂(x), …, hM(x) )。
| 层级 | 角色 | 常用模型 | 输入 | 输出 |
|---|---|---|---|---|
| 第一层(基学习器) | 特征提取 | LSTM、XGBoost、LightGBM、CNN | 原始时序特征 | 预测值(元特征) |
| 第二层(元学习器) | 融合决策 | 线性回归、Ridge、浅层 MLP | 元特征矩阵 | 最终预测 |
时序 Stacking 关键: 元特征生成必须使用 时间序列交叉验证(如 Expanding Window 或 Rolling Window),禁止使用随机 K 折,否则会造成未来信息泄露,导致过拟合的虚假高精度。
4.5 三种集成方法的对比与选择
| 维度 | Bagging | Boosting | Stacking |
|---|---|---|---|
| 基学习器类型 | 同质(通常为高方差模型) | 同质(通常为弱学习器) | 异质(多种模型) |
| 训练方式 | 并行独立 | 串行依赖 | 并行 + 层级 |
| 主要效果 | 降低方差 | 降低偏差 | 综合优化 |
| 对异常值敏感度 | 低 | 高 | 中等(取决于元学习器) |
| 时序适配难度 | 低(需块状采样) | 中(需鲁棒损失) | 高(需时序交叉验证) |
| 计算开销 | 低(可完全并行) | 中(串行限制) | 高(多模型 + 交叉验证) |
| 可解释性 | 中 | 中(可输出特征重要性) | 低(黑箱程度高) |
实战选型建议:
• 数据量大、基模型方差高 → 优先 Bagging(如随机森林);
• 偏差主导、需要逐步优化 → 优先 Boosting(如 XGBoost/LightGBM);
• 已有多个异构强模型、追求极致精度 → 使用 Stacking 融合。
• 数据量大、基模型方差高 → 优先 Bagging(如随机森林);
• 偏差主导、需要逐步优化 → 优先 Boosting(如 XGBoost/LightGBM);
• 已有多个异构强模型、追求极致精度 → 使用 Stacking 融合。
4.6 本章小结
- Bagging 通过 Bootstrap 采样和并行训练降低方差,适合高方差基学习器;
- Boosting 通过串行加权拟合降低偏差,适合弱学习器逐步增强;
- Stacking 通过层级异构融合同时优化偏差与方差,但需谨慎处理元特征生成中的信息泄露;
- 在时间序列预测中,三种方法都需要针对时序特性进行适配:Bagging 使用块状采样,Boosting 使用鲁棒损失,Stacking 使用时序交叉验证。