降维指的是降低数据的维度,降维的用途很广泛:

  1. 用来压缩数据,使用较少的计算机内存或磁盘空间,同时也可以加快学习算法。
  2. 除去数据的冗余(如:特征中分别有用厘米表示和用英寸表示,两者有重复)。
  3. 数据可视化,将三维以上的高维数据降维至二维或三维。

二维降维
三维降维

3.2.1 主成分分析PCA

主成分分析(PCA)是最常见的降维算法。PCA特点:

  1. 对数据进行降维处理后,保证数据的特性损失最小。
  2. 对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去。
  3. 不需要人为设定参数或根据任何经验对计算进行干预,最后的结果只与数据本身相关。

算法基本思想:

找到一个方向向量,当把所有的数据都投射到该向量上时,希望投射平均均方误差能尽可能地小。
方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
将\(n\)维降至\(k\)维,目标是找到向量\(μ_1,μ_2,…,μ_K\)使得总的投射误差最小。

降维基本思想

算法步骤:

假设有数据集:\(\{x^{(1)} , x^{(2)} ,…, x^{(m)}\}\)

  1. 均值归一化:
  2. 计算协方差矩阵Σ:
  3. 计算协方差矩阵Σ 的特征向量:\([U,S,V]=svd(Sigma)\)
  4. 获取\(U_{reduce}\),从\(U\)中选取前\(K \)个向量:
  5. 获取新的K维新特征向量\(Z^{(i)}\):

重建的压缩表示:

重建

如何选择主成分的数量K:

通过\(S{n×n}\)对角阵计算平均均方差与训练集方差的比例
训练集方差:$$1/m ∑
{i=1}^n ||x^{(i)}||^2 1/m ∑{i=1}^n ||x^{(i)}-x{approx}^{(i)} ||^2 (1/m ∑{i=1}^n||x^{(i)}-x{approx}^{(i)} ||^2 )/(1/m ∑{i=1}^n ||x^{(i)} ||^2 )\ =1-∑{i=1}^k S{ii}/∑{i=1}^m S{ii}≤ 1\% <=> ∑{i=1}^k S{ii}/∑{i=1}^m S_{ii}≥99\%$$意味着原本数据的偏差有99%都保留下来。

PCA只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征,只在有必要的时候才考虑采用主要成分分析。