定义#
主成分分析把高维数据压缩到少数几个方差最大的方向。做法是对数据的协方差矩阵做特征分解,特征向量给出这些方向,特征值给出每个方向上的方差大小——方差越大,说明这个方向承载的信息越多。
在投资里它最常用于降维和提取风险因子:几百只股票的收益并不是几百个独立的故事,第一主成分往往就是「大盘一起涨跌」,后面几个可能对应行业或风格。用少数几个成分代替原始的高维协方差结构,既能减少噪声,也让风险来源变得可以描述。
公式#
其中 是中心化后的数据矩阵, 是协方差矩阵, 是特征值构成的对角矩阵, 是特征向量矩阵, 是第 个主成分。第 个成分的解释方差比例是 。
算一笔账#
对 5 只股票的日收益率做主成分分析,得到特征值 3.2、0.8、0.5、0.3、0.2,合计 5.0。
第一主成分解释 的总方差;前两个合计 。
结论是这 5 只股票表面上是 5 个变量,实际上有 80% 的共同波动可以用 2 个方向说清楚——第一个多半就是市场整体的涨跌。反过来说,等权持有这 5 只股票并不能得到 5 份分散,因为它们大部分时间在做同一件事。
常见问题#
做 PCA 之前要不要标准化?#
要,只要各列的量纲或波动尺度不一致就必须先做 z-score 标准化。PCA 追的是方差最大的方向,不标准化的话,数值本身较大的变量会仅仅因为单位不同就主导第一主成分。可以对同一份数据做标准化和不做标准化各跑一次,特征值分布的差异会非常直观。
主成分到底代表什么?#
数学上它只是一个方向,没有天然含义,解释需要结合业务知识。股票收益的第一主成分通常能对上「市场」,后面的成分可能对应行业或风格,但也可能什么都不是——尤其是特征值很小的那些,往往主要是噪声。不要强行给每个成分编故事。
取几个主成分合适?#
看累计解释方差比例,常见做法是取到累计覆盖 80%–90% 为止。保留太少会丢掉真实的风险来源,保留太多则把噪声也带进后续模型,用作机器学习特征时还会重新引入过拟合风险。这个取舍没有公式,需要结合下游用途判断。