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

  统计/机器学习 数据预处理 数据降维    浏览次数: 4107

当数据维数很高的时候,我们可以用PCA降维,但是降维前通常我们要对数据进行标准化,为什么要这样做?这有什么好处?

 

机器小白   2017-03-21 13:25



   2个回答 
23

PCA(主成分分析)所对应的数学理论是SVD(矩阵的奇异值分解)。而奇异值分解本身是完全不需要对矩阵中的元素做标准化或者去中心化的。

但是对于机器学习,我们通常会对矩阵(也就是数据)的每一列先进行标准化。

PCA通常是用于高维数据的降维,它可以将原来高维的数据投影到某个低维的空间上并使得其方差尽量大。如果数据其中某一特征(矩阵的某一列)的数值特别大,那么它在整个误差计算的比重上就很大,那么可以想象在投影到低维空间之后,为了使低秩分解逼近原数据,整个投影会去努力逼近最大的那一个特征,而忽略数值比较小的特征。因为在建模前我们并不知道每个特征的重要性,这很可能导致了大量的信息缺失。为了“公平”起见,防止过分捕捉某些数值大的特征,我们会对每个特征先进行标准化处理,使得它们的大小都在相同的范围内,然后再进行PCA。

此外,从计算的角度讲,PCA前对数据标准化还有另外一个好处。因为PCA通常是数值近似分解,而非求特征值、奇异值得到解析解,所以当我们使用梯度下降等算法进行PCA的时候,我们最好先要对数据进行标准化,这是有利于梯度下降法的收敛。

清风   2017-03-23 11:11

这个给力!估计很多人跟我一样,只注意到第二点。但是我觉得你写得第一点更重要! - 汪王往望   2017-04-15 11:33
谢谢!学习了! - PG Two   2017-09-08 13:09
应该说是数据都需要标准化,让每个维度的重要性一样。如果已知某维度比较重要,可以再乘上系数。然后再是PCA的问题。 - Zealing   2018-03-15 12:47
谢谢分享! - ccc225   2018-05-20 09:43
1

PCA实现的方式其实有四种:

  • 标准化数据后的协方差矩阵
  • 标准化数据后的相关系数矩阵
  • 未标准化数据后的相关系数矩阵
  • 标准化数据后的svd方式

这四种方式是等价的。

zhanglu   2018-03-28 12:58



  相关主题

PCA会降低分类器的精度吗?   3回答

sklearn.decomposition.PCA方法中fit, fit_transform, transform应该怎么用   1回答

为什么PCA被称作非监督式学习?   2回答

利用PCA降维,降到几维比较合适?   1回答

除了PCA,还有什么降维的方法?   10回答

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

PCA降维中的特征值和特征向量   2回答

PCA的目标函数   1回答

PCA和SVD是一回事吗?   1回答

在使用PCA降维时,有哪些坑?   6回答

hashing trick或者feature hashing是什么   1回答

分类变量,进行One hot编码,维度升高,如何处理?   3回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!