主成分分析(PCA)算法的原理与实现步骤
字数 1454 2025-10-27 08:13:40
主成分分析(PCA)算法的原理与实现步骤
题目描述
主成分分析(PCA)是一种常用的无监督降维算法,旨在将高维数据投影到低维空间,同时保留数据的主要特征。其核心思想是通过线性变换找到数据方差最大的方向(即主成分),用较少的新变量(主成分)代替原始变量,从而实现数据压缩和可视化。例如,将100维的数据降至3维以便观察。
解题过程
1. 数据标准化
PCA对数据的尺度敏感,因此需先对每个特征进行标准化处理,使其均值为0、标准差为1。
- 步骤:
- 计算每个特征的均值:\(\mu_j = \frac{1}{n}\sum_{i=1}^n x_{ij}\)
- 计算标准差:\(\sigma_j = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_{ij} - \mu_j)^2}\)
- 标准化数据:\(z_{ij} = \frac{x_{ij} - \mu_j}{\sigma_j}\)
- 目的:消除不同单位或量级对方差计算的影响。
2. 计算协方差矩阵
协方差矩阵反映特征之间的线性相关性。
- 公式:\(C = \frac{1}{n} Z^T Z\),其中 \(Z\) 是标准化后的数据矩阵(每行一个样本,每列一个特征)。
- 解释:矩阵 \(C\) 的对角线是各特征的方差,非对角线是特征间的协方差。PCA的目标是让新特征间协方差为0(无关),从而简化结构。
3. 特征值分解
对协方差矩阵 \(C\) 进行特征值分解,找到主成分方向。
- 步骤:
- 求解特征方程:\(C \mathbf{v} = \lambda \mathbf{v}\),其中 \(\lambda\) 是特征值(代表主成分的方差大小),\(\mathbf{v}\) 是对应的特征向量(代表主成分方向)。
- 按特征值从大到小排序:\(\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_p\),对应的特征向量为 \(\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_p\)。
- 关键:最大特征值对应的特征向量 \(\mathbf{v}_1\) 是第一主成分方向(数据方差最大的投影方向)。
4. 选择主成分数量
通过累计方差贡献率确定保留的主成分数量 \(k\)(\(k < p\))。
- 计算每个主成分的方差贡献率:\(\frac{\lambda_i}{\sum_{j=1}^p \lambda_j}\)
- 累计方差贡献率:前 \(k\) 个主成分的贡献率之和应达到预设阈值(如85%或95%)。
- 示例:若前3个特征值的累计贡献率为90%,则保留 \(k=3\) 个主成分。
5. 投影到低维空间
用前 \(k\) 个特征向量构建投影矩阵 \(W = [\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_k]\),将原始数据映射到新空间。
- 降维后的数据:\(Z_{\text{new}} = Z \cdot W\)
- 结果:\(Z_{\text{new}}\) 是 \(n \times k\) 的矩阵,即每个样本用 \(k\) 个新特征(主成分)表示。
关键点总结
- PCA是线性降维方法,适用于高斯分布或近似高斯分布的数据。
- 主成分之间相互正交(无关),且按方差重要性排序。
- 实际应用中需注意:若数据非线性结构强,可考虑核PCA等改进方法。