Random Forest 技术文档
随机森林(Random Forest)是 Leo Breiman 于 2001 年提出的集成学习方法,通过 Bootstrap 采样和随机特征子集构建多棵决策树均值集成,是 A 股量化选股最常用的基础模型之一。
模型简介
随机森林在每棵树的训练过程中引入双重随机性:
- Bootstrap 采样:对训练集进行有放回抽样,每棵树使用不同样本
- 随机特征子集:每次分裂仅从 $\sqrt{p}$(分类)或 $p/3$(回归)个特征中寻找最优分裂
这种设计使各树之间相关性降低,集成后方差大幅减小,同时保持低偏差。
原始论文:Random Forests — Leo Breiman, Machine Learning 45(1), 5–32, 2001
在 A 股量化策略中的应用
1. 多因子选股
将价值、成长、动量、质量等几十个 Alpha 因子作为输入特征,以次日涨跌或未来收益为标签训练分类/回归随机森林,输出个股得分进行排名选股。
2. 特征重要性(因子筛选)
feature_importances_ 基于 MDI(Mean Decrease Impurity)计算,可无监督地筛选对收益预测贡献最大的因子,替代传统 IC 值排名法。
3. 袋外误差(OOB)评估
设置 oob_score=True 直接获得无需交叉验证的泛化误差估计,节省回测计算量,且自然适应时序数据(OOB 样本不参与该树训练)。
核心参数(金融应用推荐)
| 参数 | 说明 | 推荐值 |
|---|---|---|
n_estimators | 树的数量 | 100–500 |
max_features | 每次分裂特征数 | "sqrt"(分类) |
max_depth | 树最大深度 | None 或 5–15 |
min_samples_leaf | 叶子最少样本 | 5–20 |
oob_score | 开启袋外评估 | True |
n_jobs | 并行数 | -1(全核) |
class_weight | 类别权重 | 'balanced' |
性能特点
优势:
- 对异常值和噪声鲁棒,适合 A 股数据质量参差不齐的场景
- 无需特征标准化,原始因子值可直接输入
- OOB 估计避免数据泄露,特别适合金融时序回测
feature_importances_直接产出因子排名
劣势:
- 预测速度比单决策树慢(需集成所有树)
- 树数量过多时内存占用大
- 精度通常不如 Boosting 模型(高偏差)
