主成分分析-PCA

主成分分析-PCA

主成分分析(PCA)是一种降维算法,通过将原始变量进行线性组合,生成互不相关的主成分,从而保留数据的主要信息,以此来去噪,提升数据处理速度。PCA 常用于数据简化、聚类分析及解决回归中多重共线性问题,但在解释主成分时往往较为模糊,故不常用于评价模型。


一、简介

  • 目标: 用较少的新变量替代原来较多的变量,尽可能保留原有信息。
  • 应用: 数据降维、去除噪声、提升数据处理速度。
  • 适用场景:指标高度相关易于解释、可解释需求低。
  • 局限性:非线性关系处理的不好,贡献度若是不足可能会丢失细节。

二、思想

假设有 $n$ 个样本和 $p$ 个指标,构成一个 $ n \times p$ 的样本矩阵:

$$
X = \begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1p} \
x_{21} & x_{22} & \cdots & x_{2p} \
\vdots & \vdots & \ddots & \vdots \
x_{n1} & x_{n2} & \cdots & x_{np} \
\end{bmatrix}
= (x_1, x_2, \cdots, x_p)
$$
目标是寻找新的变量 $ z_1, z_2, \dots, z_m $(其中 $ m \leq p $),使其满足:

$$
\begin{cases}
z_1 = l_{11}x_1 + l_{12}x_2 + \cdots + l_{1p}x_p \
z_2 = l_{21}x_1 + l_{22}x_2 + \cdots + l_{2p}x_p \
\vdots \
z_m = l_{m1}x_1 + l_{m2}x_2 + \cdots + l_{mp}x_p \
\end{cases}
$$
系数 $ l_{ij} $ 的确定原则:

  1. 不同主成分之间彼此不相关。
  2. 第一主成分是所有线性组合中方差最大的。
  3. 第二主成分在与第一主成分不相关的条件下方差最大。
  4. 依此类推,直到选出 $ m $ 个主成分。

三、计算步骤

1. 数据标准化

  • 计算均值和标准差:
    $$
    \bar{x}j = \frac{1}{n} \sum{i=1}^{n} x_{ij},\quad S_j = \sqrt{\frac{\sum_{i=1}^{n}(x_{ij}-\bar{x}_j)^2}{n-1}}
    $$

  • 标准化数据:
    $$
    X_{ij} = \frac{x_{ij}-\bar{x}_j}{S_j}
    $$

  • 标准化后的矩阵:
    $$
    X = \begin{bmatrix}
    X_{11} & X_{12} & \cdots & X_{1p} \
    X_{21} & X_{22} & \cdots & X_{2p} \
    \vdots & \vdots & \ddots & \vdots \
    X_{n1} & X_{n2} & \cdots & X_{np} \
    \end{bmatrix}
    $$

2. 计算协方差矩阵

  • 定义:
    $$
    R = \begin{bmatrix}
    r_{11} & r_{12} & \cdots & r_{1p} \
    r_{21} & r_{22} & \cdots & r_{2p} \
    \vdots & \vdots & \ddots & \vdots \
    r_{p1} & r_{p2} & \cdots & r_{pp} \
    \end{bmatrix},\quad r_{ij} = \frac{1}{n-1}\sum_{k=1}^{n} X_{ki} X_{kj}
    $$

3. 求解特征值和特征向量

  • 特征值:
    $$
    \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_p \geq 0
    $$
    (且 $ R $ 为半正定矩阵)

  • 对应的特征向量:
    $$
    a_1 = \begin{bmatrix} a_{11} \ a_{21} \ \vdots \ a_{p1} \end{bmatrix},\quad
    a_2 = \begin{bmatrix} a_{12} \ a_{22} \ \vdots \ a_{p2} \end{bmatrix},\quad \dots,\quad
    a_p = \begin{bmatrix} a_{1p} \ a_{2p} \ \vdots \ a_{pp} \end{bmatrix}
    $$

4. 计算贡献率和累计贡献率

  • 贡献率:
    $$
    \text{贡献率} = \frac{\lambda_i}{\sum_{k=1}^{p}\lambda_k}
    $$

  • 累计贡献率:
    $$
    \text{累计贡献率} = \frac{\sum_{k=1}^{i}\lambda_k}{\sum_{k=1}^{p}\lambda_k}\quad (i=1,2,\dots,p)
    $$

5. 写出主成分

一般选择累计贡献率超过 80% 的前 ( m ) 个主成分:

$$
F_i = a_{1i}X_1 + a_{2i}X_2 + \cdots + a_{pi}X_p,\quad (i=1,2,\dots,m)
$$

6. 主成分的解释

根据各指标在主成分中的载荷大小判断该主成分代表的含义,载荷越大的指标对该主成分的影响越大。


四、扩展

  1. 聚类分析: 可通过降维简化自变量,便于图形展示。
  2. 回归分析: 可用于缓解多重共线性问题。
  3. 因子分析: PCA 实际上是因子分析的一种特例,但因子分析在解释方面更具优势,建议多用因子分析。

参考资料

清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析_x10为生均教育经费对以上指标数据做主成分分析,并提取主成分-CSDN博客

数学建模中的主成分分析(PCA)详解与应用-百度开发者中心

【数模百科】一文讲清楚主成分分析PCA(附python代码) - 知乎


主成分分析-PCA
http://example.com/posts/2025/04/01/principal-component-analysis/
作者
ZHW
发布于
2025年4月1日
许可协议