PCA的理解

有一点很值得强调,PCA算法是一种线性变换,灵活性和表示能力不如自动编码器等采用网络表征形式(既能表征线性变换,也能表征非线性变换)的算法。

PCA对数据进行预处理的原因

在机器学习算法和深度学习任务中,经常需要对原始输入数据进行中心化处理和标准化处理。

数据中心化:

减去均值等同于坐标移动,这样就能把原始数据点的中心移到与原点重合,此举有利于很多表达,比如数据的协方差矩阵可以直接写成$XX^T$,若没有减去均值,则每两个特征之间都要进行$(x-\bar{x})(y-\bar{y})$运算,再组合成协方差矩阵。

数据标准化:

除以标准差是为了统一并消除量纲。一个样本中有多个特征,有些可能表示长度,有些可能表示重量。如果各个特征之间的数值或数量级存在较大差异,就会使得较小的数被淹没,导致主成分偏差较大。所以要将每个特征对应的样本除以标准差,这样才能让他们仅以数的概念一起比较运算

注意:

  1. 标准化与归一化 标准化指对数据既进行中心化也进行标准化,也就是既减去均值,也除以标准差;而归一化只将原始数据除以标准差,不减去均值;
  2. 对图像进行PCA前数据预处理时,不需要除以标准差,即无需统一量纲理由:图像的每个pixel的取值范围为[0, 255],量纲已统一;

PCA进行降维的心得

  • 在对文本数据(如短信)进行PCA降维时,一般将每条文本数据看作一个样本,首先将每条文本数据转化为${k}\times {1} $的词向量($k$为特征数),则$N$条文本数据对应的数据矩阵$X$的尺寸为$k\times N$。

    文本数据矩阵的元素$X_{ij}$进行标准化:

  • 图像数据进行PCA降维时,实际上是在对每个图像样本(即每张图片)进行降维。

    1. 自然图像的$pixel_value~\epsilon [0, 255]$,属于同一量纲,因此不需要除以标准差;
    2. 对每张图片进行pixel_wise中心化时,减去的均值是整张图片的平均值,也就是图片的平均亮度,这一点和文本数据的预处理有很大不同;
    3. 预处理完成后,便是对预处理后整张图的数据矩阵$W\times D$进行PCA降维,等同于将行数或列数视作样本数,而列数或行数视作特征数;

深度学习中数据归一化的原因

首先如果输入层 $ x $ 很大,在back propagation时传递到输入层的梯度就会很大,如下式:

如果梯度非常大,学习率就必须非常小(否则会跳过local minimum),因此,学习率(学习率初始值)的选择需要参考输入层的数值,不如直接将数据归一化,这样学习率就不必再根据数据范围作调整。

Reference

PCA要对数据进行预处理的原因

PCA在图像降维的应用

数据归一化

Some say the world will end in fire,

Some say in ice.

From what I’ve tasted of desire

I hold with those who favor fire.

But if it had to perish twice,

I think I know enough of hate

To say that for destruction ice

Is also great

And would suffice.

-------------本文结束感谢阅读-------------
Thanks for your rewarding ~
0%