zoukankan      html  css  js  c++  java
  • 白化(预处理步骤)【转】

    介绍

    我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。

    2D的例子

    下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。

    如何消除特征之间的相关性?在前文计算	extstyle x_{
m rot}^{(i)} = U^Tx^{(i)}时实际上已经消除了输入特征	extstyle x^{(i)}之间的相关性。得到的新特征 	extstyle x_{
m rot} 的分布如下图所示:

    PCA-rotated.png

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

    egin{align}
egin{bmatrix}
7.29 & 0  \
0 & 0.69
end{bmatrix}.
end{align}

    (注:严格地讲,这部分许多关于“协方差”的陈述仅当数据均值为0时成立。下文的论述都隐式地假定这一条件成立,不过即使数据均值不为0,下文的说法仍然成立,所以你无需担心这个。)

     	extstyle x_{
m rot} 协方差矩阵对角元素的值为 	extstyle lambda_1 和 	extstyle lambda_2 绝非偶然。并且非对角元素值为0; 因此, 	extstyle x_{{
m rot},1} 和 	extstyle x_{{
m rot},2} 是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。

     为了使每个输入特征具有单位方差,我们可以直接使用	extstyle 1/sqrt{lambda_i}作为缩放因子来缩放每个特征	extstyle x_{{
m rot},i}。具体地,我们定义白化后的数据	extstyle x_{{
m PCAwhite}} in Re^n如下:
    egin{align}
x_{{
m PCAwhite},i} = frac{x_{{
m rot},i} }{sqrt{lambda_i}}.   
end{align}

     绘制出 	extstyle x_{{
m PCAwhite}} ,我们得到:

     PCA-whitened.png

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

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

    ZCA白化

     最后要说明的是,是数据的协方差矩阵变为单位矩阵I的方式并不唯一。具体地,如果R是任意正交矩阵,即满足	extstyle RR^T = R^TR = I(说它正交不太严格,R可以是旋转或反射矩阵),那么

     	extstyle R \,x_{
m PCAwhite}仍然具有单位协方差。在ZCA白化中,令 	extstyle R = U 。我们定义ZCA白化的结果为:egin{align}
x_{
m ZCAwhite} = U x_{
m PCAwhite}
end{align}

     绘制	extstyle x_{
m ZCAwhite}得到:

     ZCA-whitened.png

     可以证明,对所有可能的R,这种旋转式的	extstyle x_{
m ZCAwhite}尽可能地接近原始输入数据x。当使用ZCA白化时(不同于PCA白化),我们通常保留数据的全部n个维度,不尝试去降低它的维数

     正则化

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

    egin{align}
x_{{
m PCAwhite},i} = frac{x_{{
m rot},i} }{sqrt{lambda_i + epsilon}}.
end{align}

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

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

     ZCA白化是一种数据预处理方法,它将数据从 	extstyle x 映射到 	extstyle x_{
m ZCAwhite} 。 

     事实证明这也是一种生物眼睛(视网膜)处理图像的粗糙模型。具体而言,当你的眼睛感知图像时,由于一幅图像中相邻的部分在亮度上十分相关,大多数临近的“像素”在眼中被感知为相近的值。因此,如果人眼需要分别传输每个像素值(通过视觉神经)到大脑中,会非常不划算。取而代之的是,视网膜进行一个与ZCA中相似的去相关操作(这是由视网膜上的ON-型和OFF-型光感受器细胞将光信号转变为神经信号完成的)。由此得到对输入图像的更低冗余的表示,并将它传输到大脑。

  • 相关阅读:
    JavaWeb网上图书商城完整项目--day02-18.修改密码页面处理
    JavaWeb网上图书商城完整项目--day02-17.登录功能页面实现
    JavaWeb网上图书商城完整项目--day02-16.登录功能各层实现
    JavaWeb网上图书商城完整项目--day02-15.登录功能流程分析
    JavaWeb网上图书商城完整项目--day02-14.登录功能的login页面处理
    JavaWeb网上图书商城完整项目--day02-12.激活功能各层实现
    JavaWeb网上图书商城完整项目--day02-11.激活功能流程分析
    JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
    javascript数组与字符串之间转换
    Bootstrap
  • 原文地址:https://www.cnblogs.com/rong86/p/3559137.html
Copyright © 2011-2022 走看看