2019-01-23 主成成分分析(PCA)的算法

在使用 PCA 之前,通常会有一个数据预处理的过程:拿到某组有 m 个无标签样本的训练集一般先进行均值归一化 (mean normalization), 保证所有的特征量都是均值为0,或者特征缩放 (feature scaling)。

数据预处理

举例1: 计算出每个特征的均值 μ,然后用 x - μ来替换掉 x;

举例2:用  减去平均值 ,除以 ,来替换掉第 j 个特征  。这里的  表示特征 j 的某个量度范围。它可以表示最大值减最小值,或者表示特征 j 的标准差。

假如想要把数据从 n 维降低到 k 维:

计算出协方差矩阵和Sigma 协方差矩阵的特征向量;在 Octave 中,可以使用如下命令[U,S,V] = svd(Sigma); 来实现这一功能。svd 表示奇异值分解 (singular value decomposition)。在 Octave 中还有另一个 eig 命令也可以用来计算特征向量。

Sigma 协方差矩阵

 svd 将输出三个矩阵分别是 U S V,你真正需要的是 U 矩阵。U 矩阵也是一个 n×n 矩阵,U 矩阵的列元素就是我们需要的u(1) u(2) 等等。数据的维度从 n降低到 k 的话,只需要提取前 k 列向量得到一个新的矩阵 u(1) 到 u(k),称为。这样就得到了u(1) 到 u(k),也就是用来投影数据的k 个方向,即用它来约减数据。最后,计算 z 的方法是z 等于这个 矩阵的转置乘以 x 。

PCA

z 矩阵的维度:矩阵的维度是 k × n,  x 的维度是 n × 1(没有 x0 = 1 这一项),因此这两个相乘维度应该是 k × 1。因此 z 是 k 维的向量。正好也就是我们所希望的。这里所说的 x可以是训练集中的样本,也可以是交叉验证集中的样本,也可以是测试集样本。比如如果想处理第 i 个训练样本,那么可以把这个写成x(i), 这里也是 x(i) 降维得到的就是 z(i)。

PCA总结

你可能感兴趣的:(2019-01-23 主成成分分析(PCA)的算法)