PCA算法的最小平方误差解释

本文从最小化点到投影后点的距离平方和的角度重新解读PCA算法。通过对m个n维样本点进行投影,寻找最佳的k维子空间,使得投影误差平方和最小。利用拉格朗日乘数法求解得到协方差矩阵的前k个特征向量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCA算法另外一种理解角度是:最小化点到投影后点的距离平方和.
假设我们有m个样本点,且都位于n维空间
中,而我们要把原n维空间中的样本点投影到k维子空间中去(k<n),并使得这m个点到投影点的距离的平方和最小.我们进一步假设投影矩阵P已经是标准化过的了( ,其中 是n维的单位向量,且这组基向量两两正交)

投影矩阵具有如下性质:

记每一个点对应的投影误差为,且投影误差的表达式为,那么我们要最小化的表达式为:

为了后面的推导方便,我将上式除以即样本个数),由于其是定值,所以不影响我们问题的求解

由投影矩阵的性质有:

由投影矩阵的对称性有:

因此,等价于

求解上面的要用到最大方差解释中使用的Lagrangian Multiplier,在此不再赘述,而最后求得的就是协方差矩阵的前k个特征向量

### 主成分分析 (PCA) 中残差平方和最小化的原理 主成分分析的目标是在保留尽可能多的信息的同时降低数据维度。为了达到这一目标,PCA通过寻找能够最大化投影后方差的方向来进行降维处理[^2]。 具体来说,在PCA过程中,对于给定的数据集X,其大小为n×d(其中n代表样本数量,d表示原始特征数),算法试图找到一组正交向量$\mathbf{u}_i$作为新的坐标轴方向,使得当我们将原数据沿这些新轴重新映射时,所得到的新坐标的方差最大。这实际上等价于最小化重构误差或者说残差平方和(SSE)[^1]。 #### 数学表达形式 设$\hat{\mathbf{x}}_j=\sum_{k=1}^{p}\alpha_k\mathbf{u}_k$是对第$j$个观测值$x_j$的一个近似估计,这里的$p<d$意味着我们只选择了前几个最重要的主成分;而系数$\alpha_k=x_j^\top\mathbf{u}_k$则反映了该点在这条直线上的位置。那么针对整个训练集而言,总的重建损失可以定义如下: $$ SSE(\mathbf{U}) = \frac{1}{N}\sum_{j=1}^{N}\|\mathbf{x}_{j}-\hat{\mathbf{x}}_{j}\|^2 $$ 其中$\mathbf{U}$是由所有选定的主成分组成的矩阵[$\mathbf{u}_1,\dots ,\mathbf{u}_p]$。上述公式表明SSE衡量的是实际观察到的数据与其低维表示之间的差异程度。因此,优化过程旨在选取合适的$\mathbf{U}$使这个差距尽可能的小[^4]。 ```python import numpy as np def pca(X, n_components): # 计算协方差矩阵并标准化 cov_matrix = np.cov(X.T) # 特征分解获取特征值与特征向量 eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # 对应索引排序选出最大的n个特征值及其对应的特征向量 idx = eigenvalues.argsort()[::-1][:n_components] top_eigenvecs = eigenvectors[:,idx] return top_eigenvecs.real # 使用示例 data_points = [[...], [...]] # 输入您的数据点列表 principal_components = pca(np.array(data_points), 2) print(principal_components) ``` 在这个Python函数`pca()`里实现了基于协方差矩阵的方法来执行PCA操作,并返回指定数目$n\_components$的最大特征向量集合。此代码片段展示了如何利用线性代数工具包numpy完成PCA的核心运算逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值