NeuromatchAcademy课程笔记:主成分分析(PCA)原理与实践
2025-07-10 07:13:03作者:齐冠琰
概述
主成分分析(Principal Component Analysis, PCA)是一种广泛使用的降维技术,它通过将数据投影到新的正交基上来实现数据降维。本教程将详细介绍PCA的核心原理和实现步骤。
基础概念
协方差矩阵
在PCA中,协方差矩阵是关键的计算对象。对于真实数据集,我们通常无法获得真实的协方差矩阵Σ,而是使用样本协方差矩阵Σ̂来估计:
Σ̂_ij = (1/N)∑(x_i(k) - x̄_i)(x_j(k) - x̄_j)
其中x̄_i是第i个变量的样本均值。
特征值与特征向量
PCA的核心是计算协方差矩阵的特征值和特征向量。特征值表示数据在各个主成分方向上的方差大小,特征向量则定义了新的正交基方向。
PCA实现步骤
1. 数据准备与可视化
首先我们生成二维高斯分布数据并可视化:
# 定义协方差矩阵参数
var_1 = 1
var_2 = 1
corr_coef = 0.8
# 计算协方差矩阵
cov_matrix = calculate_cov_matrix(var_1, var_2, corr_coef)
# 生成数据
X = get_data(cov_matrix)
# 绘制数据
plot_data(X)
2. 计算样本协方差矩阵
# 计算样本协方差矩阵
sample_cov = np.cov(X.T)
3. 计算特征值与特征向量
# 计算特征值和特征向量
evals, evectors = np.linalg.eigh(sample_cov)
# 按降序排列特征值和特征向量
evals, evectors = sort_evals_descending(evals, evectors)
4. 可视化特征向量
# 绘制数据和新基向量
plot_basis_vectors(X, evectors)
5. 数据投影到新基
# 将数据投影到新基
Y = change_of_basis(X, evectors)
# 绘制变换后的数据
plot_data_new_basis(Y)
6. 特征值分析(碎石图)
# 绘制特征值
plot_eigenvalues(evals)
关键点解析
-
特征值意义:每个特征值对应数据在该主成分方向上的方差大小。较大的特征值表示该方向保留了更多数据信息。
-
特征向量方向:特征向量定义了新的正交坐标系,第一个主成分方向是数据方差最大的方向。
-
降维原理:通过保留前k个最大特征值对应的特征向量,可以实现从d维到k维的有效降维。
实际应用建议
-
数据标准化:在应用PCA前,通常需要对数据进行标准化处理(均值为0,方差为1)。
-
主成分选择:可以通过观察碎石图或计算累计方差贡献率来确定保留的主成分数量。
-
解释性:主成分通常是原始特征的线性组合,可能缺乏明确的物理意义。
总结
PCA通过寻找数据方差最大的方向来实现降维,其核心是协方差矩阵的特征分解。理解PCA的数学原理对于正确应用和解释结果至关重要。在实际应用中,PCA常用于数据可视化、噪声过滤和特征提取等场景。
通过本教程,我们系统地学习了PCA的实现步骤和原理,为进一步的降维技术学习打下了坚实基础。