机器学习之PCA主成分分析

PCA思想

  • PCA 将高维的数据通过线性变换投影到低维空间上去
  • 投影思想:找出最能够代表原始数据的投影方法。被 PCA 降掉的那些维度只能是那些噪声或是冗余的数据。
  • 去冗余去除可以被其他向量代表的线性相关向量,这部分信息量是多余的。
  • 去噪声去除较小特征值对应的特征向量,特征值的大小反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,要保留
  • 对⻆化矩阵寻找极大线性无关组,保留较大的特征值,去除较小特征值,组成一个投影矩阵,对原始样本矩阵进行投影,得到降维后的新样本矩阵。
  • 完成 PCA 的关键是 —— 协方差矩阵协方差矩阵,能同时表现不同维度间的相关性以及各个维度上的方差协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。
  • 之所以对⻆化,因为对⻆化之后非对⻆上的元素都是 0 ,达到去噪声的目的。对⻆化后的协方差矩阵,对⻆线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量 ( 特征值 ) 的维度,其余的就舍掉,即去冗余。

PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将 m 维特征映射到 n 维( n < m ),这 n 维形成主元,是重构出来最能代表原始数据的正交特征

假设数据集是 m 个 n 维, (x(1),x(2),,x(m))(\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \cdots, \boldsymbol x^{(m)}) 。如果 n=2n=2 ,需要降维到 n=1n'=1 ,现在想找到某一维度方向代表这两个维度的数据。下图有 u1,u2u_1, u_2 两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据集的呢?
机器学习之PCA主成分分析
从图可看出, u1u_1u2u_2 好,为什么呢?有以下两个主要评价指标:

  • 样本点到这个直线的距离足够近。
  • n样本点在这个直线上的投影能尽可能的分开。

如果我们需要降维的目标维数是其他任意维,则:

  • 样本点到这个超平面的距离足够近
  • 样本点在这个超平面上的投影能尽可能的分开

PCA算法推理

下面以基于最小投影距离为评价指标推理:
假设数据集是 m 个 n 维, (x(1),x(2),...,x(m))(x^{(1)}, x^{(2)},...,x^{(m)}) ,且数据进行了中心化。经过投影变换得到新坐标为 w1,w2,...,wn{w_1,w_2,...,w_n} ,其中 ww 是标准正交基,即 w2=1| w |_2 = 1 , wiTwj=0w^T_iw_j = 0

经过降维后,新坐标为 w1,w2,...,wn{ w_1,w_2,...,w_n } ,其中 nn' 是降维后的目标维数。样本点 x(i)x^{(i)} 在新坐标系下的投影为 z(i)=(z(i)1,z(i)2,...,z(i)n)z^{(i)} = \left(z^{(i)}1, z^{(i)}2, ..., z^{(i)}{n'} \right) ,其中 z(i)j=wjTx(i)z^{(i)}j = w^T_jx^{(i)}x(i)x^{(i)} 在低维坐标系里第 j 维的坐标。

