主成分分析是一种“降维”的方式,将高维空间中的信息嵌入到低维空间的同时,尽可能保留原始样本中的信息。这样做的好处,主要是降低问题研究的复杂性,因为维数过高不论是在空间存储上,还是在运算时间上,都是一种浪费。如果能够将部分不重要的分量加以组合,形成一个更有用的分量,自然能降低运算的负担。
这样的降维有两个主要目标:一是尽可能地压缩样本空间的维数,二是尽可能多地保留样本的信息。主成分分析的方法,是用总体不同维度的线性组合,构成新的变量(变量组),从而用这个低维的变量(变量组)来代替原来的样本。而线性组合总可以用一个权重向量来表示。
比如说,总体是 X = ( X 1 , ⋯ , X p ) ′ X=(X_1,\cdots,X_p)' X=(X1,⋯,Xp)′,就引入一个向量 w = ( w 1 , ⋯ , w p ) ′ w=(w_1,\cdots,w_p)' w=(w1,⋯,wp)′用来表达一个线性组合 w ′ X w'X w′X。因为这个向量具有“权重”性,我们施以约束 w ′ w = 1 w'w=1 w′w=1,这样就可以用这个向量代表线性组合中各个分量的重要性。信息的保留程度用方差来刻画,如果一个线性组合的方差越大,就说明保留的信息越完整。因此,如果 D ( X ) = Σ {\rm D}(X)=\Sigma D(X)=Σ,寻找主成分就变成如下的规划问题:
max z = w ′ Σ w , s . t . w ′ w = 1. \max z=w'\Sigma w,\quad {\rm s.t.}w'w=1. maxz=w′Σw,s.t.w′w=1.
用Lagrange乘数法很容易求出合适的 w w w,也就是
L = w ′ Σ w − λ ( w ′ w − 1 ) , L=w'\Sigma w-\lambda (w'w-1), L=w′Σw−λ(w′w−1),
求偏导得到
∂ L ∂ w = 2 ( Σ − λ I ) w = 0 , ∂ L ∂ λ = w ′ w − 1 = 0. \frac{\partial L}{\partial w}=2(\Sigma -\lambda I)w=0,\\ \frac{\partial L}{\partial \lambda}=w'w-1=0. ∂w∂L=2(Σ−λI)w=0,∂λ∂L=w′w−1=0.
这说明 w w w就是 Σ \Sigma Σ的某个特征向量,为了确定具体是哪一个特征向量,要从其方差入手,注意到
w Σ w ′ = w ′ λ w = λ , w\Sigma w'=w'\lambda w=\lambda, wΣw′=w′λw=λ,
所以要使 w Σ w ′ w\Sigma w' wΣw′最大实际是要让 λ \lambda λ最大,因此, w w w是最大特征值对应的特征向量。
如果一个线性组合,即使它是最好的,也压缩了过多的信息,我们自然会想着用多个线性组合作补充。为了避免信息的冗余,我们会限制两个线性组合之间不相关,也就是 C o v ( w 1 X , w 2 X ) = w 1 ′ Σ w 2 = 0 {\rm Cov}(w_1X,w_2X)=w_1'\Sigma w_2=0 Cov(w1X,w2X)=w1′Σw2=0,在此要求下,结合 w 2 ′ w 2 = 1 w_2'w_2=1 w2′w2=1的限制,寻找使得 D ( w 2 X ) {\rm D}(w_2X) D(w2X)最大的向量 w 2 w_2 w2。
结合刚才Lagrange乘子法的表现,我们已经知道了,向量 w w w必定是 Σ \Sigma Σ的特征向量(即使施加了不相关约束,原有的步骤也是不变的),且对应的特征值就是线性组合的方差。结合不同特征值对应的特征向量线性无关的特点,自然会想到次大的特征值对应的特征向量,或者同样是对应特征值最大但与 w 1 w_1 w1线性无关的特征向量。我们将寻找主成分的步骤归结如下:
主成分:设 X = ( X 1 , ⋯ , X p ) ′ X=(X_1,\cdots,X_p)' X=(X1,⋯,Xp)′为 p p p维随机向量,称 Z i = a i ′ X Z_i=a_i'X Zi=ai′X为 X X X的第 i i i主成分 ( i = 1 , ⋯ , p ) (i=1,\cdots,p) (i=1,⋯,p),如果:
- a i ′ a i = 1 a_i'a_i=1 ai′ai=1(权重性约束);
- 当 i > 1 i>1 i>1时, a i ′ Σ a j = 0 ( j = 1 , ⋯ , i − 1 ) a_i'\Sigma a_j=0(j=1,\cdots,i-1) ai′Σaj=0(j=1,⋯,i−1)(不相关性约束);
- D ( Z i ) = max a ′ a = 1 , a ′ Σ a j = 0 D ( a ′ X ) {\rm D}(Z_i)=\max\limits_{a'a=1,a'\Sigma a_j=0} {\rm D}(a'X) D(Zi)=a′a=1,a′Σaj=0maxD(a′X)(最大方差约束)。
寻找主成分:设 X = ( X 1 , ⋯ , X p ) ′ X=(X_1,\cdots,X_p)' X=(X1,⋯,Xp)′是 p p p维随机向量, Σ \Sigma Σ是其协方差阵,且其特征值为 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p = 0 \lambda_1\ge \lambda_2\ge \cdots\ge\lambda_p=0 λ1≥λ2≥⋯≥λp=0,相应的单位正交向量是 a 1 , a 2 , ⋯ , a p a_1,a_2,\cdots,a_p a1,a2,⋯,ap,则 X X X的第 i i i主成分为
Z i = a i ′ X ( i = 1 , ⋯ , p ) . Z_i=a_i'X(i=1,\cdots,p). Zi=ai′X(i=1,⋯,p).
主成分矩阵:设 Z = ( Z 1 , ⋯ , Z p ) ′ Z=(Z_1,\cdots,Z_p)' Z=(Z1,⋯,Zp)′是 p p p维随机向量,则其分量 Z i Z_i Zi是 X X X的第 i i i主成分的充要条件是:
- Z = A ′ X Z=A'X Z=A′X,这里 A A A为正交矩阵,这表明 Z i Z_i Zi是 X X X的正交线性组合,且两两不相关。
- D ( Z ) = d i a g ( λ 1 , ⋯ , λ n ) {\rm D}(Z)={\rm diag}(\lambda_1,\cdots,\lambda_n) D(Z)=diag(λ1,⋯,λn),即协方差阵是对角阵,这说明 Z i Z_i Zi两两不相关。
- λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n \lambda_1\ge \lambda_2\ge \cdots\ge\lambda_n λ1≥λ2≥⋯≥λn。
现在,我们已经知道给定总体如何求出其主成分了,主成分是对总体的正交变换,也恰好是总体自协方差矩阵的线性无关特征向量,因此,具有以下的性质。
主成分的协方差: D ( Z ) = Λ {\rm D}(Z)=\Lambda D(Z)=Λ,即 p p p个主成分的方差为 D Z i = λ i {\rm D}Z_i=\lambda_i DZi=λi,且互不相关。
既然主成分是一种信息压缩的表征,那么如何衡量主成分压缩过程中信息的保留程度就是值得注意的。因为主成分的方差就是特征值,因此我们会从特征值出发,定义信息的保留程度。假设原总体的自协方差矩阵为 Σ = ( σ i j ) p × p \Sigma=(\sigma_{ij})_{p\times p} Σ=(σij)p×p,则 Σ \Sigma Σ的主对角线之和代表原总体的总方差,就视为原总体蕴含的信息量。
总方差:定义 ∑ i = 1 p λ i = ∑ i = 1 p σ i i \sum_{i=1}^p\lambda_i=\sum_{i=1}^p\sigma_{ii} ∑i=1pλi=∑i=1pσii为原总体 X X X的总方差,或总惯量。
在主成分分解下,可以用前 m m m个特征值来近似逼近原总体的总方差,即 ∑ i = 1 m λ i ≈ ∑ i = 1 p σ i i \sum_{i=1}^m\lambda_i\approx\sum_{i=1}^p\sigma_{ii} ∑i=1mλi≈∑i=1pσii,这也就达到了降维的同时充分保留信息的目的。一般我们会要求信息保留超过70%,也就是选择 m m m使得
∑ i = 1 m λ i ≥ 0.7 ∑ i = 1 p λ i . \sum_{i=1}^m\lambda_i\ge0.7\sum_{i=1}^p\lambda_i. i=1∑mλi≥0.7i=1∑pλi.
这一概念可以用贡献率来描述。
贡献率:称主成分 Z k Z_k Zk的贡献率为 λ k ∑ i = 1 p λ k \frac{\lambda_k}{\sum_{i=1}^p \lambda_k} ∑i=1pλkλk,主成分 Z 1 , ⋯ , Z m Z_1,\cdots,Z_m Z1,⋯,Zm的累计贡献率为
∑ k = 1 m λ k ∑ i = 1 p λ i . ( m < p ) \frac{\sum_{k=1}^m\lambda_k}{\sum_{i=1}^p\lambda_i}.(m∑i=1pλi∑k=1mλk.(m<p)
贡献率描述的是主成分对整体的贡献,接下来的定义则注重于总体的某一个维度。
因子载荷:定义主成分 Z k Z_k Zk与原始变量 X i X_i Xi的相关系数 ρ ( Z k , X i ) \rho(Z_k,X_i) ρ(Zk,Xi)为因子载荷量,也就是
ρ ( Z k , X i ) = λ k a i k σ i i . \rho(Z_k,X_i)=\frac{\sqrt{\lambda_k}a_{ik}}{\sqrt{\sigma_{ii}}}. ρ(Zk,Xi)=σiiλkaik.
因子载荷的性质:
∑ k = 1 p ρ 2 ( Z k , X i ) = 1 , ∑ i = 1 p σ i i ρ 2 ( Z k , X i ) = λ k . \sum_{k=1}^p\rho^2(Z_k,X_i)=1,\\ \sum_{i=1}^p\sigma_{ii}\rho^2(Z_k,X_i)=\lambda_k. k=1∑pρ2(Zk,Xi)=1,i=1∑pσiiρ2(Zk,Xi)=λk.
有了因子载荷,结合其关于某一维度的平方为1的特点,可以定义主成分对原始变量的贡献率,这表示每个变量被提取信息的多少。
主成分对原始变量 X i X_i Xi的贡献率:定义为 X i X_i Xi与前 m m m个主成分 Z 1 , ⋯ , Z m Z_1,\cdots,Z_m Z1,⋯,Zm的相关系数的平方,即
ν i ( m ) = ∑ k = 1 m λ k a i k 2 σ i i . \nu_i^{(m)}=\sum_{k=1}^m\frac{\lambda_ka_{ik}^2}{\sigma_{ii}}. νi(m)=k=1∑mσiiλkaik2.
在实际生活中,总体的协方差矩阵往往未知,需要通过样本来估计。总体的协方差矩阵可以用样本协方差阵来估计,设数据阵为 X n × p X_{n\times p} Xn×p,样本数为 n n n,则样本协方差阵为
S = 1 n − 1 A = 1 n − 1 X ′ X = 1 n − 1 ∑ t = 1 n ( X ( t ) − X ˉ ) ( X ( t ) − X ˉ ) ′ = d e f ( s i j ) p × p . S=\frac{1}{n-1}A=\frac1{n-1}X'X=\frac 1{n-1}\sum_{t=1}^n(X_{(t)}-\bar X)(X_{(t)}-\bar X)'\stackrel {\rm def}=(s_{ij})_{p\times p}. S=n−11A=n−11X′X=n−11t=1∑n(X(t)−Xˉ)(X(t)−Xˉ)′=def(sij)p×p.
将 S S S作为 Σ \Sigma Σ的估计后,就可以求 S S S的特征值 λ 1 , ⋯ , λ p \lambda_1,\cdots,\lambda_p λ1,⋯,λp与特征向量 a 1 , ⋯ , a p a_1,\cdots,a_p a1,⋯,ap,也就是 p p p个主成分 Z 1 , ⋯ , Z p Z_1,\cdots,Z_p Z1,⋯,Zp。每一个主成分对每个样本的发挥不同,把第 t t t个样品 X ( t ) X_{(t)} X(t)代入第 k k k个主成分 Z k Z_k Zk,得到的值为 z t k z_{tk} ztk称为第 t t t个样品在第 i i i个主成分的得分,构成矩阵 Z = ( z i j ) n × p Z=(z_{ij})_{n\times p} Z=(zij)n×p,它与数据矩阵是同规模的,这里第 t t t行是第 t t t个样品在 p p p个主成分的得分(记作 Z ( t ) Z_{(t)} Z(t)),第 k k k列是第 k k k主成分对 n n n个样品的得分(记作 Z k \mathsf Z_k Zk)。
样本主成分也具有贡献率、累计贡献率,并且有以下的性质:
正交性: Z ˉ = 1 n ∑ t = 1 n Z ( t ) = 0 \bar Z=\frac 1n\sum_{t=1}^nZ_{(t)}=0 Zˉ=n1∑t=1nZ(t)=0,且当 i ≠ j i\ne j i=j时 Z i ′ Z j = 0 \mathsf Z_i'\mathsf Z_j=0 Zi′Zj=0,也就是不同主成分得分向量相互正交。
得分向量的模: Z i ′ Z i = ( n − 1 ) λ i \mathsf Z_i'\mathsf Z_i=(n-1)\lambda_i Zi′Zi=(n−1)λi,这里 λ i \lambda_i λi是样本协方差阵的第 i i i特征值。
不仅如此,样本主成分还能最小化残差平方和,这里的残差平方和指的是选取 m m m个主成分作回归:
X p × 1 = B p × m Z m × 1 + ε p × 1 , X_{p\times 1}=B_{p\times m}Z_{m\times 1}+\varepsilon_{p\times 1}, Xp×1=Bp×mZm×1+εp×1,
找一个 B p × m = ( b i j ) p × m B_{p\times m}=(b_{ij})_{p\times m} Bp×m=(bij)p×m使得残差平方和 ε 1 × p ′ ε p × 1 = Q ( B ) \varepsilon_{1\times p}'\varepsilon_{p\times 1}=Q(B) ε1×p′εp×1=Q(B)最小,而这里每一个维度,都有 n n n个观测值作为样本。
最优分解:样本主成分具有使残差平方和最小的优越性。
主成分分析的目的是,用少数几个指标值代替高维样本空间,在降维的同时尽可能保留信息,一般希望保留的信息达到70%以上。
总体的主成分,就是自协方差矩阵 Σ \Sigma Σ的按大小排列特征值的对应特征向量,记每个主成分的贡献为
λ k ∑ i = 1 p λ i . \frac{\lambda_k}{\sum_{i=1}^p\lambda_i}. ∑i=1pλiλk.
前 m m m个主成分的累计贡献率就是各自贡献率的加总。
定义第 k k k个主成分与第 i i i个维度变量的相关系数为因子载荷 ρ ( Z k , X i ) \rho(Z_k,X_i) ρ(Zk,Xi),有 ∑ k = 1 p ρ 2 ( Z k , X i ) \sum_{k=1}^p\rho^2(Z_k,X_i) ∑k=1pρ2(Zk,Xi)。用因子载荷衡量主成分对某个变量的贡献率,即
∑ k = 1 m ρ 2 ( Z k , X i ) . \sum_{k=1}^m\rho^2(Z_k,X_i). k=1∑mρ2(Zk,Xi).
用样本协方差阵替代总体协方差阵计算特征值和特征向量,能得到样本主成分,且样本主成分具有使残差平方和最小的特性。