• PCA whitening


    对输入数据,维度为2时,想要把数据降维1维:

    数据的主方向就是旋转数据的第一维。因此,若想把这数据降到一维,可令:

    数据已经进行预处理(零均值),使得每个特征具有相同的均值和方差。

    PCA算法将寻找一个低维空间来投影我们的数据。从下图中可以看出,是数据变化的主方向,而 是次方向。

    为更形式化地找出方向,我们首先计算出协方差矩阵,如下所示:

        就是协方差矩阵的主特征向量,而是次特征向量。(按照特征值得大小选取)

    向量构成了一个新基,可以用来表示数据。那么就是样本点在维度上的投影的长度(幅值)。同样的,投影到维度上的幅值。

    在本例中,可得的点图如下(取  ):

      

     协方差:为了衡量两个数据的相关性,一个数据朝大于均值的方向走的趋势时,另一个数据如果朝小于均值的方向走,趋势相反,协方差值为负的,负相关;如果另一个数据同意朝大于均值的方向变化,协方差为正值,正相关。如果协方差值为0,不相关。

    数据白化就是为降低训练数据的冗余,降低输入的冗余性

    由前面的例子,特征的分布如下图所示:

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

      是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。为了使每个输入特征具有单位方差,我们可以直接使用作为缩放因子来缩放每个特征 。具体地,我们定义白化后的数据 如下:


      绘制出 ,我们得到:

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

    拿图像为例,图像中的像素之间存在很强的相关性。(在图像处理中,一个像素与相邻像素的灰度值之间有联系,所以可以利用这一点进行图像压缩)。白化就是为了减少冗余也就是减少这种相关性。PCA白化在减少特征之间相关性的处理方法与PCA算法相同,找到一个新的基,将数据投影到新的基上,也就是将原始数据做旋转变化,达到减少相关性的目标。但PCA白化与PCA有一点不同,就是处理后的数据的方差为单位方差。主要是将主轴上的数据进行了缩放处理。

    ZCA白化是在PCA白化后的数据基础上做处理,主要是对数据进行旋转,使数据比较好的接近原始数据,并没有减少数据特征之间的相关性。

    PCA与白化,

    就是对输入数据进行预处理,

    前者对数据进行降维,后者对数据进行方差处理。

  • 相关阅读:
    迭代器生成器
    eval()
    【剑指offer】调整数组数字位置
    【剑指offer】二进制中1的个数
    【剑指offer】斐波那契数列非递归求解第N项
    【剑指offer】两个栈实现队列
    【剑指offer】逆序输出链表
    【剑指offer】字符串替换
    【剑指offer】规则二维数组查找
    Java转型
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7062323.html
Copyright © 2020-2023  润新知