1. 课程导入

在量化投资与智能投研的工程实践中,我们常常面对成百上千个候选因子:估值、动量、波动、流动性、情绪、资金流、行业景气度……它们来自不同数据源、不同频率、不同计算口径。直接把这些因子全部塞进模型,往往会遇到三个现实问题:维度灾难导致过拟合、因子间高度共线导致解释混乱、计算与存储成本随因子数量线性甚至超线性增长。本课程要解决的核心问题就是:如何用机器学习方法,把高维、冗余、噪声较大的原始因子集合,压缩成低维、稳定、可解释且保留预测能力的特征表示。

一句话定义:机器学习因子压缩与特征表示,是指利用线性或非线性学习方法,将原始高维因子矩阵映射到低维隐空间,在尽量保留有效预测信息的同时,去除冗余、噪声与共线性,并输出可用于下游模型训练或组合优化的新特征。

核心原理:从“因子堆叠”到“信息浓缩”

因子压缩的本质不是简单删列,而是信息重构。假设原始因子矩阵为 X(T×N,T 为时间样本,N 为因子数),我们希望找到一个映射 f,使得 Z=f(X),其中 Z 的维度 K 远小于 N,但 Z 对目标 y(如未来收益)的预测能力接近甚至优于 X。这个过程涉及三个关键判断:

  • 保留什么:是保留方差最大的方向(PCA),还是保留与标签最相关的方向(有监督降维),或是保留局部邻域结构(流形学习)。
  • 压缩多少:K 太小会欠拟合,K 太大会失去压缩意义。常用碎石图、累计方差贡献率、交叉验证误差曲线来确定。
  • 如何解释:压缩后的主成分或隐变量往往失去原始因子的业务含义,需要通过载荷矩阵、SHAP 值或重构误差回溯其经济逻辑。

从信息论视角看,因子压缩是在做率失真权衡:用更少的比特描述因子集合,允许一定信息损失,但要求下游任务损失最小。这也是为什么“压缩后模型效果反而更好”并不矛盾——因为被丢掉的主要是噪声和重复信息。

因子压缩与特征表示:信息流与维度变化 原始因子矩阵 X T×N,N 可达数百 估值因子 动量因子 波动因子 流动性因子 情绪与资金流 行业景气度 压缩与表示学习 线性 / 非线性 / 有监督 PCA / 因子分析 自编码器 AE / VAE PLS / 有监督降维 稀疏编码 / 字典学习 t-SNE / UMAP 可视化 聚类与因子分组 低维特征表示 Z T×K,K 通常 5~30 隐因子 1(市场) 隐因子 2(规模) 隐因子 3(价值) 隐因子 4(动量) 隐因子 5(波动) …… 至 K 维 输入 输出 目标:在保留预测信息的前提下,降低维度、去共线、去噪、提升泛化

方法流程:一条可复用的工程流水线

无论使用哪种具体算法,因子压缩与特征表示通常遵循以下六步流程。建议在实战中把它固化为可配置的流水线,而不是每次临时写脚本。

  1. 数据准备与对齐:统一频率、处理缺失值、做横截面标准化或去极值,确保 X 与 y 的时间对齐无未来函数。
  2. 因子筛选与分组:先做相关性聚类或 IC 初筛,把数百因子归入若干逻辑组,降低后续压缩的盲目性。
  3. 选择压缩方法:根据是否有标签、是否要求可解释、数据量大小,选择 PCA、PLS、自编码器或稀疏方法。
  4. 确定维度 K:用累计方差贡献率、交叉验证 IC、重构误差等指标联合判断。
  5. 训练与验证:严格按时间切分训练/验证/测试集,避免用全样本拟合降维器造成信息泄露。
  6. 下游接入与监控:把 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 维,并在样本外获得不劣于甚至优于原始因子的预测表现。