数据预处理是为了让算法有更好的表现,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就相当于一次坐标变换,把高维数据变换到低维数据。在语义分析任务中,设矩阵D的每行代表一篇文章,每列代表一个词汇,那么U代表的含义就是没篇文章的语义表示,VT代表的含义就是每个词汇的语义表示。计算文章或者词汇的相似度就变得容易多了。基于相似度的推荐是同样的道理。

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

normalization

归一化就是希望特征向量每个特征的期望在原点,方差也相同,和whitening相同的思想,但是没有旋转变换的过程。

数据预处理:PCA,SVD,whitening,normalization的更多相关文章

  1. 数据预处理中归一化(Normalization)与损失函数中正则化(Regularization)解惑

    背景:数据挖掘/机器学习中的术语较多,而且我的知识有限.之前一直疑惑正则这个概念.所以写了篇博文梳理下 摘要: 1.正则化(Regularization) 1.1 正则化的目的 1.2 正则化的L1范 ...

  2. DL四(预处理:主成分分析与白化 Preprocessing PCA and Whitening )

    预处理:主成分分析与白化 Preprocessing:PCA and Whitening 一主成分分析 PCA 1.1 基本术语 主成分分析 Principal Components Analysis ...

  3. 第七篇:数据预处理(四) - 数据归约(PCA/EFA为例)

    前言 这部分也许是数据预处理最为关键的一个阶段. 如何对数据降维是一个很有挑战,很有深度的话题,很多理论书本均有详细深入的讲解分析. 本文仅介绍主成分分析法(PCA)和探索性因子分析法(EFA),并给 ...

  4. Deep Learning学习随记(二)Vectorized、PCA和Whitening

    接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化 ...

  5. python data analysis | python数据预处理(基于scikit-learn模块)

    原文:http://www.jianshu.com/p/94516a58314d Dataset transformations| 数据转换 Combining estimators|组合学习器 Fe ...

  6. sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,沉寂了这么久我又出来啦,这次先不翻译优质的文章了,这次我们回到Python中的机器学习,看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下我的开发环境是 ...

  7. scikit-learn与数据预处理

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  8. Python做数据预处理

    在拿到一份数据准备做挖掘建模之前,首先需要进行初步的数据探索性分析(你愿意花十分钟系统了解数据分析方法吗?),对数据探索性分析之后要先进行一系列的数据预处理步骤.因为拿到的原始数据存在不完整.不一致. ...

  9. 机器学习实战基础(九):sklearn中的数据预处理和特征工程(二) 数据预处理 Preprocessing & Impute 之 数据无量纲化

    1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”.譬如梯度和矩阵为核心的算法中,譬如逻辑回 ...

随机推荐

  1. opencv 卡尔曼滤波器例子,自己修改过

    一.卡尔曼滤波器的理论解释 http://blog.csdn.net/lindazhou2005/article/details/1534234(推荐) 二.代码中一些随机数设置函数,在opencv中 ...

  2. nginx 转发 由于php语法错误 导致的 50x

    server {        listen 8008;        root /root/php-test;        index index.php index.html index.htm ...

  3. volatile 续

    上次的问题在看了一篇博客后有了点理解了 博文地址为 http://www.cnblogs.com/dolphin0520/p/3920373.html 按照文章中写的,在并发编程中,我们通常会遇到以下 ...

  4. python之pandas数据筛选和csv操作

    本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...

  5. ehchache和redis

    Ehcache 在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apa ...

  6. PS抠图之单色背景图片

    PS一直大家比较喜欢的一款图像处理软件,很多朋友对使用基本的功能.最近很多的朋友都在问我关于PS抠图的方法,这些方法也不是一句两句就能说清楚,并且每天都重复的叫他们,不如直接写出来刚刚接触到的朋友一起 ...

  7. leetcode_sql_4,196

    196. Delete Duplicate Emails Write a SQL query to delete all duplicate email entries in a table name ...

  8. 不得不注意tornado多进程部署的副作用

    tornado多进程启动时,采用的是fork的方式. 一个现有进程可以调用fork函数创建一个新进程.由fork创建的新进程被称为子进程(child process).fork函数被调用一次但返回两次 ...

  9. hbase使用中需要注意一些问题

    接触hbase已经两年之久,但是真正的在实际项目中使用却只有半年的时间,使用过程中,一方面在在为hbase强大的性能兴奋之余,另一方面却也给我和我的团队造成了很多的麻烦,起初在使用我的水平也就停留在会 ...

  10. PUTTY学习

    参考地址:http://blog.csdn.net/eastmount/article/details/52753135 putty介绍: PuTTY是一个Telnet.SSH.rlogin.纯TCP ...