主成分分析模拟器 返回
统计与多元分析模拟器

主成分分析(PCA)模拟器 — 二维数据的特征值分解

对二维相关数据进行 PCA 的可视化。从协方差矩阵的特征值分解计算主成分轴和贡献率,调节相关系数和标准差以学习数据结构与降维原理。

参数设置
相关系数 ρ
标准差 σ_x
标准差 σ_y
样本数 N

数据由固定种子 LCG 加 Box-Muller 变换生成,相同参数总会得到相同点云。

计算结果
第 1 主成分特征值 λ₁
第 2 主成分特征值 λ₂
第 1 主成分贡献率
第 1 主轴倾角
散点图与主成分轴

灰色圆点=数据点/白色×=均值/红色箭头=第 1 主轴(长度 √λ₁)/蓝色箭头=第 2 主轴/绿色实线=1σ 协方差椭圆

理论与主要公式

给定二维数据 X = {(x_i, y_i)},先减去均值进行中心化,然后构造样本协方差矩阵。

2×2 协方差矩阵;σ_xx、σ_yy 为方差,σ_xy 为协方差:

$$C = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} \\ \sigma_{xy} & \sigma_{yy} \end{bmatrix}, \quad \sigma_{xy} = \frac{1}{n-1}\sum_i (x_i-\bar{x})(y_i-\bar{y})$$

2×2 特征值的闭式解;T 为迹,D 为行列式:

$$\lambda_{1,2} = \frac{T \pm \sqrt{T^2 - 4D}}{2}, \quad T = \sigma_{xx}+\sigma_{yy}, \quad D = \sigma_{xx}\sigma_{yy} - \sigma_{xy}^2$$

第 i 主成分的贡献率(占总方差的比例):

$$r_i = \frac{\lambda_i}{\lambda_1 + \lambda_2}$$

特征向量 $v_i$ 满足 $(C - \lambda_i I) v = 0$,指向数据的主要变化方向。第 1 主成分是方差最大的方向。

主成分分析模拟器是什么

🙋
PCA 经常听到,但到底在做什么?散点图上就只有两个箭头啊…
🎓
简单说,PCA 在寻找数据"最展开的方向"。把上面的相关系数 ρ 调到 0.8 看看——点云会变成右上斜的椭圆。那个伸长方向就是红色箭头,第 1 主成分(PC1)。它是数据中方差最大的轴。
🙋
蓝色箭头是什么?
🎓
是与第 1 主成分正交的第 2 主成分。二维数据最多只有 2 个主成分。看一下贡献率卡片——当 ρ=0.8, σ_x=2, σ_y=1 时,仅 PC1 就解释了约 94% 的总方差。这就是降维的威力。即使是 100 维的数据,靠前 2~3 个主成分常常就能解释 80% 以上。
🙋
把相关系数设为 0,箭头就贴着 x 轴和 y 轴了。这是自动的吗?
🎓
是的。当 ρ=0 且 σ_x ≠ σ_y 时,协方差矩阵是对角矩阵,特征向量就是标准坐标轴本身。PC1 指向方差较大的那个轴——σ_x=2, σ_y=1 时就是 x 轴方向。但如果 σ_x=σ_y 并且 ρ=0,矩阵就变成单位矩阵的常数倍,主成分方向变得不确定。这叫"退化",本质上无法决定方向。
🙋
把样本数 N 减到 10,椭圆和箭头就抖了。
🎓
观察很敏锐。这就是抽样噪声。理论上 ρ=0.8, σ_x=2, σ_y=1 时 λ₁=4.69, λ₂=0.31,但 N 小时样本估计会抖。实务中常用经验是"样本数至少是变量数的 10 倍"。把 N 调到 200,样本估计就紧紧贴近理论值了。

常见问题

图像识别(特征脸的人脸识别)、自然语言处理(潜在语义分析)、金融工程(股票数据的主因子提取)、生物学(基因表达数据可视化)、品质管理(多元控制图)、机器学习预处理(降维、去噪)等,几乎所有需要处理高维相关数据的领域都会用到。它有一百多年的历史,是最基本、应用最广的多元分析方法。
数学上等价。对中心化数据矩阵做 SVD:X_c = U Σ V^T,V 的列就是主成分(特征向量),Σ²/(n-1) 的对角元素就是特征值。实现上不显式构造协方差矩阵的 SVD 实现更数值稳定,特别是变量数 p 大于样本数 n 时优势明显。scikit-learn 的 PCA 内部也使用 SVD。
把主成分得分除以 √λ_i,使所有主成分方差都为 1 的处理。结果数据像不相关的单位方差白噪声。用于独立成分分析(ICA)的预处理、高斯过程的预处理、深度学习输入归一化。但除以非常小的特征值会数值不稳定,所以通常会丢弃低于阈值的主成分,或加正则项(ε-whitening)。
先标准化(每个变量变为零均值、单位方差)再应用 PCA 是铁律。例如混合身高(cm)、体重(kg)、年龄(年)时,单纯因为身高数值大,PC1 就会被身高轴支配。标准化后所有变量以同等权重贡献。这叫"对相关矩阵做 PCA",与"对协方差矩阵做 PCA"区分。物理单位相同的变量有时不需要标准化。

现实世界中的应用

图像识别(特征脸):1990 年代由 Turk 和 Pentland 提出的"特征脸(Eigenfaces)"是 PCA 最著名的应用。把大量人脸图像作为高维向量集合并应用 PCA,上层主成分会表达"人脸的主要变化模式"(亮度、发型、表情等)。识别时把目标人脸投影到主成分坐标,按与注册人脸的距离判断。简单但在深度学习出现前是标准方法。

基因表达数据可视化:对微阵列或 RNA-seq 得到的数万维基因表达数据应用 PCA,可以把样本(患者、组织、条件)可视化为二三维散点图。癌症亚型分类、药物反应差异比较等是标准工具。生物信息学论文中 PCA 散点图常常作为"第一张图"出现。

金融工程的因子模型:对股票收益的协方差矩阵做 PCA,第 1 主成分常常表达"市场整体走向",第 2 主成分表达"行业相对变化",第 3 主成分表达"规模效应"等。是投资组合优化和风险建模的基础。

品质管理与异常检测:对制造过程的多元传感器数据应用 PCA,仅保留上层主成分作为"正常状态"模型。新数据进来时,主成分空间内的距离(T² 统计量)或被丢弃主成分上的投影量(Q 统计量)变大就判定为"异常"。半导体制造、化工厂已实用化。

常见误解与注意事项

最常见的误解是"主成分一定有物理意义"的想法。主成分是数学上以"方差最大方向"决定的,未必有可解释的意义。例如客户问卷的第 1 主成分有时能解释为"总满意度"、第 2 主成分为"价格 vs 品质权衡",但也有解释不通的情况。务必养成查看载荷(对每个原变量的系数)、把握是什么线性组合的习惯。

其次常见的是用 PCA 处理非线性结构的失败。PCA 是线性方法,数据按曲面(如瑞士卷状)分布时主成分轴无法捕捉。在模拟器中把 ρ 调近 0 并使 σ_x ≈ σ_y,主成分方向就会变得不确定。同样,对环状或复杂簇结构的数据,应考虑核 PCA、t-SNE、UMAP、自编码器等非线性方法。"先 PCA 降维再机器学习"作为基线优秀但并非万能。

最后,不要低估"样本值与理论值之差"。即使在本模拟器中,N=40 的有限样本计算的特征值与总体理论值(λ₁=4.69, λ₂=0.31)也会偏差数个百分点。N=10 时偏差更大。实务中判断"保留几个主成分够"、"观测到的贡献率是否统计显著"时,建议用自助法(bootstrap)或交叉验证评估特征值的置信区间。样本数少时的 PCA 重要的是不仅报告点估计,也要一同报告不确定性。