如果用 z(i)z^{(i)} 去恢复 x(i)x^{(i)} ,则得到的恢复数据为 x^(i)=nj=1x(i)jwj=Wz(i)\widehat{x}^{(i)} = \sum^{n'}{j=1} x^{(i)}j w_j = Wz^{(i)} ,其中 WW 为标准正交基组成的矩阵。

考虑到整个样本集,样本点到这个超平面的距离足够近,目标变为最小化 i=1mx^(i)x(i)22\sum^m_{i=1}|\hat{x}^{(i)} - x^{(i)} |^2_2。对此式进行推理,可得:
机器学习之PCA主成分分析

在推导过程中,分别用到了 x(i)=Wz(i)\overline{x}^{(i)} = Wz^{(i)} ,矩阵转置公式 (AB)T=BTAT(AB)^T = B^TA^T ,WTW=IW^TW = I , z(i)=WTx(i)z^{(i)} = W^Tx^{(i)} 以及矩阵的迹,最后两步是将代数和转为矩阵形式。

由于 WW 的每一个向量 wjw_j 是标准正交基, mi=1x(i)(x(i))T\sum^m{i=1} x^{(i)} \left( x^{(i)} \right)^T 是数据集的协方差矩阵, mi=1(x(i))Tx(i)\sum^m{i=1} \left( x^{(i)} \right)^T x^{(i)} 是一个常量。最小化 i=1mx^(i)x(i)22\sum^m_{i=1} | \hat{x}^{(i)} - x^{(i)} |^2_2 又可等价于
机器学习之PCA主成分分析

利用拉格朗日函数可得到
机器学习之PCA主成分分析

WW 求导,可得 XXTW+λW=0-XX^TW + \lambda W = 0 ,也即 XXTW=λWXX^TW = \lambda WXXTXX^Tnn'个特征向量组成的矩阵, λ\lambdaXXTXX^T 的特征值。 WW 即为我们想要的矩阵。

对于原始数据,只需要 z(i)=WTX(i)z^{(i)} = W^TX^{(i)} ,就可把原始数据集降维到最小投影距离的 nn' 维数
据集。

PCA算法流程总结

输入: nn 维样本集 D=(x(1),x(2),...,x(m))D = \left( x^{(1)},x^{(2)},...,x^{(m)} \right) ,目标降维的维数 nn'
输出:降维后的新样本集 D=(z(1),z(2),...,z(m))D' = \left( z^{(1)},z^{(2)},...,z^{(m)} \right)
主要步骤如下:

  1. 对所有的样本进行中心化, x(i)=x(i)1mj=1mx(j)x^{(i)} = x^{(i)} - \frac{1}{m} \sum^m_{j=1} x^{(j)}
  2. 计算样本的协方差矩阵 XXTXX^T
  3. 对协方差矩阵 XXTXX^T 进行特征值分解。
  4. 取出最大的 nn' 个特征值对应的特征向量 w1,w2,...,wn{ w_1,w_2,...,w_{n'} }
  5. 标准化特征向量,得到特征向量矩阵 WW
  6. 转化样本集中的每个样本 z(i)=WTx(i)z^{(i)} = W^T x^{(i)}
  7. 得到输出矩阵 D=(z(1),z(2),...,z(n))D' = \left( z^{(1)},z^{(2)},...,z^{(n)} \right)
    注 :在降维时,有时不明确目标维数,而是指定降维到的主成分比重阈值 k(kϵ(0,1])k(k \epsilon(0,1])
    假设 nn 个特征值为 λ1λ2...λn\lambda_1 \geqslant \lambda_2 \geqslant ... \geqslant \lambda_n ,
    nn' 可从 ni=1λik×ni=1λi\sum^{n'}{i=1} \lambda_i \geqslant k \times \sum^n{i=1} \lambda_i 得到。

PCA算法主要优缺点

优点

  • 仅仅需要以方差衡量信息量,不受数据集外的因素影响.
  • 各主成分之间正交,可消除原始数据成分间的相互影响的因素
  • 计算方法简单,主要运算是特征值分解,易于实现

缺点

  • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强
  • 方差小的非主成分也可能含有对样本差异的重要信息,因维度丢弃可能对后续数据处理有影响

降维的必要性及目的

必要性

  • 多重共线性和预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯
  • 高维空间本身具有稀疏性.一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有2%
  • 过多的变量,对查找规律造成冗余麻烦
  • 仅在变量层面上分析可能会忽略变量之间的潜在联系.例如几个预测变量可能落入仅反映数据某一方面特征的一个组内

目的

  • 减少预测变量的个数
  • 确保这些变量是相互独立的
  • 提供一个框架来解释结果.相关特征,特别是重要特征更能在数据中明确的显示出来;如果只有两维或者三维的话,更便于可视化展示
  • 数据在低维下更容易处理,更容易使用
  • 去除数据噪声
  • 降低算法运算开销