跳至主要內容

主成分分析(PCA)

原创Xenny约 1517 字大约 6 分钟机器学习机器学习无监督学习PCA

主成分分析(PCA)

  • PCA(Principal Component Analysis)是一种无监督学习的线性变换技术,通过将高维数据投影到低维空间中的主要方向来捕获数据的本质结构。

PCA步骤

特征提取

  • 对于一个样本数据,它可以包含很多的特征,例如一个人的身高、体重、性别、年龄,但是并不是每个特征都能用于指定的任务中,例如判断一个人是否患病,身高可能不仅没有作用还会让分类器效果变差,所以对于具体的任务要选择不同的特征输入给模型,这个过程便是特征选择

    而对于特征提取来说,是指从已有的特征中生成新的特征,例如体重和是否应减肥并不是完全相关(不同年龄、身高、性别标准都不一样),更多的我们会用身高和体重计算出新的指标BMI,再更具BMI确定是否应减肥。那么从原有的特征计算出BMI的过程,便是一个特征提取的过程。

  • 而PCA也就是干这样一件事,从原有的特征空间进行特征提取得到特征空间,达到减少维度的效果。

协方差矩阵

  • PCA的具体做法对每个特征值先进行去均值操作,然后通过计算协方差矩阵的特征值和特征向量得到新的特征空间。

    那么为什么这样便可以进行降维呢,实际上PCA的过程便是利用协方差得到不同特征之间的相关程度,找出最大/小的相关方向达到降维。

  • X\mathbf{X}nn个特征组成的矩阵,每种特征包含mm的采样值。则有

    X=[X11X12X1mX21X22X2mXn1Xn2Xnm]=[X1X2Xn]T \mathbf{X} = \begin{bmatrix} \mathbf{X}_{11}&\mathbf{X}_{12}&\cdots&\mathbf{X}_{1m}\\ \mathbf{X}_{21}&\mathbf{X}_{22}&\cdots&\mathbf{X}_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ \mathbf{X}_{n1}&\mathbf{X}_{n2}&\cdots&\mathbf{X}_{nm}\\ \end{bmatrix} = \begin{bmatrix} \mathbf{X}_{1}&\mathbf{X}_{2}&\cdots&\mathbf{X}_{n}\end{bmatrix}^T

    每种特征的均值或者说期望为ui=E(Xi)=(Xi1+Xi2++Xim)/mu_i = E(\mathbf{X}_i) = (\mathbf{X}_{i1}+\mathbf{X}_{i2}+\cdots+\mathbf{X}_{im})/m,对X\mathbf{X}进行去均值,也就是每个特征值都减去特征均值得到新的矩阵

    Y=[X11E(X1)X12E(X1)X1mE(X1)X21E(X2)X22E(X2)X2mE(X2)Xn1E(Xn)Xn2E(Xn)XnmE(Xn)]=[Y1Y2Yn]T \mathbf{Y} = \begin{bmatrix} \mathbf{X}_{11} - E(\mathbf{X}_1)&\mathbf{X}_{12} - E(\mathbf{X}_1)&\cdots&\mathbf{X}_{1m} - E(\mathbf{X}_1)\\ \mathbf{X}_{21} - E(\mathbf{X}_2)&\mathbf{X}_{22} - E(\mathbf{X}_2)&\cdots&\mathbf{X}_{2m} - E(\mathbf{X}_2)\\ \vdots&\vdots&\ddots&\vdots\\ \mathbf{X}_{n1} - E(\mathbf{X}_n)&\mathbf{X}_{n2} - E(\mathbf{X}_n)&\cdots&\mathbf{X}_{nm} - E(\mathbf{X}_n)\\ \end{bmatrix} = \begin{bmatrix} \mathbf{Y}_{1}&\mathbf{Y}_{2}&\cdots&\mathbf{Y}_{n}\end{bmatrix}^T

    对于协方差,计算公式为Cov(Xi,Xj)=E{(XiE(Xi))(XjE(Xj))}\mathrm{Cov}(\mathbf{X_i}, \mathbf{X_j}) = E\{(\mathbf{X_i}-E(\mathbf{X_i}))(\mathbf{X_j}-E(\mathbf{X_j}))\},数学性质以及推导请见概率论篇。由此我们得到协方差矩阵RX\mathbf{R}_{\mathbf{X}}

    =[E{(X1u1)(X1u1)}E{(X1u1)(X2un)}E{(X1u1)(Xnun)}E{(X2u2)(X1u1)}E{(X2u2)(X2u2)}E{(X2u2)(Xnun)}E{(Xnun)(X1u1)}E{(Xnun)(X2u2)}E{(Xnun)(Xnun)}]=E(YYT) \begin{aligned} &= \begin{bmatrix} E\{(\mathbf{X}_1 - u_1)(\mathbf{X}_1 - u_1)\}&E\{(\mathbf{X}_1 - u_1)(\mathbf{X}_2 - u_n)\}&\cdots&E\{(\mathbf{X}_1 - u_1)(\mathbf{X}_n - u_n)\}\\ E\{(\mathbf{X}_2 - u_2)(\mathbf{X}_1 - u_1)\}&E\{(\mathbf{X}_2 - u_2)(\mathbf{X}_2 - u_2)\}&\cdots&E\{(\mathbf{X}_2 - u_2)(\mathbf{X}_n - u_n)\}\\ \vdots&\vdots&\ddots&\vdots\\ E\{(\mathbf{X}_n - u_n)(\mathbf{X}_1 - u_1)\}&E\{(\mathbf{X}_n - u_n)(\mathbf{X}_2 - u_2)\}&\cdots&E\{(\mathbf{X}_n - u_n)(\mathbf{X}_n - u_n)\} \end{bmatrix}\\ &= E(\mathbf{YY}^T) \end{aligned}

    注意这里的协方差是计算每个特征向量之间的值,而和特征数目mm无关,所以只与特征个数有关,是一个n×nn\times n的矩阵。协方差矩阵具有对此且半自定性。

  • 对于协方差矩阵RX\mathbf{R}_{\mathbf{X}}来说,它的最大特征向量也将是PCA中的主成分。证明如下

    PCA要找的方向即数据最广、方差最大(方差越大说明这个特征可能越容易影响结果,即信息越多)的方向,设方向向量为α\boldsymbol{\alpha},我们可以将去均值后的数据Y\mathbf{Y}投影到α\boldsymbol{\alpha}上得

    PαY=αTYαTααT P_\alpha\mathbf{Y} = \frac{\boldsymbol{\alpha}^T\mathbf{Y}}{\boldsymbol{\alpha}^T\boldsymbol{\alpha}}\boldsymbol{\alpha}^T

    其方差为

    EPαY2=EαTYααT=EaTYa2 E|P_\alpha\mathbf{Y}|^2 = E|\frac{\boldsymbol{\alpha}^T\mathbf{Y}}{\Vert\boldsymbol{\alpha}\Vert}\boldsymbol{\alpha}^T| = E|\boldsymbol{a}^T\mathbf{Y}\boldsymbol{a}|^2

    其中a=αα\boldsymbol{a} = \frac{\boldsymbol{\alpha}}{\Vert\boldsymbol{\alpha}\Vert},这便是我们的优化目标。

    我们的目的是在a=1\Vert\boldsymbol{a}\Vert = 1的约束下求方差最大值。

    此时有

    max{EaTYa2}=max{E(aTYaaTYTa)}=max{E(aTRXa)} \max\left\{E|\boldsymbol{a}^T\mathbf{Y}\boldsymbol{a}|^2\right\} = \max\left\{E(\boldsymbol{a}^T\mathbf{Y}\boldsymbol{a}\boldsymbol{a}^T\mathbf{Y}^T\boldsymbol{a})\right\} = \max\left\{E(\boldsymbol{a}^T\mathbf{R}_{\mathbf{X}}\boldsymbol{a})\right\}

    继续使用在SVM中讲过的拉格朗日乘数法得到拉格朗日函数

    L(a,λ)=aTRXaλ(aTa1) L(\boldsymbol{a}, \lambda) = \boldsymbol{a}^T\mathbf{R}_{\mathbf{X}}\boldsymbol{a} - \lambda(\boldsymbol{a}^T\boldsymbol{a}-1)

    求解驻点零点可得

    RXa=λa \mathbf{R}_{\mathbf{X}}\boldsymbol{a} = \lambda a

    a\boldsymbol{a}是协方差矩阵的一个特征向量,其带入原式得

    max{aTRXa}=max{aTλa}=maxλ \max\left\{\boldsymbol{a}^T\mathbf{R}_{\mathbf{X}}\boldsymbol{a}\right\} = \max\left\{\boldsymbol{a}^T\lambda \boldsymbol{a}\right\} = \max \lambda

    λ\lambda即特征值取最大值时,得方差最大值,且此时对应得特征向量为PCA得第一主方向。当然在实际运算时直接对Y\mathbf{Y}做SVD,速度更快。

    提示

    设最大方向模长为1是消除向量大小对分析的影响,实际线代中求解特征向量后的单位化。

总结

  • 协方差矩阵的特征向量还是有nn个,为什么说达到降维的目的呢,因为PCA的主要目的并不是找k<nk<n个特征出来,而是进行特征提取获取新的特征,我们将从新的特征空间手动选择特征值更大的特征向量作为新的特征空间。

  • 同时PCA只是一个线性模型,且只是一种数据预处理技术,并不能直接用于处理具体任务。