深入理解主成分分析(PCA)

二次信任 提交于 2020-01-30 18:20:36

在这里插入图片描述

PCA 的定义方式有很多,其中最常见的有三个:
  其一,PCA 可以理解为降维法,在保留尽可能多的离散程度信息的基础上减少变量的个数,消除变量之间的线性相关性;
  其二,PCA 可以理解为向其他方向上的正交投影,使得投影点的方差最大(Hotelling,1933);
  其三,它也可以理解为正交投影,使得复原损失最小,这一损失通过数据点与估计点间平方距离的平均值来刻画(Pearson,1901).

下面我们分别考虑这三种定义方式.

1. 降维法

  这里的"维"指的便是变量的个数,在记录数据时,例如采集一个人的信息,需要收集其身高、体重、胸围等数据,这里的身高、体重和胸围即是"变量";每个人的数据,例如(173(cm), 65(kg), 887(mm)),称为一个样本,或数据点.
  PCA 可以这么理解:一方面,在保留尽可能多的离散程度信息的情况下减少变量的个数;另一方面,消除变量之间的线性相关性(在上述例子中,身高、体重、胸围之间显然具有某种正相关性). 至于为什么要这样做,这就涉及到 PCA 的来历,可参见:A Tutorial on Principal Component Analysis(译).

  • 离散程度信息可以通过变量的方差来刻画,方差越大,含有的信息越多;
  • 变量的线性相关性可以通过协方差的绝对值来刻画,绝对值越大,相关性越强,协方差为零时线性无关;

  PCA 的思路是,对原有变量进行线性组合得到新变量,使得新变量的方差尽可能大,不同变量间的协方差为零.

下面来看详细 推导过程:
  设 X\small Xmm 维随机变量,X=(x1x2xm)X=\begin{pmatrix}x_1\\x_2\\\vdots\\x_m\end{pmatrix}对其作变换如下:PX=YPX=Y其中 P\small P 为方阵, P=(pij)m×m=[p1Tp2TpmT]P=(p_{ij})_{m\times m}=\begin{bmatrix}p_1^T\\p_2^T\\ \vdots \\p_m^T\end{bmatrix}[y1y2ym]=Y=PX=[p11x1+p12x2++p1mxmp21x1+p22x2++p2mxmpm1x1+pm2x2++pmmxm]=[p1TXp2TXpmTX]\begin{bmatrix}y_1\\ y_2\\ \vdots \\ y_m\end{bmatrix}=Y=PX=\begin{bmatrix}p_{11}x_1+p_{12}x_2+\cdots+p_{1m}x_m \\ p_{21}x_1+p_{22}x_2+\cdots+p_{2m}x_m \\ \vdots \\ p_{m1}x_1+p_{m2}x_2+\cdots+p_{mm}x_m \end{bmatrix}=\begin{bmatrix}p_1^TX\\p_2^TX\\ \vdots \\p_m^TX\end{bmatrix}可以看到,新变量 yiy_i 是原变量的线性组合.
Var(yi)=E[yiE(yi)]2=E[(piTXE(piTX))(piTXE(piTX))T]=piTE[(XE(X))(XE(X))T]pi=piTCXpiCov(yi,yj)=piTCXpj,  i,j=1,2,,m\begin{aligned}Var(y_i)&=E[y_i-E(y_i)]^2\\&=E[(p_i^TX-E(p_i^TX))(p_i^TX-E(p_i^TX))^T]\\&=p_i^TE[(X-E(X))(X-E(X))^T]p_i\\&=p_i^TC_Xp_i\\Cov(y_i,y_j)&=p_i^TC_Xp_j,\,\,i,j=1,2,\cdots,m\end{aligned}  要使 Var(yi)\small Var(y_i) 尽可能地大,这一点很容易做到,只需按比例缩放 pip_i 即可. 不过这样做没有什么意义,也不是我们想要的,因此需要对 pip_i 做些限制:pip_i 为单位向量,即 pi2=piTpi=1\small \Vert p_i \Vert^2=p_i^Tp_i=1. 我们的目标是合理选择 pip_i ,使得 Var(yi)\small Var(y_i) 尽量地大,同时满足 Cov(yi,yj)=0,ij\small Cov(y_i,y_j)=0,i\neq j.
  先做些准备工作,因为 CX\small C_X 是实对称矩阵且正定,所以其特征值均为正数,且存在某正交矩阵 U\small U,使得 UTCXU=D,  D=diag(λ1,λ2,,λm)\small U^TC_XU=D,\,\,D=diag(\lambda_1,\lambda_2,\cdots,\lambda_m),其中 λ1λ2λm>0,  U=(u1u2um),  ui\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_m>0,\,\, U=(u_1\,u_2\,\cdots\,u_m),\,\, u_iλi\lambda_i 的特征向量. 所以 CX\small C_X 可以表示为 CX=UDUTC_X=UDU^T  首先,要使 Var(y1)\small Var(y_1) 尽可能地大,
