Implementing PCA/Whitening

From Ufldl

Jump to: navigation, search
Line 9: Line 9:
在这一节里,我们将总结PCA, PCA白化和ZCA白化算法,并描述如何使用高效的线性代数库来实现它们。
在这一节里,我们将总结PCA, PCA白化和ZCA白化算法,并描述如何使用高效的线性代数库来实现它们。
-
首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地)来达到这一目标。为此,我们计算每个图像块的均值,并从每个图像块中减去它的均值 。(译注:参见PCA一章中“对图像数据应用PCA算法”一节)。Matlab实现如下:
+
首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地)来达到这一目标。为此,我们计算每个图像块的均值,并从每个图像块中减去它的均值。(译注:参见PCA一章中“对图像数据应用PCA算法”一节)。Matlab实现如下:
  avg = mean(x, 1);    % 分别为每个图像块计算像素强度的均值。  
  avg = mean(x, 1);    % 分别为每个图像块计算像素强度的均值。  
Line 35: Line 35:
  xTilde = U(:,1:k)' * x; % 数据降维后的结果,这里k希望保留的特征向量的数目。  
  xTilde = U(:,1:k)' * x; % 数据降维后的结果,这里k希望保留的特征向量的数目。  
-
这以<math>\textstyle \tilde{x} \in \Re^k</math>的形式给出了数据的PCA表示。顺便说一下,如果 <math>x</math> 是一个包括所有训练数据的 <math>\textstyle n</math>-by-<math>\textstyle m</math> 矩阵,这也是一种向量化的实现方式,上面的式子可以让你一次对所有的训练样本计算出 <math>x_{\rm rot}</math> 和 <math>\tilde{x}</math> 。得到的 <math>x_{\rm rot}</math> 和 <math>\tilde{x}</math> 中,每列对应一个训练样本。
+
这以<math>\textstyle \tilde{x} \in \Re^k</math>的形式给出了数据的PCA表示。顺便说一下,如果 <math>x</math> 是一个包括所有训练数据的 <math>\textstyle n</math>×<math>\textstyle m</math> 矩阵,这也是一种向量化的实现方式,上面的式子可以让你一次对所有的训练样本计算出 <math>x_{\rm rot}</math> 和 <math>\tilde{x}</math> 。得到的 <math>x_{\rm rot}</math> 和 <math>\tilde{x}</math> 中,每列对应一个训练样本。
为计算PCA白化后的数据 <math>\textstyle x_{\rm PCAwhite}</math> ,可以用
为计算PCA白化后的数据 <math>\textstyle x_{\rm PCAwhite}</math> ,可以用

Revision as of 16:07, 20 March 2013

Personal tools