主成分分析(PCA)简明过程

主成分分析(PCA)是最常见的降维算法,通常用于数据压缩以及噪音过滤

比如我们可以通过PCA将100维的向量最后用10维来表示,那么压缩率为90%,同时还可以保证数据的特性损失尽可能的小

1)PCA算法流程

在详细展开讲之前,先了解一下几个基本数学符号的定义:

x^{i} 表示第i个样本数据(这个数据是一个N维向量)

x_{j}^{i} 表示第i个样本的第j个特征

x_{j} 表示由所有样本数据的第j个特征变量组成的一个向量

了解这些数学符号的定义非常重要,否则后面的推导公式很容易混乱

假设我们有一个n维的样本数据集 D = (x^{(1)}, x^{(2)}, ..., x^{(m)}),其中每一个数据都是n维的 x^{(i)} = \{x_1^i, x_2^i, ..., x_n^i\},我们要把维度从n维降到k维:

  1. 对所有样本进行归一化 x^{(i)} = x^{(i)} - \frac{1}{m} \sum\limits_{j=1}^{m} x^{(j)}
  2. 计算协方差矩阵covariance matrixXX^T,其中 X 的定义非常重要
  3. 计算协方差矩阵XX^T特征向量eigenvectors),通常用SVD分解,得到 [U, S, V]
  4. 从U中选取前k个最大特征值对应的特征向量,组成一个新的特征向量矩阵U_{reduce}
  5. 对所有样本,求的新的降维后的样本,z^{(i)} = U_{reduce}^T * x^{(i)}

2)归一化

归一化的目的,主要是为了简化计算,让计算过程更加human readable,常用的手段是,所有样本,都减去样本均值 x_j = x_j - \bar {x}

如果特征是在不同的数量级上,我们还需要将其除以标准差\delta^2

3)计算协方差矩阵

方差用来度量单个随机变量的离散程度,协方差用来刻画两个随机变量的相似程度。计算协方差矩阵covariance matrixXX^T,其中 X 指的不是样本数据,而是特征

由于我们是 n 维数据,因此,协方差矩阵计算的是:

XX^T =

方差公式:

\sigma_x^2 = \frac{1}{n-1} \sum\limits_{i=1}^{n} (x_i - \bar{x})^2

其中 n 是样本数量,\bar{x} 是所有观测样本的均值

 

参考文章:

  1. https://zhuanlan.zhihu.com/p/260186662
发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注