Var(y1)=p1TCXp1=p1TUDUTp1Var(y_1)=p_1^TC_Xp_1=p_1^TUDU^Tp_1z1=UTp1=(z11,z12,,z1m)Tz_1=U^Tp_1=(z_{11},z_{12},\cdots,z_{1m})^T,则 z12=z112+z122++z1m2=z1Tz1=p1TUUTp1=p1Tp1=1\Vert z_1 \Vert^2=z_{11}^2+z_{12}^2+\cdots+z_{1m}^2=z_1^Tz_1=p_1^TUU^Tp_1=p_1^Tp_1=1 Var(y1)=z1TDz1=z112λ1+z122λ2++z1m2λmz112λ1+z122λ1++z1m2λ1=λ1\begin{aligned}Var(y_1)&=z_1^TDz_1\\&=z_{11}^2\lambda_1+z_{12}^2\lambda_2+\cdots+z_{1m}^2\lambda_m\\&\leq z_{11}^2\lambda_1+z_{12}^2\lambda_1+\cdots+z_{1m}^2\lambda_1\\&=\lambda_1\end{aligned}z1=(1,0,,0)Tz_1=(1,0,\cdots,0)^T,等式成立,此时 Var(y1)\small Var(y_1) 取最大值 λ1,  p1=Uz1=u1\lambda_1,\,\,p_1=Uz_1=u_1.

  然后,考虑 p2p_2,需满足:max  Var(y2)max\,\,Var(y_2)s.t.Cov(y1,y2)=0s.t.\, Cov(y_1,y_2)=0max  p2TCXp2max\,\,p_2^TC_Xp_2s.t.  p2TCXp1=0s.t.\,\,p_2^TC_Xp_1=0同样记 z2=UTp2=(z21,z22,,z2m)Tz_2=U^Tp_2=(z_{21},z_{22},\cdots,z_{2m})^T,则p2TCXp1=p2TUDUTp1=z2TDz1=λ1z21=0p_2^TC_Xp_1=p_2^TUDU^Tp_1=z_2^TDz_1=\lambda_1z_{21}=0所以 z21=0z_{21}=0,则 z22=0+z222++z2m2=z2Tz2=p2TUUTp2=p2Tp2=1\Vert z_2 \Vert^2=0+z_{22}^2+\cdots+z_{2m}^2=z_2^Tz_2=p_2^TUU^Tp_2=p_2^Tp_2=1Var(y2)=z222λ2+z232λ3++z2m2λmz222λ2+z232λ2++z2m2λ2=λ2\begin{aligned}Var(y_2)&=z_{ 22}^2\lambda_2+z_{ 23}^2\lambda_3+\cdots+z_{2m}^2\lambda_m\\&\leq z_{ 22}^2\lambda_2+z_{ 23}^2\lambda_2+\cdots+z_{2m}^2\lambda_2\\&=\lambda_2\end{aligned}z2=(0,1,0,,0)Tz_2=(0,1,0,\cdots,0)^T,等式成立,此时 Var(y2)\small Var(y_2) 取最大值 λ2\lambda_2 且满足 Cov(y1,y2)=0,p2=Uz2=u2\small Cov(y_1,y_2)=0,\,p_2=Uz_2=u_2.

  依次递推下去,求 pip_i,需满足:max  Var(yi)max \,\,Var(y_i)s.t.Cov(yj,yi)=0,  j=1,2,,i1s.t.\,Cov(y_j,y_i)=0,\,\,j=1,2,\cdots,i-1解得 Var(yi)\small Var(y_i) 的最大值为 λi\lambda_i,当 pi=uip_i=u_i 时取得最大值.

  综合上述,pi=uip_i=u_i,即 P=[p1Tp2TpmT]=[u1Tu2TumT]=UT,Y=UTXP=\begin{bmatrix}p_1^T\\p_2^T\\ \vdots \\p_m^T\end{bmatrix}=\begin{bmatrix}u_1^T\\u_2^T\\ \vdots \\u_m^T\end{bmatrix}=U^T, Y=U^TX此时CY=[Cov(y1,y1)Cov(y1,y2)Cov(y1,ym)Cov(y2,y1)Cov(y2,y2)Cov(y2,ym)Cov(ym,y1)Cov(ym,y2)Cov(ym,ym)]=[λ1000λ2000λm]=D\begin{aligned}C_Y&=\begin{bmatrix}Cov(y_1,y_1) & Cov(y_1,y_2) & \cdots & Cov(y_1,y_m)\\Cov(y_2,y_1) & Cov(y_2,y_2) & \cdots & Cov(y_2,y_m)\\\vdots & \vdots & \ddots & \vdots\\Cov(y_m,y_1) & Cov(y_m,y_2) & \cdots & Cov(y_m,y_m)\end{bmatrix}\\&=\begin{bmatrix}\lambda_1&0&\cdots&0\\0&\lambda_2&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&\lambda_m\end{bmatrix}\\&=D\end{aligned}CY\small C_Y 为对角阵,对角线元素为 CX\small C_X 的特征值(由大到小排列).
  也可以通过 拉格朗日乘数法 来求解 pip_i,但不如此方法直观,感兴趣的读者可查阅相关资料或自己求解.

