个人学习笔记(十七)主成分分析

       一直都抽不出时间写第十七篇读书笔记,直到前两天去面PDD被问到主成分分析的推导,完全想不起来的同时也决定回来把PCA这个坑给填上,顺便加深一下记忆。主成分分析(principal component analysis, PCA)利用正交变换把由线性相关变量表示的观测数据转换为少数几个由线性无关变量表示的数据,这些线性无关的变量被称为主成分。

一、总体主成分分析

       主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1,再对数据进行正交变换,把原来线性相关变量表示的数据,变成若干个线性无关的新变量表示的数据。这里认为新变量的方差表示新变量上信息的大小,因此为了尽量保存更多的信息,新变量选择所有可能的正交变换中变量的方差最大的若干个。
       设 x = ( x 1 , x 2 , ⋯   , x m ) T x=(x_1,x_2,\cdots,x_m)^T x=(x1,x2,,xm)T m m m维随机变量,其均值向量是 μ \mu μ,即
μ = E ( x ) = ( μ 1 , μ 2 , ⋯   , μ m ) \mu=E(x)=(\mu_1,\mu_2,\cdots,\mu_m) μ=E(x)=(μ1,μ2,,μm)       注意,上面的 x i x_i xi是随机变量,可以想象成 x i x_i xi是个列向量,它在不同的样本中有不同的取值,而 μ i \mu_i μi是一个值,可以想象成 x i x_i xi在所有样本中的平均值。接着计算 x x x的协方差矩阵 Σ \Sigma Σ
Σ = c o v ( x , x ) = E [ ( x − E ( x ) ) ( x − E ( x ) ) T ] = E [ ( x − μ ) ( x − μ ) T ] \Sigma=cov(x,x)=E[(x-E(x))(x-E(x))^T]=E[(x-\mu)(x-\mu)^T] Σ=cov(x,x)=E[(xE(x))(xE(x))T]=E[(xμ)(xμ)T]       接着我们来考虑对 m m m维随机变量 x x x进行多个线性变换,第 i i i y i y_i yi线性变换就可以表示为
y i = α i T x = α 1 i x 1 + α 2 i x 2 + ⋯ + α m i x m y_i=\alpha_i^Tx=\alpha_{1i}x_1+\alpha_{2i}x_2+\cdots+\alpha_{mi}x_m yi=αiTx=α1ix1+α2ix2++αmixm       如果我们有 m m m个线性变换,就可以得到由 x x x变换而来的新的 m m m维随机变量 y = ( y 1 , y 2 , ⋯   , y m ) T y=(y_1,y_2,\cdots,y_m)^T y=(y1,y2,,ym)T。我们对新的 m m m维随机变量进行研究,注意,这里是对单个 y i y_i yi随机变量进行探讨,所以下面的 E ( y i ) , v a r ( y i ) , c o v ( y i , y j ) E(y_i),var(y_i),cov(y_i,y_j) E(yi),var(yi),cov(yi,yj)所指代的都是一个值,而非矩阵或者向量。
       首先来看新随机变量 y i y_i yi的均值 E ( y i ) E(y_i) E(yi)
E ( y i ) = E ( α i T x ) = α i T E ( x ) = α i T μ E(y_i)=E(\alpha_i^Tx)=\alpha_i^TE(x)=\alpha_i^T\mu E(yi)=E(αiTx)=αiTE(x)=αiTμ       再来看 y i y_i yi的方差 v a r ( y i ) var(y_i) var(yi),由于
v a r ( y i ) = E [ ( y i − E ( y i ) ) ( y i − E ( y i ) ) T ] var(y_i)=E[(y_i-E(y_i))(y_i-E(y_i))^T] var(yi)=E[(yiE(yi))(yiE(yi))T]       代入 y i , E ( y i ) y_i,E(y_i) yi,E(yi)的表达式可得
v a r ( y i ) = E [ ( α i T x − α i T μ ) ( α i T x − α i T μ ) T ] = α i T E [ ( x − μ ) ( x − μ ) T ] α i var(y_i)=E[(\alpha_i^Tx-\alpha_i^T\mu)(\alpha_i^Tx-\alpha_i^T\mu)^T]=\alpha_i^TE[(x-\mu)(x-\mu)^T]\alpha_i var(yi)=E[(αiTxαiTμ)(αiTxαiTμ)T]=αiTE[(xμ)(xμ)T]αi       即
v a r ( y i ) = α i T Σ α i var(y_i)=\alpha_i^T\Sigma\alpha_i var(yi)=αiTΣαi       最后来看两个新随机变量 y i , y j y_i,y_j yi,yj的协方差 c o v ( y i , y j ) cov(y_i,y_j) cov(yi,yj)
c o v ( y i , y j ) = E [ ( α i T x − α i T μ ) ( α j T x − α j T μ ) T ] = α i T Σ α j cov(y_i,y_j)=E[(\alpha_i^Tx-\alpha_i^T\mu)(\alpha_j^Tx-\alpha_j^T\mu)^T]=\alpha_i^T\Sigma\alpha_j cov(yi,yj)=E[(αiTxαiTμ)(αjTxαjTμ)T]=αiTΣαj       推导出这一系列公式后,下面给出总体主成分需要满足的三个条件。
       (1) α i \alpha_i αi是单位向量,即 α i T α i = 1 \alpha_i^T\alpha_i=1 αiTαi=1
       (2)变量 y i , y j y_i,y_j yi,yj互不相关,即 c o v ( y i , y j ) = 0 cov(y_i,y_j)=0 cov(yi,yj)=0
       (3)变量 y 1 y_1 y1是所有线性变换中方差最大的, y 2 y_2 y2是所有与 y 1 y_1 y1不相关的线性变换中方差最大的,依次类推。
       因此,设 Σ \Sigma Σ m m m维随机变量 x x x的协方差矩阵,且 Σ \Sigma Σ的特征值分别是 λ 1 ≥ λ 2 ≥ ⋯ ≥ 0 \lambda_1\ge\lambda_2\ge\cdots\ge0 λ1λ20,特征值对应的特征向量分别是 α 1 , α 2 , ⋯   , α m \alpha_1,\alpha_2,\cdots,\alpha_m α1,α2,,αm,则 x x x的第 k k k主成分是
