3. 决策树与集成学习
在量化选股中,我们面对的是高噪声、低信噪比的金融数据。单一模型往往难以稳定捕捉非线性因子与股票收益之间的复杂关系,而决策树及其集成方法恰好擅长处理这类表格型数据。本节将沿着“单棵决策树 → Bagging → Boosting → GBDT → XGBoost → LightGBM”的演进主线,讲清每一步解决了什么问题,为后续实战打下原理基础。
一、决策树原理:用“if-else”切分特征空间
决策树的核心思想非常直观:对特征空间进行递归划分,使每个叶子节点内的样本标签尽可能纯净。分类树常用基尼指数或信息熵衡量不纯度,回归树则用均方误差。每次分裂时,算法遍历所有特征及其候选切分点,选择让不纯度下降最多的那个划分。
以选股为例,假设我们用“市盈率分位数”“近20日动量”“ROE”三个因子预测下月是否跑赢基准。决策树可能学出这样的规则:若动量分位数 > 0.7 且 ROE > 15%,则落入“高胜率”叶子。这种可解释性正是树模型在因子挖掘中的优势。
关键参数:max_depth 控制树深,min_samples_leaf 控制叶子最小样本数,两者共同决定模型复杂度。树越深,拟合能力越强,但越容易记住噪声。
单棵树的致命弱点是方差大:训练集轻微扰动就可能导致完全不同的分裂结构。这直接催生了集成学习。
二、Bagging 与 Boosting:两种截然不同的集成哲学
Bagging(Bootstrap Aggregating)通过对训练集有放回抽样,训练多棵相互独立的树,再投票或取平均。它降低的是方差,代表算法是随机森林。Boosting 则是串行训练:每棵新树专注于修正前面模型的残差,逐步降低偏差,代表算法是 AdaBoost 与梯度提升。
| 维度 | Bagging | Boosting |
|---|---|---|
| 训练方式 | 并行、相互独立 | 串行、依赖前序模型 |
| 样本权重 | 等权抽样 | 根据误差动态调整 |
| 主要降低 | 方差 | 偏差 |
| 代表算法 | 随机森林 | GBDT、XGBoost、LightGBM |
| 过拟合倾向 | 相对不易 | 需早停与正则化控制 |
在量化场景中,Bagging 类模型对异常值更稳健,而 Boosting 类模型通常精度更高,但需要更谨慎地调参和做时序交叉验证。
三、GBDT:把梯度下降搬到函数空间
GBDT(Gradient Boosting Decision Tree)的核心洞察是:把模型看作函数的加法组合,每一轮拟合当前损失函数的负梯度(即残差方向)。对于回归任务,若损失为均方误差,负梯度恰好等于残差;对于分类任务,则拟合对数似然的梯度。
初始化 F0(x) = argmin_c Σ L(y_i, c)
for m = 1 to M:
计算负梯度 r_im = -[∂L(y_i, F(x_i)) / ∂F(x_i)],其中 F = F_{m-1}
用训练集 {(x_i, r_im)} 拟合一棵回归树 h_m(x)
线搜索求步长 γ_m = argmin_γ Σ L(y_i, F_{m-1}(x_i) + γ·h_m(x_i))
更新 F_m(x) = F_{m-1}(x) + γ_m·h_m(x)
输出 F_M(x)
GBDT 的每一步都在“沿着损失下降最快的方向走一小步”,学习率(shrinkage)控制步长,通常取 0.01~0.1。学习率越小,需要的树越多,但泛化往往更好。
四、XGBoost 与 LightGBM:工程与算法的双重进化
XGBoost 在 GBDT 基础上做了系统性增强:对损失函数做二阶泰勒展开,引入显式正则项(叶子数 + 叶子权重平方),支持列采样与行采样,并实现了稀疏感知分裂与并行化。其目标函数为:
Obj = Σ [g_i·f_t(x_i) + 0.5·h_i·f_t(x_i)²] + γT + 0.5λΣw_j²
其中 g_i 为一阶梯度,h_i 为二阶梯度,T 为叶子数,w_j 为叶子权重
LightGBM 则从工程层面进一步突破:采用直方图算法将连续特征离散为桶,大幅降低分裂点搜索成本;引入 Leaf-wise 生长策略,每次选择增益最大的叶子分裂,在相同叶子数下精度更高;同时用 GOSS(基于梯度的单边采样)和 EFB(互斥特征捆绑)处理大样本高维稀疏数据。在 A 股全市场数千只股票、数百因子的场景下,LightGBM 的训练速度优势非常明显。
五、量化选股中的常见误区与复盘
- 误区一:用随机切分做时序验证。股票数据存在时间自相关,随机 K 折会导致未来信息泄露。应使用滚动窗口或 Purged K-Fold,并留出 embargo 间隔。
- 误区二:盲目加深树或增加树的数量。在低信噪比数据上,过多轮次会迅速过拟合。建议配合早停(early_stopping_rounds)和学习率衰减。
- 误区三:忽略特征的时间稳定性。某因子在训练期有效不代表未来有效。应定期做因子 IC 衰减监控,并在集成模型中引入时间衰减权重。
- 误区四:把 LightGBM 的 Leaf-wise 当作万能。小样本场景下 Leaf-wise 容易过拟合,此时可切换为 depth-wise 或限制 num_leaves。
实战建议:在选股任务中,先用随机森林快速筛选因子重要性,再用 LightGBM 做精细建模;两者结果差异较大的因子,往往值得单独做 IC 分析和行业中性化检验。
注意:集成模型输出的预测值不等于未来收益,它只是对条件期望的估计。仓位管理、交易成本和风险约束必须在模型之外单独处理,切勿把模型分数直接当作下单信号。