Shihanmax's blog

  
 

十六、主成分分析(PCA)

合集:统计学习方法笔记


统计学习方法:主成分分析(PCA)

一、主成分分析简介

(一)主成分分析的定义

主成分分析(Principal Component Analysis, PCA)是一种常用的无监督学习方法。它利用正交变换把由原始变量表示的观测数据转换为少数几个线性无关的新变量的数据。

(二)主成分分析的目的

  1. 降维:将高维数据映射到低维空间,在尽可能保留原始数据信息的前提下减少数据维度
  2. 去相关:将原始相关变量转换为相互独立的主成分
  3. 数据可视化:将高维数据降至2D/3D便于可视化分析

(三)主成分分析的优点

  1. 降维效果好:将数据投影到新坐标轴上,新坐标的第一个轴由方差最大的方向决定
  2. 去相关性强:新坐标轴上的变量是相互独立的
  3. 解释性强:每个主成分都有明确的物理意义

二、主成分分析的数学原理

(一)基本定义

设随机变量 $X = (x_1, x_2, \ldots, x_m)^T$,其协方差矩阵为 $\Sigma = Cov(X) = E[(X - \mu)(X - \mu)^T]$。

第一主成分是在所有单位向量 $\alpha_1$ 中使得投影方差最大的线性组合:
$$ \alpha_1 = \arg\max_{\alpha^T \alpha = 1} Var(\alpha^T X) = \arg\max_{\alpha^T \alpha = 1} \alpha^T \Sigma \alpha $$

(二)总体主成分分析

在总体上进行的主成分分析,即在无限样本的情况下进行。

(三)样本主成分分析

在有限样本的情况下进行。

(四)主成分的性质

  1. 方差最大性:第 $i$ 个主成分的方向是与前 $i-1$ 个主成分正交的所有方向中方差最大的方向
  2. 互不相关性:主成分之间是相互正交(不相关)的
  3. 降维有效性:通过保留前 $k$ 个主成分,可以实现数据的有效降维

(五)主成分的计算

设随机变量 $X = (X_1, X_2, \ldots, X_m)^T$,均值为 $\mu$,协方差矩阵为 $\Sigma$,则主成分 $Y_i$ 可以表示为:
$$ Y_i = a_i^T X, \quad i = 1, 2, \ldots, m $$
其中 $a_i$ 是协方差矩阵 $\Sigma$ 的第 $i$ 个特征向量,且满足:
$$ a_i^T a_j = \delta_{ij}, \quad i, j = 1, 2, \ldots, m $$

(六)主成分的贡献率

主成分的贡献率可以通过特征值来衡量,特征值越大,对应的主成分对数据的解释能力越强。

第 $i$ 个主成分的贡献率为:
$$ \frac{\lambda_i}{\sum_{j=1}^{m} \lambda_j} $$

前 $k$ 个主成分的累计贡献率为:
$$ \frac{\sum_{i=1}^{k} \lambda_i}{\sum_{j=1}^{m} \lambda_j} $$

三、主成分分析的步骤

(一)数据标准化

对原始数据中的数据进行标准化处理,使各变量具有相同的量纲。

对于样本数据 $X = [x_{ij}]_{n \times m}$,其中 $i=1,2,\ldots,n$,$j=1,2,\ldots,m$:

样本均值向量:
$$ \overline{x}_j = \frac{1}{n} \sum_{i=1}^{n} x_{ij}, \quad j=1,2,\ldots,m $$

标准化处理:
$$ x_{ij}^* = \frac{x_{ij} - \overline{x}_j}{\sqrt{s_{jj}}} $$
其中 $s_{jj} = \frac{1}{n-1} \sum_{i=1}^{n} (x_{ij} - \overline{x}_j)^2$

(二)计算协方差矩阵

设样本为 $X_1, X_2, \ldots, X_n$,则样本协方差矩阵 $S$ 为:
$$ S = [s_{ij}]_{m \times m}, \quad s_{ij} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{ki} - \overline{x}_i)(x_{kj} - \overline{x}_j), \quad i,j=1,2,\ldots,m $$

或者计算相关矩阵:
$$ R = [r_{ij}]_{m \times m}, \quad r_{ij} = \frac{s_{ij}}{\sqrt{s_{ii}s_{jj}}}, \quad i,j=1,2,\ldots,m $$

(三)特征值分解

对协方差矩阵 $S$(或相关矩阵 $R$)进行特征值分解,得到特征值和特征向量。

特征方程:
$$ |S - \lambda I| = 0 $$

求解得到特征值 $\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_m \geq 0$ 及对应的单位特征向量 $a_1, a_2, \ldots, a_m$。

(四)选择主成分

根据特征值的大小选择前 $k$ 个主成分,使得累计贡献率达到某个阈值(如85%)。

(五)数据投影

将原始数据投影到选定的主成分上,得到降维后的数据。

对于第 $i$ 个样本的主成分得分:
$$ y_{ij} = a_j^T (x_i - \overline{x}), \quad j=1,2,\ldots,k $$

四、协方差矩阵与相关矩阵

(一)协方差矩阵