y k = α k T x y_k=\alpha_k^Tx yk=αkTx        x x x的第 k k k主成分的方差是
v a r ( y k ) = α k T Σ α k = λ k ,   k = 1 , 2 , ⋯   , m var(y_k)=\alpha_k^T\Sigma\alpha_k=\lambda_k, k=1,2,\cdots,m var(yk)=αkTΣαk=λk, k=1,2,,m       因此有
Σ α k = λ k α k \Sigma \alpha_k=\lambda_k\alpha_k Σαk=λkαk       用矩阵表示即为
Σ A = A Λ \Sigma A=A\Lambda ΣA=AΛ       这里的 A = [ a i j ] m × m A=[a_{ij}]_{m\times m} A=[aij]m×m Λ \Lambda Λ是对角矩阵,由上式可以得到两个公式
A T Σ A = Λ A^T\Sigma A=\Lambda ATΣA=Λ Σ = A Λ A T \Sigma=A\Lambda A^T Σ=AΛAT       下面叙述总体主成分的性质
       (1)总体主成分 y y y的协方差矩阵是对角矩阵
c o v ( y ) = c o v ( A T x ) = A T c o v ( x ) A = A T Σ A = Λ cov(y)=cov(A^Tx)=A^Tcov(x)A=A^T\Sigma A=\Lambda cov(y)=cov(ATx)=ATcov(x)A=ATΣA=Λ       (2)总体主成分 y y y的方差之和等于随机变量 x x x的方差之和
∑ i = 1 m v a r ( x i ) = ∑ i = 1 m σ i i = t r ( Σ ) = t r ( A Λ A T ) = t r ( Λ ) = ∑ i = 1 m λ i = ∑ i = 1 m v a r ( y i ) \sum_{i=1}^mvar(x_i)=\sum_{i=1}^m\sigma_{ii}=tr(\Sigma)=tr(A\Lambda A^T)=tr(\Lambda)=\sum_{i=1}^m\lambda_i=\sum_{i=1}^mvar(y_i) i=1mvar(xi)=i=1mσii=tr(Σ)=tr(AΛAT)=tr(Λ)=i=1mλi=i=1mvar(yi)       上面 σ i i \sigma_{ii} σii是随机变量 x i x_i xi的方差,即协方差矩阵 Σ \Sigma Σ的对角线元素。
       (3)第 k k k个主成分 y k y_k yk与变量 x i x_i xi的相关系数为
ρ ( y k , x i ) = λ k α i k σ i i \rho(y_k,x_i)=\frac{\sqrt{\lambda_k}\alpha_{ik}}{\sqrt{\sigma_{ii}}} ρ(yk,xi)=σii λk αik       (4)第 k k k个主成分 y k y_k yk m m m个变量的因子负荷量满足
∑ i = 1 m σ i i ρ 2 ( y k , x i ) = λ k \sum_{i=1}^m\sigma_{ii}\rho^2(y_k,x_i)=\lambda_k i=1mσiiρ2(yk,xi)=λk       (5) m m m个主成分与第 i i i个变量 x i x_i xi的因子负荷量满足
∑ k = 1 m ρ 2 ( y k , x i ) = 1 \sum_{k=1}^m\rho^2(y_k,x_i)=1 k=1mρ2(yk,xi)=1       主成分分析的主要目的是降维,所以一般选择 k ( k ≤ m ) k(k\le m) k(km)个主成分来使问题得以简化。具体选择 k k k的方法,通常利用方差贡献率。
       第 k k k主成分 y k y_k yk的方差贡献率定义为 y k y_k yk的方差与所有方差之和的比,记作 η k \eta_k ηk
