跳到主内容
@wquguru
术语风险与组合

主成分分析 Principal Component Analysis

2026-09-05 更新

定义#

主成分分析把高维数据压缩到少数几个方差最大的方向。做法是对数据的协方差矩阵做特征分解,特征向量给出这些方向,特征值给出每个方向上的方差大小——方差越大,说明这个方向承载的信息越多。

在投资里它最常用于降维和提取风险因子:几百只股票的收益并不是几百个独立的故事,第一主成分往往就是「大盘一起涨跌」,后面几个可能对应行业或风格。用少数几个成分代替原始的高维协方差结构,既能减少噪声,也让风险来源变得可以描述。

公式#

C=1n1XX,C=PΛP,Vk=PkXC = \frac{1}{n-1} X X^{\top}, \qquad C = P \Lambda P^{\top}, \qquad V_k = P_k^{\top} X

其中 XX 是中心化后的数据矩阵,CC 是协方差矩阵,Λ\Lambda 是特征值构成的对角矩阵,PP 是特征向量矩阵,VkV_k 是第 kk 个主成分。第 kk 个成分的解释方差比例是 λk/jλj\lambda_k / \sum_j \lambda_j

算一笔账#

对 5 只股票的日收益率做主成分分析,得到特征值 3.2、0.8、0.5、0.3、0.2,合计 5.0。

第一主成分解释 3.2/5.0=64%3.2/5.0 = 64\% 的总方差;前两个合计 (3.2+0.8)/5.0=80%(3.2+0.8)/5.0 = 80\%

结论是这 5 只股票表面上是 5 个变量,实际上有 80% 的共同波动可以用 2 个方向说清楚——第一个多半就是市场整体的涨跌。反过来说,等权持有这 5 只股票并不能得到 5 份分散,因为它们大部分时间在做同一件事。

常见问题#

做 PCA 之前要不要标准化?#

要,只要各列的量纲或波动尺度不一致就必须先做 z-score 标准化。PCA 追的是方差最大的方向,不标准化的话,数值本身较大的变量会仅仅因为单位不同就主导第一主成分。可以对同一份数据做标准化和不做标准化各跑一次,特征值分布的差异会非常直观。

主成分到底代表什么?#

数学上它只是一个方向,没有天然含义,解释需要结合业务知识。股票收益的第一主成分通常能对上「市场」,后面的成分可能对应行业或风格,但也可能什么都不是——尤其是特征值很小的那些,往往主要是噪声。不要强行给每个成分编故事。

取几个主成分合适?#

看累计解释方差比例,常见做法是取到累计覆盖 80%–90% 为止。保留太少会丢掉真实的风险来源,保留太多则把噪声也带进后续模型,用作机器学习特征时还会重新引入过拟合风险。这个取舍没有公式,需要结合下游用途判断。

相关术语

出自