设随机变量 $X = (x_1, x_2, \ldots, x_m)^T$ 的协方差矩阵为:
$$ \Sigma = [\sigma_{ij}] = \begin{bmatrix} \sigma_{11} & \sigma_{12} & \cdots & \sigma_{1m} \\ \sigma_{21} & \sigma_{22} & \cdots & \sigma_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{m1} & \sigma_{m2} & \cdots & \sigma_{mm} \end{bmatrix} $$
其中,$\sigma_{ij} = Cov(x_i, x_j) = E[(x_i - \mu_i)(x_j - \mu_j)]$

(二)相关矩阵

设随机变量 $X = (x_1, x_2, \ldots, x_m)^T$ 的相关矩阵为 $R$,其中:
$$ R = [r_{ij}] = \begin{bmatrix} r_{11} & r_{12} & \cdots & r_{1m} \\ r_{21} & r_{22} & \cdots & r_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ r_{m1} & r_{m2} & \cdots & r_{mm} \end{bmatrix} $$
其中,$r_{ij}$ 是 $x_i$ 和 $x_j$ 的相关系数:
$$ r_{ij} = \frac{\sigma_{ij}}{\sqrt{\sigma_{ii} \sigma_{jj}}} $$
且 $r_{ii} = 1$,即对角线上的元素均为 1。

(三)因子载荷

主成分 $Y_i$ 与变量 $X_j$ 的相关系数 $r(Y_i, X_j)$ 称为 因子载荷(factor loading),表示第 $i$ 个主成分 $Y_i$ 对变量 $X_j$ 的贡献程度:
$$ r(Y_i, X_j) = \frac{a_{ij} \sqrt{\lambda_i}}{\sqrt{\sigma_{jj}}} $$
其中 $a_{ij}$ 是第 $i$ 个特征向量的第 $j$ 个分量。

五、主成分分析的性质

(一)主成分的协方差矩阵

主成分的协方差矩阵是对角阵:
$$ Cov(Y) = \Lambda = diag(\lambda_1, \lambda_2, \ldots, \lambda_m) $$

(二)特征值与特征向量的关系

主成分的主要特征是协方差矩阵 $\Sigma$ 的特征值和特征向量:$\lambda_i$ 是 $\Sigma$ 的第 $i$ 大特征值,$a_i$ 是对应的单位正交特征向量。

(三)总方差不变性

主成分变换保持总方差不变:
$$ \sum_{i=1}^{m} \lambda_i = \sum_{j=1}^{m} \sigma_{jj} = tr(\Sigma) $$

六、样本主成分分析

(一)样本数据矩阵

设 $X = [x_{ij}]_{n \times m}$ 是样本数据矩阵,其中 $x_i = (x_{i1}, x_{i2}, \ldots, x_{im})^T$ 是第 $i$ 个样本。

(二)样本均值向量

$$ \overline{x} = (\overline{x}_1, \overline{x}_2, \ldots, \overline{x}_m)^T, \quad \overline{x}_j = \frac{1}{n} \sum_{i=1}^{n} x_{ij} $$

(三)样本协方差矩阵

$$ S = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \overline{x})(x_i - \overline{x})^T $$

或者:
$$ S = [s_{ij}]_{m \times m}, \quad s_{ij} = \frac{1}{n-1} \sum_{k=1}^{n} (x_{ki} - \overline{x}_i)(x_{kj} - \overline{x}_j) $$

(四)主成分得分

第 $i$ 个样本在第 $j$ 个主成分上的得分为:
$$ y_{ij} = a_j^T (x_i - \overline{x}) $$

七、主成分分析的应用

(一)数据降维

通过主成分分析可以将高维数据降维到低维空间,便于数据的可视化和分析。

(二)特征提取

主成分分析可以提取数据的主要特征,去除噪声和冗余信息。

(三)数据压缩

通过保留前 $k$ 个主成分,可以实现数据的压缩,减少存储空间和计算成本。

(四)异常检测

主成分分析可以用于检测数据中的异常点,通过观察数据在主成分空间中的分布情况。

八、主成分分析的局限性

(一)线性假设

主成分分析假设数据之间的关系是线性的,对于非线性关系的数据可能效果不佳。

(二)特征值敏感性

主成分分析对特征值的大小非常敏感,特征值较小的主成分可能会被忽略。

(三)解释性有限

虽然主成分具有明确的数学意义,但在实际应用中,主成分的物理意义可能不够直观。

(四)数据标准化依赖

主成分分析要求数据进行标准化处理,否则不同量纲的数据会影响分析结果。

九、主成分分析与奇异值分解

(一)SVD与PCA的关系

对于去中心化的数据矩阵 $X_c$(每列减去均值),其奇异值分解为:
$$ X_c = U \Sigma V^T $$

则 $X_c$ 的协方差矩阵为:
$$ S = \frac{1}{n-1} X_c^T X_c = \frac{1}{n-1} V \Sigma^T \Sigma V^T $$

因此:
- $X_c$ 的奇异值 $\sigma_i = \sqrt{(n-1)\lambda_i}$
- 右奇异向量 $V$ 的列向量就是主成分的特征向量
- 左奇异向量 $U$ 的列向量与主成分得分有关

(二)SVD算法优势

  1. 数值稳定性更好
  2. 适用于高维数据($m \gg n$ 或 $n \gg m$)
  3. 可以直接处理去中心化的数据矩阵

注:本文使用Qwen转换自本人的统计学习方法笔记