η k = λ k ∑ i = 1 m λ i \eta_k=\frac{\lambda_k}{\sum_{i=1}^m\lambda_i} ηk=i=1mλiλk       通常取 k k k使得累计方差贡献率达到规定的百分比以上。
       接下来要讨论的是规范化变量的总体主成分分析,设 x x x m m m维随机变量,令
x i ∗ = x i − E ( x i ) v a r ( x i ) ,   i = 1 , 2 , ⋯   , m x_i^*=\frac{x_i-E(x_i)}{\sqrt{var(x_i)}}, i=1,2,\cdots,m xi=var(xi) xiE(xi), i=1,2,,m       显然,规范化随机变量 x ∗ x^* x的协方差矩阵就是相关矩阵 R R R,因此规范化随机变量的总体主成分 y ∗ y^* y有以下性质:
       (1) y ∗ y^* y的协方差矩阵是
Λ ∗ = d i a g ( λ 1 ∗ , λ 2 ∗ , ⋯   , λ m ∗ ) \Lambda^*=diag(\lambda_1^*,\lambda_2^*,\cdots,\lambda_m^*) Λ=diag(λ1,λ2,,λm)       其中 λ 1 ∗ ≥ λ 2 ∗ ≥ ⋯ λ m ∗ ≥ 0 \lambda_1^*\ge\lambda_2^*\ge\cdots\lambda_m^*\ge0 λ1λ2λm0是相关矩阵 R R R的特征值。
       (2) y ∗ y^* y的协方差矩阵的特征值之和为 m m m
∑ k = 1 m λ k ∗ = m \sum_{k=1}^m\lambda_k^*=m k=1mλk=m

二、样本主成分分析

       上面一节讲述的是总体主成分分析,针对的是 x x x这个 m m m维随机变量,但在实际问题中没有随机变量,只有一个变量在 n n n个样本上的观测值,这需要用到样本主成分分析了。
       设观测数据用样本矩阵 X X X表示,记作
X = [ x 1 , x 2 , ⋯   , x n ] X=[x_1,x_2,\cdots,x_n] X=[x1,x2,,xn]       给定样本矩阵后,可以估计样本均值向量 x ˉ \bar x xˉ
x ˉ = 1 n ∑ j = 1 n x j \bar x=\frac{1}{n}\sum_{j=1}^nx_j xˉ=n1j=1nxj       也可以计算任意两个特征向量 i , j i,j i,j的协方差与相关系数
s i j = 1 n − 1 ∑ k = 1 n ( x i k − x ˉ i ) ( x j k − x ˉ j ) s_{ij}=\frac{1}{n-1}\sum_{k=1}^n(x_{ik}-\bar x_i)(x_{jk}-\bar x_j) sij=n11k=1n(xikxˉi)(xjkxˉj) r i j = s i j s i i s j j r_{ij}=\frac{s_{ij}}{\sqrt{s_{ii}s_{jj}}} rij=siisjj sij       进而计算出样本协方差矩阵 S S S与样本相关矩阵 R R R
S = [ s i j ] m × m S=[s_{ij}]_{m\times m} S=[sij]m×m R = [ r i j ] m × m R=[r_{ij}]_{m\times m} R=[rij]m×m       这里的 S S S R R R都是对总体的无偏估计。
       在使用样本主成分时,一般假设样本数据都是规范化的,即
x i j ∗ = x i j − x ˉ i s i i x_{ij}^*=\frac{x_{ij}-\bar x_i}{\sqrt{s_{ii}}} xij=sii xijxˉi       这时样本协方差矩阵 S S S就是样本相关矩阵 R R R
R = 1 n − 1 X X T R=\frac{1}{n-1}XX^T R=n11XXT
       接着叙述主成分分析的求解方法,传统的求解方法是通过数据的相关矩阵特征值分解进行的,具体步骤为:
       (1)对数据矩阵 X X X进行规范化处理,仍以 X X X表示
       (2)计算样本相关矩阵
R = 1 n − 1 X X T R=\frac{1}{n-1}XX^T R=n11XXT       (3)求 R R R k k k个特征值和对应的单位特征向量
       除了传统的特征值分解求法,现在常用的是通过数据矩阵的奇异值分解进行,首先定义一个新的 n × m n\times m n×m矩阵 X ′ X' X
X ′ = 1 n − 1 X T X'=\frac{1}{\sqrt{n-1}}X^T X=n1 1XT       由于
X ′ T X ′ = 1 n − 1 X X T = R X'^TX'=\frac{1}{n-1}XX^T=R XTX=n11XXT=R       因此对 X ′ X' X求截断奇异值分解 X ′ = U Σ V T X'=U\Sigma V^T X=UΣVT后, V V V的列向量就是 R R R的单位特征向量。对 X ′ X' X进行截断奇异值分解,得到
X ′ = U Σ V T X'=U\Sigma V^T X=UΣVT       矩阵 V V V的前 k k k列构成 k k k个样本主成分,最终求得 k × n k\times n k×n样本主成分矩阵
Y = V T X Y=V^TX Y=VTX

你可能感兴趣的:(个人学习笔记)