2. 最大方差解释

  PCA 的目的是重新找一组基,这些基向量之间互相垂直,且数据点在基向量方向上投影的方差最大. 记要找 标准正交基 {p1,p2,,pm},with  piTpj=δij\lbrace p_1,p_2,\cdots,p_m\rbrace,with \,\, p_i^Tp_j=\delta_{ij}.(这里重点是基向量的方向,与模长无关,所以取基向量为单位向量)
  设 X\small Xm×nm\times n 的数据矩阵,一行表示一个变量,一列表示一个数据点 or 样本. 例如,在上一部分的例子中,
X=[1731596555887853]X=\begin{bmatrix}173 &159 \\ 65 & 55 \\ 887 & 853\end{bmatrix}行表示身高、体重、胸围等变量,列表示某个人的数据,m=3,n=2m=3,n=2.

  对 X\small X 进行列分块,X=(x1x2xn)X=(x_1\,x_2\,\cdots\,x_n)xjx_j 表示数据点,piTxjp_i^Tx_j 表示 xjx_jpip_i 方向上的投影,则各数据点在 pip_i 方向上投影的方差可以表示为 Var(i)=1nj=1n(piTxjpiTxj)2=1nj=1n(piT(xjxj))2=1nj=1npiT(xjxj)(xjxj)Tpi=piT(1nj=1n(xjxj)(xjxj)T)pi=piTCXpi\begin{aligned}Var(i)&=\frac{1}{n}\sum_{j=1}^n(p_i^Tx_j-\overline{p_i^Tx_j})^2\\&=\frac{1}{n}\sum_{j=1}^n(p_i^T(x_j-\overline{x_j}))^2\\&=\frac{1}{n}\sum_{j=1}^np_i^T(x_j-\overline{x_j})(x_j-\overline{x_j})^Tp_i\\&=p_i^T(\frac{1}{n}\sum_{j=1}^n(x_j-\overline{x_j})(x_j-\overline{x_j})^T)p_i\\&=p_i^TC_Xp_i\end{aligned}  首先考虑使 Var(1)\small Var(1) 最大,这里的 Var(1)\small Var(1) 与上部分中的 Var(y1)\small Var(y_1) 相同,可利用同样方法得到相同结果,即 p1=u1p_1=u_1,即最大特征值 λ1\lambda_1 的单位特征向量.
  下一步,求 p2p_2,使得 Var(2)\small Var(2) 最大,同时使 p2Tp1=0p_2^Tp_1=0. 这时细心的读者会发现,上一部分中要求的是 p2TCXp1=0\small p_2^TC_Xp_1=0,与这里不同. 仔细想想,真的不同吗?  CXp1=λ1p1(λ1>0)  p2TCXp1=λ1p2Tp1  p2TCXp1=0    p2Tp1=0\begin{aligned}&\because \,\,C_Xp_1=\lambda_1p_1(\lambda_1>0)\\ &\therefore \,\,p_2^TC_Xp_1=\lambda_1 p_2^Tp_1\\ &\therefore \,\,p_2^TC_Xp_1=0 \iff p_2^Tp_1=0\end{aligned}嘿嘿,怎么样?这下相信两者相同了吧?
  同理,之后的限制条件也相同,即 piTCXpj=0    piTpj=0\small p_i^TC_Xp_j=0 \iff p_i^Tp_j=0.

  当 pi=uip_i=u_i,即 λi\lambda_i 的单位特征向量时,pip_i 方向上数据投影点的方差取最大值 λi\lambda_i 且不同基向量之间相互垂直. 所以,PCA 要找的一组标准正交基就是协方差矩阵 CX\small C_X 的单位正交特征向量.

3. 最小均方误差解释

  对数据矩阵 Xm×n\small X_{m\times n} 进行列分块,每列表示一个数据点,即X=(x1x2xn)X=(x_1\,x_2\,\cdots\,x_n) 现用一组标准正交基 {p1,p2,,pm}\lbrace p_1,p_2,\cdots,p_m\rbrace 重新表示各数据点xi=ai1p1+ai2p2++aimpm,  i=1,2,,nx_i=a_{i1}p_1+a_{i2}p_2+\cdots+a_{im}p_m,\,\,i=1,2,\cdots,n由于这是一组标准正交基,容易求得(点击查看过程),aij=xiTpja_{ij}=x_i^Tp_j.

  考虑 d(d<m)d(d<m) 维空间 Vd=span{p1,p2,,pd}\small V_d=span\lbrace p_1,p_2,\cdots,p_d\rbrace,我们的目的是在 Vd\small V_d 中重新表示样本,同时要保证"损失"最小. 设每个数据点的估计值可以表示为x~i=j=1dbijpj+j=d+1mzjpj\widetilde{x}_i=\sum_{j=1}^db_{ij}p_j+\sum_{j=d+1}^mz_jp_j其中 bijb_{ij} 与数据点有关,zjz_j 与数据点无关. 设损失函数为数据点与近似点平方距离的平均值,即J=1ni=1nxix~i2J=\frac{1}{n} \sum_{i=1}^n \Vert x_i-\widetilde{x}_i\Vert^2为了使该损失函数值最小,我们可以随意选择 bij,zjb_{ij},\,z_j{pj}\lbrace p_j\rbrace.

  首先考虑 bijb_{ij}xix~i=j=1d(aijbij)pj+j=d+1m(aijzj)pjx_i-\widetilde{x}_i=\sum_{j=1}^d(a_{ij}-b_{ij})p_j+\sum_{j=d+1}^m(a_{ij}-z_j)p_j{p1,p2,,pm}\lbrace p_1,p_2,\cdots,p_m\rbrace 是一组标准正交基,所以 xix~i2=j=1d(aijbij)2+j=d+1m(aijzj)2 \Vert x_i-\widetilde{x}_i\Vert^2=\sum_{j=1}^d(a_{ij}-b_{ij})^2+\sum_{j=d+1}^m(a_{ij}-z_j)^2J=1ni=1nxix~i2=1ni=1n(j=1d(aijbij)2+j=d+1m(aijzj)2)J=\frac{1}{n} \sum_{i=1}^n \Vert x_i-\widetilde{x}_i\Vert^2=\frac{1}{n} \sum_{i=1}^n(\sum_{j=1}^d(a_{ij}-b_{ij})^2+\sum_{j=d+1}^m(a_{ij}-z_j)^2)选择 bijb_{ij} 使 J\small J 最小,可以看出当 bij=aij=xiTwjb_{ij}=a_{ij}=x_i^Tw_j 时,J\small J 取最小值,此时 J=1ni=1nj=d+1m(aijzj)2=1nj=d+1mi=1n(aijzj)2J=\frac{1}{n} \sum_{i=1}^n\sum_{j=d+1}^m(a_{ij}-z_j)^2=\frac{1}{n} \sum_{j=d+1}^m\sum_{i=1}^n(a_{ij}-z_j)^2也可通过对 bijb_{ij} 求导,令偏导数为零,得到相同结果.

  然后,考虑 zjz_jJ=1nj=d+1mi=1n(zj22zjaij+aij2)=1nj=d+1m(nzj22(i=1naij)zj+i=1naij2)\begin{aligned}J&=\frac{1}{n} \sum_{j=d+1}^m\sum_{i=1}^n(z_j^2-2z_ja_{ij}+a_{ij}^2)\\&=\frac{1}{n} \sum_{j=d+1}^m(nz_j^2-2(\sum_{i=1}^na_{ij})z_j+\sum_{i=1}^na_{ij}^2)\end{aligned}zjz_j 求偏导,令导数为零Jzj=2nzj2i=1naij=0\frac{\partial J}{\partial z_j}=2nz_j-2\sum_{i=1}^na_{ij}=0zj=1ni=1naij=1ni=1nxiTpj=(1ni=1nxiT)pj=xTpjz_j=\frac{1}{n}\sum_{i=1}^na_{ij}= \frac{1}{n}\sum_{i=1}^nx_i^Tp_j=(\frac{1}{n}\sum_{i=1}^nx_i^T)p_j=\overline{x}^Tp_j此时 J=1ni=1nj=d+1m(aijzj)2=1ni=1nj=d+1m(xiTpjxTpj)2=1ni=1nj=d+1m((xix)Tpj)((xix)Tpj)=1nj=d+1mi=1npjT(xix)(xix)Tpj=j=d+1mpjT(1ni=1n(xix)(xix)T)pj=j=d+1mpjTCXpj\begin{aligned}J&=\frac{1}{n} \sum_{i=1}^n\sum_{j=d+1}^m(a_{ij}-z_j)^2\\&=\frac{1}{n} \sum_{i=1}^n\sum_{j=d+1}^m(x_i^Tp_j-\overline{x}^Tp_j)^2\\&=\frac{1}{n} \sum_{i=1}^n\sum_{j=d+1}^m((x_i-\overline{x})^Tp_j)((x_i-\overline{x})^Tp_j)\\&=\frac{1}{n} \sum_{j=d+1}^m\sum_{i=1}^np_j^T(x_i-\overline{x})(x_i-\overline{x})^Tp_j\\&= \sum_{j=d+1}^mp_j^T (\frac{1}{n}\sum_{i=1}^n (x_i-\overline{x})(x_i-\overline{x})^T)p_j\\&=\sum_{j=d+1}^m p_j^TC_Xp_j\end{aligned}

  现在就只剩下最后一个任务,合理选取 p1,p2,,pmp_1,p_2,\cdots,p_m,使得 J\small J 最小且 piTpj=δijp_i^Tp_j=\delta_{ij}.

  先令 d=m1d=m-1,利用与第一部分同样的方法,即根据 CX\small C_X 正交相似与对角形,求得 pmp_m 为最小特征值 λm\lambda_m 的单位特征向量,此时 J\small J 的最小值为 λm\lambda_m.
  而后,令 d=m2,m3,,1d=m-2,m-3,\cdots,1,可得:

  pip_i 为特征值 λi\lambda_i 的单位特征向量,i=1,2,,mi=1,2,\cdots,mJJ 的最小值为 Jmin=j=d+1mλjJ_{min}=\sum_{j=d+1}^m \lambda_j
参考文献:
[1] Shlens J. A tutorial on principal component analysis. arXiv preprint arXiv: 14016.1100, 2014.
[2] Christopher M. Bishop. Pattern Recognition and
Machine Learning [M]. Singapore:Springer, 2006.
[3] 周长宇. A Tutorial on Principal Component Analysis(). https://blog.csdn.net/zhouchangyu1221/article/details/103949967, 2020-01-22.
[4] 范金城,梅长林.数据分析[M].第二版.北京:科学出版社, 2018.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!