1. 课程导入
在量化投资与智能投研的工程实践中,我们常常面对成百上千个候选因子:估值、动量、波动、流动性、情绪、资金流、行业景气度……它们来自不同数据源、不同频率、不同计算口径。直接把这些因子全部塞进模型,往往会遇到三个现实问题:维度灾难导致过拟合、因子间高度共线导致解释混乱、计算与存储成本随因子数量线性甚至超线性增长。本课程要解决的核心问题就是:如何用机器学习方法,把高维、冗余、噪声较大的原始因子集合,压缩成低维、稳定、可解释且保留预测能力的特征表示。
一句话定义:机器学习因子压缩与特征表示,是指利用线性或非线性学习方法,将原始高维因子矩阵映射到低维隐空间,在尽量保留有效预测信息的同时,去除冗余、噪声与共线性,并输出可用于下游模型训练或组合优化的新特征。
核心原理:从“因子堆叠”到“信息浓缩”
因子压缩的本质不是简单删列,而是信息重构。假设原始因子矩阵为 X(T×N,T 为时间样本,N 为因子数),我们希望找到一个映射 f,使得 Z=f(X),其中 Z 的维度 K 远小于 N,但 Z 对目标 y(如未来收益)的预测能力接近甚至优于 X。这个过程涉及三个关键判断:
- 保留什么:是保留方差最大的方向(PCA),还是保留与标签最相关的方向(有监督降维),或是保留局部邻域结构(流形学习)。
- 压缩多少:K 太小会欠拟合,K 太大会失去压缩意义。常用碎石图、累计方差贡献率、交叉验证误差曲线来确定。
- 如何解释:压缩后的主成分或隐变量往往失去原始因子的业务含义,需要通过载荷矩阵、SHAP 值或重构误差回溯其经济逻辑。
从信息论视角看,因子压缩是在做率失真权衡:用更少的比特描述因子集合,允许一定信息损失,但要求下游任务损失最小。这也是为什么“压缩后模型效果反而更好”并不矛盾——因为被丢掉的主要是噪声和重复信息。
方法流程:一条可复用的工程流水线
无论使用哪种具体算法,因子压缩与特征表示通常遵循以下六步流程。建议在实战中把它固化为可配置的流水线,而不是每次临时写脚本。
- 数据准备与对齐:统一频率、处理缺失值、做横截面标准化或去极值,确保 X 与 y 的时间对齐无未来函数。
- 因子筛选与分组:先做相关性聚类或 IC 初筛,把数百因子归入若干逻辑组,降低后续压缩的盲目性。
- 选择压缩方法:根据是否有标签、是否要求可解释、数据量大小,选择 PCA、PLS、自编码器或稀疏方法。
- 确定维度 K:用累计方差贡献率、交叉验证 IC、重构误差等指标联合判断。
- 训练与验证:严格按时间切分训练/验证/测试集,避免用全样本拟合降维器造成信息泄露。
- 下游接入与监控:把 Z 输入预测模型或组合优化器,持续监控特征漂移与 IC 衰减。
实战提示:降维器本身也是模型参数的一部分。PCA 的均值与投影矩阵、自编码器的权重,都必须在训练集上拟合,再应用到验证集和测试集。很多“回测很好、实盘失效”的案例,根源就是全样本拟合降维器。
案例场景:从 200 个因子到 12 维特征
假设我们有一个 A 股中证 500 增强项目,原始因子库包含 200 个日频因子。直接输入 LightGBM 后,训练集 AUC 很高,但验证集 IC 从 0.06 掉到 0.02,特征重要度分散且不稳定。引入因子压缩后,流程如下:
| 阶段 | 操作 | 维度变化 | 关键指标 |
|---|---|---|---|
| 原始因子 | 200 个日频因子,横截面标准化 | 200 | 平均两两相关 0.35 |
| 相关性聚类 | 按 1-|corr| 距离层次聚类 | 200 → 28 组 | 组内相关 > 0.7 |
| 组内 PCA | 每组保留第一主成分 | 28 | 累计方差 82% |
| 有监督压缩 | PLS 提取 12 个潜变量 | 12 | 验证集 IC 0.055 |
| 下游模型 | LightGBM + 12 维特征 | 12 | 验证集 IC 0.061,换手下降 |
这个案例说明:压缩不是目的,用更少的信息载体获得更稳的样本外表现才是目的。维度从 200 降到 12,模型复杂度大幅下降,过拟合空间被压缩,同时计算效率提升了一个数量级。
常见误区与复盘
- 误区一:压缩一定损失信息。实际上丢掉的多是噪声与重复信息,样本外表现常会提升。
- 误区二:只看累计方差贡献率。方差大不等于预测力强,PCA 无监督,可能把与收益相关的低方差方向丢掉。应结合有监督指标。
- 误区三:忽略时间序列特性。因子压缩必须按时间滚动或扩展窗口拟合,不能随机打乱样本。
- 误区四:过度追求可解释性。自编码器隐变量难解释,但可通过载荷回溯、重构误差和 SHAP 做近似归因,不必因噎废食。
- 误区五:压缩后不再监控。市场结构变化会导致隐空间漂移,需定期重估重构误差与特征分布。
复盘要点:每次压缩实验都要记录三组数字——压缩前基线 IC、压缩后 IC、维度 K。如果压缩后 IC 下降超过 20%,优先检查降维器是否泄露、K 是否过小、标准化是否在训练集内完成。
整体课程框架与实战项目概览
本课程共 30 章,围绕“原理—方法—实战—复盘”四条主线展开。前半部分建立线性与非线性压缩的方法论,中段深入自编码器、变分自编码器、稀疏编码与流形学习,后半部分聚焦因子压缩在量化选股、风险建模与组合优化中的落地。每章都配有可运行的代码片段与参数清单。
# 课程实战项目:因子压缩流水线(示意配置)
project:
name: factor_compression_lab
data:
universe: csi500
freq: daily
start: 2018-01-01
end: 2024-12-31
factors:
raw_count: 200
preprocess: [winsorize, standardize, neutralize]
compression:
method: pls # 可选 pca / ae / vae / sparse
n_components: 12
fit_window: expanding
downstream:
model: lightgbm
target: forward_5d_return
metric: [ic, rank_ic, turnover]
学习目标可以归纳为四点:第一,理解因子压缩的数学原理与适用边界;第二,掌握 PCA、PLS、自编码器、稀疏编码等主流方法的实现与调参;第三,能够独立搭建一条无信息泄露的因子压缩流水线;第四,学会用 IC、重构误差、特征漂移等指标评估压缩效果并做迭代复盘。完成课程后,你应当能把一个数百因子的原始池,稳定压缩到 10~30 维,并在样本外获得不劣于甚至优于原始因子的预测表现。