【量化】从零到LGBM | 2 | 集成学习
集成学习 在上一篇文章中,我们讨论了决策树的基本原理和它在量化场景下的致命缺陷:过拟合。单棵决策树很容易把市场噪声当成规律,导致回测优秀、实盘失效。一个自然的改进思路是:既然单棵树不可靠,那么能否训练多棵树,让它们共同做决定? 这就是集成学习(Ensemble Learning)的核心思想。 1. 什么是集成学习? 集成学习的思路并不复杂:训练多个基础模型,再按某种方式将它们的预测结果组合起来,从而获得比单个模型更稳定、更准确的输出。这些基础模型通常被称为弱学习器(weak learner),而组合后的整体模型被称为强学习器(strong learner)。 在决策树场景下,集成学习通常表现为训练多棵决策树,然后通过投票或平均的方式得到最终预测。根据训练方式和组合逻辑的不同,集成学习主要分为两大流派:Bagging 和 Boosting。 2. Bagging:并行的民主投票 代表模型:随机森林(Random Forest) Bagging 是 Bootstrap Aggregating 的缩写,它的工作机制可以概括为三步: Bootstrap 采样:从原始训练集中有放回地随机抽取多个样本子集。每个子集的大小通常与原始训练集相同,但由于是有放回抽样,某些样本可能出现多次,某些样本可能一次都不出现。这样,每个子集都略有不同。 独立训练:对每个 Bootstrap 子集分别训练一棵决策树。每棵树在训练时还可以进一步引入随机性:在每个分裂节点,不比较全部特征,而是随机选取一个特征子集来寻找最佳切分。这就是随机森林中“随机”的另一个来源。 投票或平均:所有树并行训练完成后,对于分类问题,最终预测由多数投票决定;对于回归问题,最终预测取所有树输出的平均值。 Bagging 的核心目标是降低方差(variance)。单棵决策树的预测结果容易受到训练数据中微小变化的影响,方差较大。通过训练多棵在不同数据子集和特征子集上得到的树,并将它们的预测结果平均,可以显著降低最终模型对特定数据扰动的敏感程度。形象地说,多个专家独立判断后取平均,个别专家的极端错误会被其他专家中和,这就是群体平均效应在这里的体现。 3. Boosting:串行的错题本式迭代 代表模型:AdaBoost、GBDT、XGBoost、LightGBM Boosting 的思路与 Bagging 完全不同。它不追求并行训练、独立投票,而是让树按顺序逐个生成,每一棵新树都重点纠正前面所有树留下的错误。 具体来说: 串行训练:模型按顺序逐个添加。第一棵树先对原始目标进行拟合。 聚焦残差:第二棵树的目标不再是直接预测原始目标,而是预测“第一棵树预测值与真实值之间的差距”,也就是残差(residual)。第三棵树继续拟合前两棵树之后仍未解释的部分。这个过程可以不断重复。 加权累加:最终预测结果是所有树的输出按一定权重累加。每棵树不再是平等投票,而是根据其对整体损失下降的贡献程度来决定权重。 Boosting 的核心目标是降低偏差(bias)。它允许模型不断修正错误,逐步逼近训练数据中那些复杂、微弱的规律。如果 Bagging 是“多个学生独立作答,最后取平均分”,那么 Boosting 更像是“一个学生反复看错题本,不断弥补自己的短板”。 从数学上看,Boosting 可以理解为一个加法模型: $$F_m(x) = F_{m-1}(x) + \eta \cdot h_m(x)$$ 其中 $F_{m-1}$ 是前 $m-1$ 棵树累加后的模型,$h_m$ 是第 $m$ 棵树,$\eta$ 是学习率。每一棵新树 $h_m$ 的拟合目标不再是原始标签 $y$,而是当前模型的负梯度方向,在平方损失下就是残差 $y - F_{m-1}(x)$。这也是“梯度提升”(Gradient Boosting)名称的由来。 ...