数据标准化与PCA白化原理探索
来源:互联网 发布:手机网站如何上传源码 编辑:程序博客网 时间:2024/05/08 20:56
转载自:http://blog.csdn.net/happyer88/article/details/51405663
PCA是实验中很常用的工具,一般用来做降维,它的实现有很多很多种,其中牵涉相当多的细节,笔者在实现PCA时常常有困惑,为什么查到的各种代码总有一些不同的trick,有时候对样本提前归一化?有时候又要减均值?这些操作对于PCA降维效果到底有什么影响?这篇文章从PCA白化入手,探究这些trick背后的原因。
1 Whitening (白化)
白化1有两种,一种是PCA Whitening,一种是ZCA Whitening,它主要目标是降低数据的冗余性,我们希望通过白化过程使得学习算法的输入具有如下性质:
- 特征之间相关性较低;
- 所有特征具有相同的方差。
2 Standardize(标准化)
标准化有多种实现方式,其目标是使数据均值为0,方差为1,使得不同维度的特征具有同等重要性。因为不同维度的特征代表的信息不同,数值变化范围会有较大差异,如果统一衡量将可能影响判断。
在PCA中融入standardize就是PCA whitening。
2.1 举例说明Standardize重要性
那么standardize有什么好处?看一个来自StackExchange的例子2:
用一个特征来描述一棵树,它是二维的,第一维是高度height,第二维是切面周长girth,我们要根据这个二维特征,来推断一棵树的体积volume是low还是high(设大于20为high)。
我们分以下三种情况来分析:
2.1.1 Different measure
先看一种比较极端的情况,让height的单位是mile,girth的单位是feet,1mile=5280feet=1.6km,也就是说,height的值将是很小的小数,我们假设height取值范围是[0,0.05],而girth的值取值范围可以假设为[20,50],一个树的height那一维的特征从0.04变为0.05,相对于girth已经可以小的忽略不计了,但是它在自己的取值范围上变化了
分析主成分
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
画图分析,其中灰色的low/high指的是volume,红线height和girth的走势是根据loading画出的,loading指的是原始特征在component上保留的方差,可以看出,height的方差主要反映在component2上,girth的方差反映在component1上,而由于height的重要性被girth完全压制,故在图中可以看到,volume的low/high完全靠girth来决定,girth越大,volume越大,height的信息完全没有起到作用。而我们知道事实上,一棵树的体积肯定跟高度是有关系的。
2.1.2 Same measure without standarized
进一步地,让height和girth单位一致,即都是feet。
分析其主成分:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
从图中可以看出,height的红线较长,代表volume对height较敏感。因为component1的方差大,即变化范围大,而原始数据height那一维的数据的方差较多地反映在component1上,因此height起到较大影响。这是因为一棵树的height变化范围比girth变化范围大。但是实际上,根据树的体积计算公式,我们知道,树的girth应该起较大作用。
2.1.3 Standarized
至此,来看看standardize的结果。
分析其主成分:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
由图可以看出,girth对volume的判断起到较大作用,符合客观事实。
3 PCA whitening
假设我们已经通过公式
下式就是PCA whitening操作,计算
下式验证白化后的数据方差为1.
下图3中:左边是原始数据,中间是standardize的结果,右边是PCA whitening的结果,我们可以看到数据散开,主成份没有明显的长短轴,差异性被进一步挖掘。
- 白化介绍 ↩
- Standardize的解释 ↩
- 《Pattern Recognition and Machine Learning》 ↩
- 数据标准化与PCA白化原理探索
- 数据标准化与PCA白化原理探索
- PCA 白化 ZCA白化
- PCA白化
- 白化(Whitening) PCA白化 ZCA白化
- 【转】PCA和白化练习之处理二维数据
- ①极好的PCA帖子&白化;②数据降维
- PCA 和 白化区别
- 【UFLDL】PCA+白化
- 图像白化处理,协方差求解,PCA白化
- 数据白化
- 数据白化
- 数据白化
- 学习笔记-PCA和白化
- 深度学习入门---PCA,白化
- 神经网络基本原理-4.3数据预处理(零中心化+归一化+PCA+白化)
- 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
- 数据预处理:PCA原理推导
- 《Java高并发程序设计》学习 --5.5 并行模式之 Future模式
- ArrayList的输出
- 如何将抽象概念量化
- 2017 Hackatari Codeathon
- 在CentOS配置HBase
- 数据标准化与PCA白化原理探索
- JAVA(四)类集/枚举
- 【PMP】PMBOK 笔记 第2章 组织影响和项目生命周期
- 地址转译的相关问题(一)
- leetcode-141. Linked List Cycle
- XRecyclerView
- JAVA(五)反射机制/Annotation
- Linux学习之虚拟机下hgfs目录创建及共享文件夹创建
- RecylerView之listView显示