Principal Component Analysis

PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 在PCA中,我们的基本思想是将所有数据投影到一个子空间中,从而达到降维的目标,为了寻找这个子空间,我们的基本想法是:

  1. 所有数据在子空间中更加分散(最大方差理论)
  2. 损失的信息最少(最小平方误差理论)

0.预备知识

假设数据矩阵XX如下所示:
(x1,x2,,xN)N×pT=[x1Tx2TxNT]=[x11x12x1px21x22x2pxN1xN2xNp]N×p (x_1,x_2,\dots,x_N)^T_{N \times p} = \left[ \begin{matrix} x_1^T \\ x_2^T \\ \vdots \\ x_N^T \end{matrix} \right] = \left[ \begin{matrix} x_{11} & x_{12} & \dots & x_{1p} \\ x_{21} & x_{22} & \dots & x_{2p} \\ \vdots & \vdots & \vdots& \vdots \\ x_{N1} & x_{N2} & \dots & x_{Np} \\ \end{matrix} \right]_{N \times p}
本文使用 xi,i=1,2,,Nx_i,i=1,2,\dots,N 行向量代表每一个样本,除此之外的向量均为列向量。

样本的均值(sample Mean)可表示为:
Xˉp×1=1Ni=1Nxi=1NXTIN \bar X_{p \times 1} = \frac{1}{N} \sum_{i=1}^{N}x_i = \frac{1}{N}X^TI_N
式中INI_NN×1N \times 1的单位向量。

样本的协方差矩阵(sample Covariance)可表示为:
Sp×p=1Ni=1N(xixˉ)(xixˉ)T S_{p \times p} = \frac{1}{N}\sum^{N}_{i=1}(x_i - \bar x)(x_i - \bar x)^T

1.最大方差理论

假定拥有的数据只有两个维度,每个数据都由横纵坐标表示,如下图所示。原始数据在椭圆的短轴方向上变化很小,在极端的情况下,短轴方向上的数据可能会退化为一个点。而在长轴方向上的数据能够解释所有数据的变化,将所有数据往长轴上投影时,能够保证样本与样本间的离散程度最大,也就是映射后的数据方差最大。这样由二维向一维空间的降维也就找到了投影方向,而且椭圆的长短轴相差的越大,降维后所保留的信息也就越多。

Principal Component Analysis

PCA的步骤如下所示:

  1. 标准化: xi=xixˉstd(xi)x_i=\frac{x_i-\bar x}{std(x_i)} 步骤使得数据集移至0均值附近,同时使得数据的方差为1;

  2. 计算投影方差: 由于映射的投影方向与投影向量的模长无关,假设将PCA种的第一投影向量记作u1=1||u_1||=1,则投影方差可以表示为:
    J(u1)=1Ni=1N[xiu1]T[xiu1]s.tu1Tu1=1 J(u_1) = \frac{1}{N} \sum_{i=1}^{N}[x_i u_1]^T[x_i u_1]\\ s.t \quad u^T_1 u_1 =1

    将上式展开即可得到:
    J(u1)=1Ni=1Nu1T(xiu1)T(xiu1)u1=u1T[1Ni=1N(xiu1)T(xiu1)]u1=u1TSu1 \begin{aligned} J(u_1) &= \frac{1}{N} \sum_{i=1}^{N} u_1^T (x_i u_1)^T (x_i u_1) u_1 \\ &= u_1^T [ \frac{1}{N} \sum_{i=1}^{N} (x_i u_1)^T (x_i u_1) ] u_1 \\ &= u_1^T S u_1 \end{aligned}

    上式中的 SS 表示的是数据集的协方差矩阵,在 Sp×p=1Ni=1N(xixˉ)(xixˉ)TS_{p \times p} = \frac{1}{N}\sum^{N}_{i=1}(x_i - \bar x)(x_i - \bar x)^T 中由于第一步的标准化处理使得 xˉ\bar x 为0,因此上式能够进行化简。接下来将上述的目标函数记作如下形式:
    {arg maxu1u1TSu1.s.t.u1Tu1=1 \left\{ \begin{aligned} \underset {u_1}{\operatorname {arg\,max} } \, u_1^T S u_1. \\ s.t. \quad u_1^T u_1 = 1 \end{aligned} \right.

  3. 求解有约束的优化问题: 构造朗格朗日函数,如下:
    L(u1,λ)=u1TSu1+λ(1u1Tu1) {\mathscr{L}} (u_1, \lambda) = u_1^T S u_1 + \lambda (1 - u_1^T u_1)

    将拉格朗日函数对 $ u_1 $ 求偏导,得到:
    L(u1,λ)u1=2Su1λ2u1=0    Su1=λu1 \frac{ \partial{ {\mathscr{L}}(u_1, \lambda) } }{ \partial{u_1} } = 2 S u_1 - \lambda 2 u_1 = 0 \implies S u_1 = \lambda u_1

    其中 u1u_1 即是特征向量,λ\lambda 为特征值。

  4. 最终的目标函数

    通过上述的分解可以得到最后化简完成的目标函数,如下所示:
    u^1=arg maxu1u1TSu1.=arg maxu1u1Tλu1.=arg maxu1λu1Tu1.=arg maxu1λ. \begin{aligned} \hat u_1 &= \underset {u_1}{\operatorname {arg\,max} } \, u_1^T S u_1. \\ &= \underset {u_1}{\operatorname {arg\,max} } \, u_1^T \lambda u_1.\\ &= \underset {u_1}{\operatorname {arg\,max} } \, \lambda u_1^T u_1.\\ &= \underset {u_1}{\operatorname {arg\,max} } \, \lambda. \end{aligned}

    最终,只需要找到最大的特征值 λ\lambda 对应的特征向量作为主元方向即可保证投影后的数据方差最大。

相关文章: