🎯 学习目标

  • 理解PCA的数学原理与几何意义
  • 掌握PCA的实现步骤
  • 学会使用sklearn进行PCA降维
  • 了解PCA的应用场景与局限性
数据降维概念图

什么是PCA

主成分分析(Principal Component Analysis,PCA)是一种线性降维技术。 通过正交变换将原始特征空间投影到新的正交坐标系,找到数据方差最大的方向(主成分), 从而在保留最大信息量的同时降低数据维度。

📐 PCA核心思想

几何意义

  • 找到数据分布的主要方向
  • 主成分之间相互正交
  • 第一主成分方差最大
  • 后续主成分方差递减

数学目标

  • 最大化投影后的方差
  • 最小化重构误差
  • 求解协方差矩阵的特征值
  • 特征向量即为主成分方向

🔄 PCA算法步骤

1️⃣

标准化

数据中心化(均值归零)

2️⃣

协方差矩阵

计算特征间协方差

3️⃣

特征分解

求特征值和特征向量

4️⃣

排序选择

按特征值降序排列

5️⃣

投影

数据投影到主成分

💻 代码实现

from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler import numpy as np # 数据标准化(重要!) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 创建PCA模型,保留95%的方差 pca = PCA(n_components=0.95) # 或指定整数维度数 X_pca = pca.fit_transform(X_scaled) # 查看降维后的维度 print(f'原始维度: {X.shape[1]}') print(f'降维后维度: {X_pca.shape[1]}') # 查看各主成分解释的方差比例 print(f'方差解释比例: {pca.explained_variance_ratio_}') print(f'累计方差解释: {pca.explained_variance_ratio_.cumsum()}') # 选择合适的主成分数量 pca_full = PCA().fit(X_scaled) import matplotlib.pyplot as plt plt.plot(np.cumsum(pca_full.explained_variance_ratio_)) plt.xlabel('主成分数量') plt.ylabel('累计方差解释比例') plt.show()

📊 方差解释比例

主成分 方差解释比例 累计比例
PC1 45.2% 45.2%
PC2 28.6% 73.8%
PC3 12.3% 86.1%
PC4 8.4% 94.5%
PC5 5.5% 100%
💡
注意事项

PCA对数据的尺度敏感,因此在应用PCA前必须进行标准化处理。否则,具有大尺度的特征会主导主成分的方向。

🎯 应用场景

📊

数据可视化

将高维数据降至2D/3D进行可视化展示

加速训练

降低特征维度,加速模型训练

🔍

去噪

去除方差较小的成分,保留主要信息

数据分析
图:PCA能有效降低数据维度同时保留关键信息

📝 本节小结

  • • PCA是一种线性降维技术,通过正交变换找到主成分
  • • 核心思想:最大化投影后的方差,最小化重构误差
  • • 使用前需要对数据进行标准化处理
  • • 可通过方差解释比例选择合适的主成分数量
  • • 广泛应用于可视化、加速训练、去噪等场景