SVD与PCA的区别

参考:降维方法PCA与SVD的联系与区别

SVD与PCA的区别

1 从目的上来说:

  • SVD是一种矩阵分解方法,相当于因式分解,他的目的纯粹就是将一个矩阵拆分成多个矩阵相乘的形式。
  • PCA从名字上就很直观,找到矩阵的主成分,也就意味这从一出生这就是个降维的方法。

2 从方法上来说:

  • PCA在过程中要计算协方差矩阵,当样本数和特征数很多的时候,这个计算量是相当大的。
  • 注意到SVD也可以得到协方差矩阵最大的k个特征向量张成的矩阵,但是SVD有个好处,有一些SVD的实现算法可以不先求出协方差矩阵,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。

另一方面,A的奇异值分解迭代计算比协方差矩阵的特征值分解更快更准确。

注意到PCA仅仅使用了SVD的右奇异矩阵V,没有使用左奇异矩阵U,那么左奇异矩阵有什么用呢?

左奇异矩阵可以用于行数的压缩。相对的,右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。
换句话说,SVD可以获取另一个方向上的主成分,而PCA只能获得单个方向上的主成分。这一点在NLP的文本处理上得到了很大体现。

3 从操作上来说:

下面来看sklearn手册

这是 sklearn.decomposition.PCAfit_transform() 操作:

SVD与PCA的区别_第1张图片
image

这是 sklearn.decomposition.TruncatedSVDfit_transform() 操作:

SVD与PCA的区别_第2张图片
image

看到两者的区别了嘛?两者在输出上都是一样的,唯一的区别在输入,SVD可以输入稀疏矩阵(sparse matrix)。在原理上,也可以说SVD更适于输入稀疏矩阵。
因为PCA需要进行去均值化处理,所以不可避免的破坏了矩阵的稀疏性。所以,对于稀疏矩阵来说,SVD更适用,这样对于大数据来说节省了很大空间。

降维方法与推荐的关系

推荐系统中经常要建立用户 u 与 物品 i 的低维矩阵表示,U和M这两个矩阵是通过学习的方式得到的,一般采用随机的方式初始化,而不是直接做矩阵分解。

你可能感兴趣的:(SVD与PCA的区别)