博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(六)6.7 Neurons Networks whitening
阅读量:5907 次
发布时间:2019-06-19

本文共 1030 字,大约阅读时间需要 3 分钟。

PCA的过程结束后,还有一个与之相关的预处理步骤,白化(whitening)

对于输入数据之间有很强的相关性,所以用于训练数据是有很大冗余的,白化的作用就是降低输入数据的冗余,通过白化可以达到(1)降低特征之间的相关性(2)所有特征同方差,白化是需要与平滑与PCA结合的,下边来看如何结合。

对于训练数据{

\textstyle x^{(i)}},找到其所有特征组成的新基U,计算在新基的坐标 \textstyle x_{\rm rot}^{(i)} = U^Tx^{(i)},这里\textstyle x_{\rm rot}就会消除数据的相关性:

这个数据的协方差矩阵如下:

\textstyle x_{\rm rot} 协方差矩阵对角元素的值为 \textstyle \lambda_1 和 \textstyle \lambda_2 ,且非对角线元素取值为0,课件不同纬度的特征之间是不相关的,对应的 \textstyle x_{​{\rm rot},1} 和 \textstyle x_{​{\rm rot},2} 是不相关的,这便满足白化的第一个要求,降低相关性,下面就要使特征之间同方差(注意是变化后的特征同方差\textstyle x_{\rm rot}\textstyle x_{\rm rot}中每个特征 i 的方差为 \textstyle \lambda_i 我们可以直接使用 \textstyle 1/\sqrt{\lambda_i} 作为缩放因子来缩放每个特征 \textstyle x_{​{\rm rot},i} 。具体地,我们定义白化后的数据 \textstyle x_{​{\rm PCAwhite}} \in \Re^n 如下:

\begin{align} x_{​{\rm PCAwhite},i} = \frac{x_{​{\rm rot},i} }{\sqrt{\lambda_i}}.    \end{align}

绘制出 \textstyle x_{​{\rm PCAwhite}} ,可以得到:

这些数据现在的协方差矩阵为单位矩阵 \textstyle I 。\textstyle x_{​{\rm PCAwhite}} 是数据经过PCA白化后的版本: \textstyle x_{​{\rm PCAwhite}} 中不同的特征之间不相关并且具有单位方差。

白化与降维相结合。 如果你想要得到经过白化后的数据,并且比初始输入维数更低,可以仅保留 \textstyle x_{​{\rm PCAwhite}} 中前 \textstyle k 个成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),\textstyle x_{​{\rm PCAwhite}} 中最后的少量成分将总是接近于0,因而舍弃这些成分不会带来很大的问题。

最后要说明的是,使数据的协方差矩阵变为单位矩阵 \textstyle I 的方式并不唯一。具体地,如果 \textstyle R 是任意正交矩阵,即满足 \textstyle RR^T = R^TR = I (说它正交不太严格,\textstyle R 可以是旋转或反射矩阵), 那么 \textstyle R \,x_{\rm PCAwhite} 仍然具有单位协方差。在ZCA白化中,令 \textstyle R = U 。定义ZCA白化的结果为:

\begin{align} x_{\rm ZCAwhite} = U x_{\rm PCAwhite} \end{align}

绘制 \textstyle x_{\rm ZCAwhite},得到:

可以证明,对所有可能的 \textstyle R,这种旋转使得 \textstyle x_{\rm ZCAwhite} 尽可能地接近原始输入数据 \textstyle x 。

当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部 \textstyle n 个维度,不尝试去降低它的维数。

实践中需要实现PCA白化或ZCA白化时,有时一些特征值 \textstyle \lambda_i 在数值上接近于0,这样在缩放步骤时我们除以 \sqrt{\lambda_i} 将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数 \textstyle \epsilon

\begin{align} x_{​{\rm PCAwhite},i} = \frac{x_{​{\rm rot},i} }{\sqrt{\lambda_i + \epsilon}}. \end{align}

当 \textstyle x 在区间 \textstyle [-1,1] 上时, 一般取值为 \textstyle \epsilon \approx 10^{-5}

对图像来说, 这里加上 \textstyle \epsilon ,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的噪声,改善学习到的特征。

 

转载于:https://www.cnblogs.com/ooon/p/5310263.html

你可能感兴趣的文章
日语表示"原因"的多种形式
查看>>
9. Palindrome Number
查看>>
BMFont制作美术字体
查看>>
逆向思维----魔兽世界封包分析(2)
查看>>
mongodb的基本概念 学习笔记(二)
查看>>
JSON 的一些知识
查看>>
Python3处理HTTPS请求 SSL证书验证
查看>>
【python3】酷狗音乐及评论回复下载
查看>>
利用jion阻塞主进程结束
查看>>
好公司 烂公司
查看>>
C# 创建、部署和调用WebService的简单示例
查看>>
XOJ测试 2016.5.22
查看>>
hashlib模块configparser模块logging模块
查看>>
python第四周:装饰器、迭代器、内置方法、数据序列化
查看>>
谈Linux与Windows的比较
查看>>
express+gulp构建项目(四)env环境变量
查看>>
WCF DataGrid列的自动换行
查看>>
NewLife.XCode 上手指南(四) 级联操作
查看>>
percona-xtrabackup工具实现mysql5.6.34的主从同步复制
查看>>
一个例子明白python函数作用域
查看>>