您的位置:首页 > 其它

数据预处理:PCA,SVD,whitening,normalization

2015-11-18 16:50 246 查看
数据预处理是为了让算法有更好的表现,whitening、PCA、SVD都是预处理的方式:

whitening的目标是让特征向量中的特征之间不相关,PCA的目标是降低特征向量的维度,SVD的目标是提高稀疏矩阵运算的运算速度。

whitening

whiten的目的是解除特征向量中各个特征之间的相关性,同时保证保证每个特征的方差一致,是数据集归一化的一种形式。设特征向量 X = (X1,X2,X2),未知的量是随机变量,因此X1 X2 X3 都是随机变量,他们都服从某个分布,有确定的期望。注意到whitening和单纯的解耦是不一样的。

对于向量 X,可以计算出相应的协方差矩阵(根据已有数据集来估计)。我们希望协方差矩阵是一个对角矩阵,因为这意味着 X 的每个元素之间都是互不关联的,但是有时候我们的数据并不具有这样的性质。为了解耦数据,我们需要对原始特征向量执行一个变换,从而使得变换后的向量 Y 的各个特征之间相关性为0。设 Σ 是 X 的协方差矩阵,有:

ΣΦ=ΦΛ

那么 Λ 中的每个元素都是协方差矩阵的特征值,Φ 的每个列向量是相应的特征向量。如果对特征向量做变换:

Y = XΦ = X(Φ1, Φ2, Φ3)

那么可以证明,根据向量 Y 计算出来的协方差矩阵是一个对角矩阵。

对角矩阵 Λ 的特征值就是 Y 的每个元素的方差,可以全部相同,也可能不相同。如果对变换后的特征向量的某些维度进行缩放,使得 Λ 的每个元素都相等,那么整个过程就是 whitening.

PCA

主成分分析的过程也需要计算随机向量的协方差矩阵,并对原始的数据集进行相应的变换达到解耦效果。但是PCA的最终目的不是保证特征向量的每个特征的方差相等,而是略去那些方差太小的特征,从而降低特征向量的维度。也就是说,PCA和whitening的区别体现在是缩放还是略去变换后的某些特征。

需要注意,主成分分析略去的是变换后的特征,而不会略去原始数据集中的特征,因为很有可能是因为单位的问题,比如厘米,毫米,如果单位选得比较大,原始数据就会比较小,然而这并不意味着这是没有用特征。进行PCA之前应该先进行归一化处理,但对于变换后的特征而言,特征方差特别接近0,就不应该使用whitening了,因为方差几乎为0很有可能意味着数据集的秩小于列数,包含“冗余特征”。

SVD

对一个矩阵可以奇异值分解,可以类比初等代数中的因式分解,分解的目的很多时候是为了让计算更加容易:

D = U Σ VT

为什么我们要进行这样一个分解呢?矩阵之间的运算往往是非常耗时的,对于一些非常稀疏的矩阵(也就是大部分元素都是0),可能大部分计算都是在执行类似 0 * 0 = 0 这样的语句。奇异值分解的目的就是将原始矩阵分解后,可以删除一部分元素,也能近似还原原矩阵,这样 D 可以被近似分解为三个小维度的矩阵。

很稀疏的矩阵是很常见的,比如在推荐、信息检索等领域,SVD就很有用了,它可一把公式中很大的矩阵近似分解成为一些维度较小的矩阵,极大加快计算速度。

normalization

归一化就是希望特征向量每个特征的期望在原点,方差也相同,和whitening相同的思想,但是没有旋转变换的过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: