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

本文介绍了PCA算法的一种新的理解方式,即将数据投影到低维空间并最小化投影误差的平方和。通过数学推导,文章详细阐述了如何找到最优的投影矩阵,并指出该矩阵由数据协方差矩阵的前k个特征向量组成。

PCA算法另外一种理解角度是:最小化点到投影后点的距离平方和.

假设我们有m个样本点,且都位于n维空间 中,而我们要把原n维空间中的样本点投影到k维子空间W中去(k<n),并使得这m个点到投影点的距离(即投影误差)的平方和最小.我们假设投影到的k维子空间的标准正交基(orthonormal basis)为 ,这组标准正交基组成了一个的矩阵U:

称为子空间W 的投影矩阵(projection matrix)。

如果我们不从标准正交基出发,如何求得W的投影矩阵?设是W 的任意一组基,形成一个的矩阵则W的投影矩阵是

投影矩阵具有如下性质:

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

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

由于是预先给定的样本点,故上式中第一项是定值,因此我们的问题转化为了求第二项的最大值,即

由于(其中U是以子空间W的标准正交基为列构成的矩阵),上面的问题等价于

对其进一步化简得:

因此,等价于

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

转载于:https://www.cnblogs.com/wacc/p/3428110.html

### 主成分分析 (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的核心运算逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值