白化
2015-09-07 22:26
197 查看
navigation,
search
如何消除输入特征之间的相关性? 在前文计算
![](http://ufldl.stanford.edu/wiki/images/math/c/d/0/cd047246fd68f6d52b2fd068e063c0ef.png)
时实际上已经消除了输入特征
![](http://ufldl.stanford.edu/wiki/images/math/e/b/e/ebe8632b7c91a3dbbf9b590bea887a47.png)
之间的相关性。得到的新特征
![](http://ufldl.stanford.edu/wiki/images/math/1/7/0/170047e804738636731477291969d554.png)
的分布如下图所示:
![](http://ufldl.stanford.edu/wiki/images/thumb/1/12/PCA-rotated.png/600px-PCA-rotated.png)
这个数据的协方差矩阵如下:
![](http://ufldl.stanford.edu/wiki/images/math/f/e/5/fe5ed797b9c818df5bc8bf5d5c001e02.png)
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立。不过即使数据均值不为0,下文的说法仍然成立,所以你无需担心这个。)
![](http://ufldl.stanford.edu/wiki/images/math/1/7/0/170047e804738636731477291969d554.png)
协方差矩阵对角元素的值为
![](http://ufldl.stanford.edu/wiki/images/math/e/1/3/e138a7c8755e6a4400dd6bb08974d139.png)
和
![](http://ufldl.stanford.edu/wiki/images/math/4/1/a/41ab4ee633f1ad3d25809270aedbe566.png)
绝非偶然。并且非对角元素值为0; 因此,
![](http://ufldl.stanford.edu/wiki/images/math/0/0/6/0066d1e2efa2f0019a3dfd3469862934.png)
和
![](http://ufldl.stanford.edu/wiki/images/math/3/f/2/3f2601aaa1d6e648c789bd9a831cc4eb.png)
是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。
为了使每个输入特征具有单位方差,我们可以直接使用
![](http://ufldl.stanford.edu/wiki/images/math/7/a/d/7ad8b4911f758fec9b3c6d0b4b61a82c.png)
作为缩放因子来缩放每个特征
![](http://ufldl.stanford.edu/wiki/images/math/d/1/5/d1527b3272bc5c1fe3fc308c7a21e689.png)
。具体地,我们定义白化后的数据
![](http://ufldl.stanford.edu/wiki/images/math/9/6/9/9693d90272b2475c8369fa23df7267ed.png)
如下:
![](http://ufldl.stanford.edu/wiki/images/math/e/2/9/e296118ba2bdf453dbe38426359f2230.png)
绘制出
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
,我们得到:
![](http://ufldl.stanford.edu/wiki/images/thumb/9/98/PCA-whitened.png/600px-PCA-whitened.png)
这些数据现在的协方差矩阵为单位矩阵
![](http://ufldl.stanford.edu/wiki/images/math/5/4/f/54f708ffb9cc17b9820863a36120c90c.png)
。我们说,
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
是数据经过PCA白化后的版本:
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中不同的特征之间不相关并且具有单位方差。
白化与降维相结合。 如果你想要得到经过白化后的数据,并且比初始输入维数更低,可以仅保留
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中前
![](http://ufldl.stanford.edu/wiki/images/math/b/0/0/b0066e761791cae480158b649e5f5a69.png)
个成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中最后的少量成分将总是接近于0,因而舍弃这些成分不会带来很大的问题。
![](http://ufldl.stanford.edu/wiki/images/math/5/4/f/54f708ffb9cc17b9820863a36120c90c.png)
的方式并不唯一。具体地,如果
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
是任意正交矩阵,即满足
![](http://ufldl.stanford.edu/wiki/images/math/7/7/d/77d64d6a092c3f7adb9eae6eb4af41ff.png)
(说它正交不太严格,
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
可以是旋转或反射矩阵), 那么
![](http://ufldl.stanford.edu/wiki/images/math/b/c/d/bcd43a98b71d807cddbdb7a3a33bbc1a.png)
仍然具有单位协方差。在ZCA白化中,令
![](http://ufldl.stanford.edu/wiki/images/math/b/6/1/b61977ba8ab2bacb0c31fa5575db43fd.png)
。我们定义ZCA白化的结果为:
![](http://ufldl.stanford.edu/wiki/images/math/c/f/b/cfb1fa6b1049a5fdb2da4d7e88856751.png)
绘制
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
,得到:
![](http://ufldl.stanford.edu/wiki/images/thumb/a/a4/ZCA-whitened.png/600px-ZCA-whitened.png)
可以证明,对所有可能的
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
,这种旋转使得
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
尽可能地接近原始输入数据
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
。
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部
![](http://ufldl.stanford.edu/wiki/images/math/0/c/5/0c59de0fa75c1baa1c024aabfa43b2e3.png)
个维度,不尝试去降低它的维数。
![](http://ufldl.stanford.edu/wiki/images/math/2/3/5/23536ce45f0ee57fffa389163f8437bd.png)
在数值上接近于0,这样在缩放步骤时我们除以
![](http://ufldl.stanford.edu/wiki/images/math/3/e/8/3e85dc0c50d11861f9d02bb43ab2d989.png)
将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数
![](http://ufldl.stanford.edu/wiki/images/math/a/8/e/a8eae7b5e90c024c40de690158e0e6b1.png)
:
![](http://ufldl.stanford.edu/wiki/images/math/6/7/b/67be9aaa628b437297c08a916d0d5307.png)
当
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
在区间
![](http://ufldl.stanford.edu/wiki/images/math/8/5/a/85a1c5a07f21a9eebbfb1dca380f8d38.png)
上时, 一般取值为
![](http://ufldl.stanford.edu/wiki/images/math/c/d/d/cdd6f0cc52395a161edf391fad0ef2ef.png)
。
对图像来说, 这里加上
![](http://ufldl.stanford.edu/wiki/images/math/a/8/e/a8eae7b5e90c024c40de690158e0e6b1.png)
,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的噪声,改善学习到的特征(细节超出了本文的范围)。
ZCA 白化是一种数据预处理方法,它将数据从
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
映射到
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
。 事实证明这也是一种生物眼睛(视网膜)处理图像的粗糙模型。具体而言,当你的眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在眼中被感知为相近的值。因此,如果人眼需要分别传输每个像素值(通过视觉神经)到大脑中,会非常不划算。取而代之的是,视网膜进行一个与ZCA中相似的去相关操作
(这是由视网膜上的ON-型和OFF-型光感受器细胞将光信号转变为神经信号完成的)。由此得到对输入图像的更低冗余的表示,并将它传输到大脑。
白化
From Ufldl
Jump to:navigation,
search
Contents[hide]1 介绍 2 2D 的例子 3 ZCA白化 4 正则化 5 中英文对照 6 中文译者 |
介绍
我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化(一些文献中也叫sphering)。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。2D 的例子
下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。如何消除输入特征之间的相关性? 在前文计算
![](http://ufldl.stanford.edu/wiki/images/math/c/d/0/cd047246fd68f6d52b2fd068e063c0ef.png)
时实际上已经消除了输入特征
![](http://ufldl.stanford.edu/wiki/images/math/e/b/e/ebe8632b7c91a3dbbf9b590bea887a47.png)
之间的相关性。得到的新特征
![](http://ufldl.stanford.edu/wiki/images/math/1/7/0/170047e804738636731477291969d554.png)
的分布如下图所示:
![](http://ufldl.stanford.edu/wiki/images/thumb/1/12/PCA-rotated.png/600px-PCA-rotated.png)
这个数据的协方差矩阵如下:
![](http://ufldl.stanford.edu/wiki/images/math/f/e/5/fe5ed797b9c818df5bc8bf5d5c001e02.png)
(注: 严格地讲, 这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立。不过即使数据均值不为0,下文的说法仍然成立,所以你无需担心这个。)
![](http://ufldl.stanford.edu/wiki/images/math/1/7/0/170047e804738636731477291969d554.png)
协方差矩阵对角元素的值为
![](http://ufldl.stanford.edu/wiki/images/math/e/1/3/e138a7c8755e6a4400dd6bb08974d139.png)
和
![](http://ufldl.stanford.edu/wiki/images/math/4/1/a/41ab4ee633f1ad3d25809270aedbe566.png)
绝非偶然。并且非对角元素值为0; 因此,
![](http://ufldl.stanford.edu/wiki/images/math/0/0/6/0066d1e2efa2f0019a3dfd3469862934.png)
和
![](http://ufldl.stanford.edu/wiki/images/math/3/f/2/3f2601aaa1d6e648c789bd9a831cc4eb.png)
是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。
为了使每个输入特征具有单位方差,我们可以直接使用
![](http://ufldl.stanford.edu/wiki/images/math/7/a/d/7ad8b4911f758fec9b3c6d0b4b61a82c.png)
作为缩放因子来缩放每个特征
![](http://ufldl.stanford.edu/wiki/images/math/d/1/5/d1527b3272bc5c1fe3fc308c7a21e689.png)
。具体地,我们定义白化后的数据
![](http://ufldl.stanford.edu/wiki/images/math/9/6/9/9693d90272b2475c8369fa23df7267ed.png)
如下:
![](http://ufldl.stanford.edu/wiki/images/math/e/2/9/e296118ba2bdf453dbe38426359f2230.png)
绘制出
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
,我们得到:
![](http://ufldl.stanford.edu/wiki/images/thumb/9/98/PCA-whitened.png/600px-PCA-whitened.png)
这些数据现在的协方差矩阵为单位矩阵
![](http://ufldl.stanford.edu/wiki/images/math/5/4/f/54f708ffb9cc17b9820863a36120c90c.png)
。我们说,
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
是数据经过PCA白化后的版本:
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中不同的特征之间不相关并且具有单位方差。
白化与降维相结合。 如果你想要得到经过白化后的数据,并且比初始输入维数更低,可以仅保留
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中前
![](http://ufldl.stanford.edu/wiki/images/math/b/0/0/b0066e761791cae480158b649e5f5a69.png)
个成分。当我们把PCA白化和正则化结合起来时(在稍后讨论),
![](http://ufldl.stanford.edu/wiki/images/math/a/3/1/a3135c6f5975d0a74cd2d9082be9638a.png)
中最后的少量成分将总是接近于0,因而舍弃这些成分不会带来很大的问题。
ZCA白化
最后要说明的是,使数据的协方差矩阵变为单位矩阵![](http://ufldl.stanford.edu/wiki/images/math/5/4/f/54f708ffb9cc17b9820863a36120c90c.png)
的方式并不唯一。具体地,如果
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
是任意正交矩阵,即满足
![](http://ufldl.stanford.edu/wiki/images/math/7/7/d/77d64d6a092c3f7adb9eae6eb4af41ff.png)
(说它正交不太严格,
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
可以是旋转或反射矩阵), 那么
![](http://ufldl.stanford.edu/wiki/images/math/b/c/d/bcd43a98b71d807cddbdb7a3a33bbc1a.png)
仍然具有单位协方差。在ZCA白化中,令
![](http://ufldl.stanford.edu/wiki/images/math/b/6/1/b61977ba8ab2bacb0c31fa5575db43fd.png)
。我们定义ZCA白化的结果为:
![](http://ufldl.stanford.edu/wiki/images/math/c/f/b/cfb1fa6b1049a5fdb2da4d7e88856751.png)
绘制
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
,得到:
![](http://ufldl.stanford.edu/wiki/images/thumb/a/a4/ZCA-whitened.png/600px-ZCA-whitened.png)
可以证明,对所有可能的
![](http://ufldl.stanford.edu/wiki/images/math/f/e/e/fee54137ee7748e26642e71145effa05.png)
,这种旋转使得
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
尽可能地接近原始输入数据
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
。
当使用 ZCA白化时(不同于 PCA白化),我们通常保留数据的全部
![](http://ufldl.stanford.edu/wiki/images/math/0/c/5/0c59de0fa75c1baa1c024aabfa43b2e3.png)
个维度,不尝试去降低它的维数。
正则化
实践中需要实现PCA白化或ZCA白化时,有时一些特征值![](http://ufldl.stanford.edu/wiki/images/math/2/3/5/23536ce45f0ee57fffa389163f8437bd.png)
在数值上接近于0,这样在缩放步骤时我们除以
![](http://ufldl.stanford.edu/wiki/images/math/3/e/8/3e85dc0c50d11861f9d02bb43ab2d989.png)
将导致除以一个接近0的值;这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数
![](http://ufldl.stanford.edu/wiki/images/math/a/8/e/a8eae7b5e90c024c40de690158e0e6b1.png)
:
![](http://ufldl.stanford.edu/wiki/images/math/6/7/b/67be9aaa628b437297c08a916d0d5307.png)
当
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
在区间
![](http://ufldl.stanford.edu/wiki/images/math/8/5/a/85a1c5a07f21a9eebbfb1dca380f8d38.png)
上时, 一般取值为
![](http://ufldl.stanford.edu/wiki/images/math/c/d/d/cdd6f0cc52395a161edf391fad0ef2ef.png)
。
对图像来说, 这里加上
![](http://ufldl.stanford.edu/wiki/images/math/a/8/e/a8eae7b5e90c024c40de690158e0e6b1.png)
,对输入图像也有一些平滑(或低通滤波)的作用。这样处理还能消除在图像的像素信息获取过程中产生的噪声,改善学习到的特征(细节超出了本文的范围)。
ZCA 白化是一种数据预处理方法,它将数据从
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
映射到
![](http://ufldl.stanford.edu/wiki/images/math/a/6/6/a668553308d25ae0f796a9f92c807931.png)
。 事实证明这也是一种生物眼睛(视网膜)处理图像的粗糙模型。具体而言,当你的眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在眼中被感知为相近的值。因此,如果人眼需要分别传输每个像素值(通过视觉神经)到大脑中,会非常不划算。取而代之的是,视网膜进行一个与ZCA中相似的去相关操作
(这是由视网膜上的ON-型和OFF-型光感受器细胞将光信号转变为神经信号完成的)。由此得到对输入图像的更低冗余的表示,并将它传输到大脑。
相关文章推荐
- 顺序表
- scala学习之模式匹配
- Flexbox实现垂直水平居中
- IOS 中的页面跳转(navigaitonController)+带自动返回
- 代码简化
- C语言基础二 -----文件的输入与输出
- uva 1048 - Low Cost Air Travel(最短路)
- js事件知识回顾
- iOS开发:Delegate、Notification和KVO的联系与区别
- 【Unity技巧】Unity中的优化技术
- Windows下bat批处理脚本使用telnet批量检测远程端口小记
- 面试题4:替换空格
- Construct Binary Tree from Preorder and Inorder Traversal
- sql server获取当前年月日 时分秒
- 北大ACM试题1012-约瑟夫环
- 1045 Fire Net
- 关于Windows系统调用
- 点击事件的几种写法
- JavaScript之对象的遍历
- Centos使用光盘作为本地yum源