PCA和SVD是一回事吗?

  数学 线性代数 数值计算 最优化    浏览次数:9126        分享
6

大概我明白,是做矩阵分解、降维的。但是这两个概念我有点混淆,它们是一个概念吗?有区别吗?多谢多谢!比心!


 

NextPage   2017-09-06 13:32



   1个回答 
11

它们不是一个回事,但是本质上是一样的。PCA的理论基础是SVD。所以是可以看作是一回事。

假设数据集是矩阵$X$,$n$行$p$列。

简单来说,SVD可以把$X$分解成如下形式:

$$X=\sum_{i=1}^r \sigma_iu_iv_i^T$$

这里的$r$是矩阵$X$的秩,$\sigma_i$是奇异值(为了方便,通常从$\sigma_1$到$\sigma_r$按照从大到小排列),$u_i$是高度为$n$的列向量,$v_i$是高度为$p$的列向量。$X$被表示为了$r$个成分的和。


SVD的工作完成后,就轮到PCA出场了。PCA的中文是主成分分析。假设我们想将$X$降为到$k$维,我们就选择最大的$k$个奇异值和它对应的$u_i, v_i$,也就是前$k$个主要成分。假设$\sigma_i$按照从大到小排列,那么$X$降为到$k$维之后应该是这样的

$$\sum_{i=1}^k\sigma_iu_iv_i^T$$

上面这个矩阵就是$k\times p$的矩阵。

如果想知道上面这个矩阵解释了原矩阵$X$方差的百分比,只需要计算

$$\frac{\sum_{i=1}^k \sigma_i^2}{\sum_{j=1}^r\sigma_j^2}$$

通常来说,在用PCA降维时,我们保留90%或者95%的方差。也就是上面的分式至少要大于0.9。


SofaSofa数据科学社区DS面试题库 DS面经

沛县李刚   2017-09-13 13:14



  相关讨论

什么是Hessian矩阵和Jacobian矩阵

PCA与非负矩阵分解(NMF)的异同?

对于小批量随机剃度下降法(mini-batch SGD),如何选择每批样本的数量?

梯度上升算法是什么?

为什么梯度的反方向是函数下降最快的方向?

随机平均梯度法(Stochasitc Average Gradient)和随机梯度下降(SGD)有什么区别

Newton–Raphson和牛顿法区别?

RMSProp的直白解释

最速下降法与梯度下降法

牛顿法到底是一阶优化算法还是二阶优化算法?

  随便看看

pytorch里view(-1, 1)什么意思?

kNN算法有哪些缺点?

PCA降维之前为什么要先标准化?

pandas.DataFrame的index重新排列(从0开始)

xgboost的gblinear是什么意思?