【机器学习】数据处理中白化Whitening的作用图解分析
之前在看斯坦福教程中whiteining这一章时,由于原始图像相邻像素值具有高度相关性,所以图像数据信息冗余,对于白化的作用的描述主要有两个方面:1,减少特征之间的相关性;2,特征具有相同的方差(协方差阵为1);但是为什么这么做,以及这样做对于算法或者数据有什么好处,一直雨里雾里的,最近看了ICA的数据预处理之后,发现一个教程图解的白化方法和作用很好。
白化,又称漂白或者球化;是对原始数据x实现一种变换,变换成x_Whitened;使x_Whitened的协方差矩阵的为单位阵。
一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。
若一零均值的随机向量Z=(Z1,Z2,....Zm),满足E{Z*Z'}=I,I为单位矩阵,我们称这个向量为白色向量。白化的本质在于去相关,这个同PCA原理相似;在ICA中,对于为零均值的独立源信号S(t)=[S1(t),S2(t)......Sn(t)],有E{Si*Sj}=E{Si}*E{Sj}=0,当i!=j时:,且协方差矩阵是单位阵cov(S)=I,(零均值时相关系数矩阵和协方差矩阵相等),因此,源信号是白色的。对观测信号X(t),我们应该寻找一个线性变换,使X(t)投影到新的子空间后变成白化向量,即:
Z(t)=W0*X(t) ;其中W0为白化矩阵,Z为白化向量
利用主分量分析,我们通过计算样本向量得到一个变换:
其中^和U分别代表协方差矩阵的特征向量矩阵和特征值矩阵。可以证明,线性变换W0满足白化变换的要求。通过正交变换,可以保证U'*U=U*U'=I。因此通过协方差阵:
再将X(t)=AS(t)式代入Z(t)=W0*X(t),在令W0*A=B;
则有:Z(t)=W0*A*S(t)=B*S(t)
由于线性变换连接的是两个白色随机矢量Z(t)和S(t),可以得出B一定是一个正交变换。如果把上式中Z(t)的看作新的观测信号,那么可以说,白化使原来的混合矩阵A简化成一个新的正交矩阵B。其实正交变换相当于对多维矢量所在的坐标系进行一个旋转。根据上一篇博文中关于联合熵的介绍,多维分布经过坐标系的旋转后联合微分熵保持不变,所以经过变换后的数据信息不变。
在多维情况下,混合矩阵A是的*n的,白化后新的混合矩阵由于是正交矩阵,其自由度降为n*(n-1)/2(这个我也不明白为什么),所以说白化使得ICA问题的工作量几乎减少了一半。
白化这种常规的方法作为ICA的预处理可以有效地降低问题的复杂度,而且算法简单,用传统的PCA就可完成。用PCA对观测信号进行白化的预处理使得原来所求的解混合矩阵退化成一个正交阵,减少了ICA的工作量。此外,PCA本身具有降维功能,当观测信号的个数大于源信号个数时,经过白化可以自动将观测信号数目降到与源信号维数相同。
图解分析:
假设信号源s1和s2是独立的,比如下图横轴是s1,纵轴是s2,根据s1得不到s2。
我们只知道他们合成后的信号x,如下:
此时x1和x2不是独立的(比如看最上面的尖角,知道了x1就知道了x2)。那么直接代入计算结果不好,因为我们假定x是独立的。
因此,漂白这一步为了让x独立。漂白结果如下:
可以看到数据变成了方阵,在的维度上已经达到了独立。
然而这时x分布很好的情况下能够这样转换,当有噪音时怎么办呢?可以先使用前面提到的PCA方法来对数据进行降维,滤去噪声信号,得到k维的正交向量,然后再使用ICA。
参考文献:
【机器学习】数据处理中白化Whitening的作用图解分析的更多相关文章
- 2. Tensorflow的数据处理中的Dataset和Iterator
1. Tensorflow高效流水线Pipeline 2. Tensorflow的数据处理中的Dataset和Iterator 3. Tensorflow生成TFRecord 4. Tensorflo ...
- python 数据处理中的 LabelEncoder 和 OneHotEncoder
One-Hot 编码即独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效.这样做的好处主要有:1. 解决了分类器 ...
- 大数据处理中的Lambda架构和Kappa架构
首先我们来看一个典型的互联网大数据平台的架构,如下图所示: 在这张架构图中,大数据平台里面向用户的在线业务处理组件用褐色标示出来,这部分是属于互联网在线应用的部分,其他蓝色的部分属于大数据相关组件,使 ...
- [转载]什么是白化(whitening)?
[转载]什么是白化(whitening)? 来源:https://blog.csdn.net/hjimce/article/details/50864602 白化whitening 原文地址:http ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...
- PHP中的header()函数作用
PHP 中 header()函数的作用是给客户端发送头信息. 什么是头信息?这里只作简单解释,详细的自己看http协议.在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(h ...
- 浅析python 中__name__ = '__main__' 的作用
引用http://www.jb51.net/article/51892.htm 很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码 ...
- log4net日志在app.config中assembly不起作用
log4net 1.2.15.0日志在app.config中assembly不起作用,必须 1.手动调用方法log4net.Config.XmlConfigurator.Configure()来初始化 ...
- URL中“#” “?” &“”号的作用
URL中"#" "?" &""号的作用 阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twit ...
随机推荐
- 洛谷P1156 垃圾陷阱【线性dp】
题目:https://www.luogu.org/problemnew/show/P1156 题意: 每一个垃圾投放时间是t,可以堆的高度是h,如果吃掉可以增加的生命值是f. 给定g个垃圾,初始生命值 ...
- oracle汉字排序
oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式: 1.使用拼音排序 NLS_SORT=SC ...
- QT5 网络通讯
QT5 TCP网络通讯 服务器与客户端建立连接listen() - connectToHost(); 触发newPendingConnect信号 实时数据通讯write(); read(); 触发 ...
- 互联网上最可怕的搜索引擎:shodan
互联网上最可怕的搜索引擎:shodan 介绍:http://tech.qq.com/a/20130410/000013.htm
- Python数据抓取(1) —数据处理前的准备
(一)数据抓取概要 为什么要学会抓取网络数据? 对公司或对自己有价值的数据,80%都不在本地的数据库,它们都散落在广大的网络数据,这些数据通常都伴随着网页的形式呈现,这样的数据我们称为非结构化数据 如 ...
- Django-事务和锁
一.事务 1.全局开启事务 在Web应用中,常用的事务处理方式是将每个请求都包裹在一个事务中.这个功能使用起来非常简单,你只需要将它的配置项ATOMIC_REQUESTS设置为True. 它是这样工作 ...
- Java关键字volatile的实现原理(四)
简述 volatile 是轻量级的synchronized,在多线程开发中保证了共享变量的可见性.可见性就是当一个线程修改一个共享变量时,另一个线程可以读到修改的值.如果volatile变量使用恰当, ...
- Linux 删除文件夹和文件的命令(强制删除包括非空文件)
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...
- Zookeeper系列(十四)Zookeeper的数据与存储
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6179118.html尊重原创,奇文共欣赏: 一.前言 前 ...
- ARP输入 之 arp_rcv
概述 arp_rcv是ARP包的入口函数,ARP模块在二层注册了类型为ETH_P_ARP的数据包回调函数arp_rcv,当收到ARP包时,二层进行分发,调用arp_rcv: arp_rcv对ARP输入 ...