在主成分分析系列(一)概览及数据为何要中心化这篇文章中介绍了PCA算法的大概想法及数据为何要中心化,在这篇文章具体推导PCA算法的过程。
1. 首先 PCA 最原始的想法是:
-  设 V \mathbf{V} V 为 d {d} d 维 线性空间(即 R d \mathbb{R}^d Rd), W \mathbf{W} W 为 V \mathbf{V} V 的 k k k 维线性子空间( k < d k<d k<d)。在 W \mathbf{W} W 中找到数据 D = { x 1 , x 2 , … x n } \mathbf{D}=\{ \mathbf{x_1},\mathbf{x_2},\dots \mathbf{x_n} \} D={x1,x2,…xn} 最准确的表达。 x i ∈ R d , i = 1 , … , n \mathbf{x_i} \in \mathbb{R}^d, i = 1,\dots,n xi∈Rd,i=1,…,n 
-  一组 d d d 维向量 { e 1 , e 2 , … , e k } \{\mathbf {e_1,e_2,…,e_k}\} {e1,e2,…,ek},它形成 W \mathbf {W} W的一组正交基 。在 W \mathbf{W} W空间中的任何向量都可以被表示为 ∑ i = 1 k α i e i \sum_{i=1}^{k}\alpha_i \mathbf{e}_{i} ∑i=1kαiei 
-  那么向量 x 1 \mathbf{x_1} x1可以被表示为 
 ∑ i = 1 k α 1 i e i \sum_{i=1}^{k}\alpha_{1i} \mathbf{e}_{i} i=1∑kα1iei
-  针对向量 x 1 \mathbf{x_1} x1,误差为 
 e r r o r = ∥ x 1 − ∑ i = 1 k α 1 i e i ∥ 2 \mathbf{error} = \Vert \mathbf{x_1}-\sum_{i=1}^{k}\alpha_{1i} \mathbf{e}_{i} \Vert^2 error=∥x1−i=1∑kα1iei∥2
  
 所以,接下来,我们要把所有的 e r r o r \mathbf{error} error 加和,每个 x j \mathbf{x_j} xj 可以表示为
 x j = ∑ i = 1 k α j i e i \mathbf{x_j}=\sum_{i=1}^{k}\alpha_{ji} \mathbf{e}_{i} xj=i=1∑kαjiei
那么所有的误差是:
 
 为了求得  
     
      
       
       
         J 
        
       
      
        \mathbf{J} 
       
      
    J 的最小值,我们需要求相关的偏导数,也需要限制 
     
      
       
       
         { 
        
        
         
         
           e 
          
         
           1 
          
         
        
          , 
         
         
         
           e 
          
         
           2 
          
         
        
          , 
         
        
          … 
         
        
          , 
         
         
         
           e 
          
         
           k 
          
         
        
       
         } 
        
       
      
        \{\mathbf {e_1,e_2,…,e_k}\} 
       
      
    {e1,e2,…,ek}是正交向量。
2. 让我们先化简 J \mathbf{J} J的表达:

 注意,下面 
     
      
       
        
         
         
           x 
          
         
           j 
          
         
        
          t 
         
        
       
      
        \mathbf{x_j}^t 
       
      
    xjt 右上角的 t 表示向量的转置。

3. 求偏导
对  
     
      
       
        
        
          α 
         
         
         
           ∗ 
          
         
           ∗ 
          
         
        
       
      
        \alpha_{**} 
       
      
    α∗∗ 求偏导,  
     
      
       
        
        
          α 
         
         
         
           ∗ 
          
         
           ∗ 
          
         
        
       
      
        \alpha_{**} 
       
      
    α∗∗的下标取  
     
      
       
       
         m 
        
       
         l 
        
       
      
        ml 
       
      
    ml,即  
     
      
       
        
        
          α 
         
         
         
           m 
          
         
           l 
          
         
        
       
      
        \alpha_{ml} 
       
      
    αml
 
因此,针对 
     
      
       
        
        
          α 
         
         
         
           m 
          
         
           l 
          
         
        
       
      
        \alpha_{ml} 
       
      
    αml 的最优点是
 
将  
     
      
       
        
        
          α 
         
         
         
           m 
          
         
           l 
          
         
        
       
         = 
        
        
         
         
           x 
          
         
           m 
          
         
        
          t 
         
        
        
        
          e 
         
        
          l 
         
        
       
      
        \alpha_{ml}=\mathbf{x_m}^t\mathbf{e_l} 
       
      
    αml=xmtel回代  
     
      
       
       
         J 
        
       
      
        \mathbf{J} 
       
      
    J的表达式
 得到
 
得到
 
将  
     
      
       
       
         J 
        
       
      
        \mathbf{J} 
       
      
    J 表达式的后半部分 重写成下面的形式
  
      
       
        
        
          ( 
         
         
         
           a 
          
         
           t 
          
         
        
          b 
         
         
         
           ) 
          
         
           2 
          
         
        
          = 
         
        
          ( 
         
         
         
           a 
          
         
           t 
          
         
        
          b 
         
        
          ) 
         
        
          ( 
         
         
         
           a 
          
         
           t 
          
         
        
          b 
         
        
          ) 
         
        
          = 
         
        
          ( 
         
         
         
           b 
          
         
           t 
          
         
        
          a 
         
        
          ) 
         
        
          ( 
         
         
         
           a 
          
         
           t 
          
         
        
          b 
         
        
          ) 
         
        
          = 
         
         
         
           b 
          
         
           t 
          
         
        
          ( 
         
        
          a 
         
         
         
           a 
          
         
           t 
          
         
        
          ) 
         
        
          b 
         
        
       
         (\mathbf{a}^{t}\mathbf{b})^{2}=(\mathbf{a}^{t}\mathbf{b})(\mathbf{a}^{t}\mathbf{b})=(\mathbf{b}^{t}\mathbf{a})(\mathbf{a}^{t}\mathbf{b})=\mathbf{b}^{t}(\mathbf{a}\mathbf{a}^{t})\mathbf{b} 
        
       
     (atb)2=(atb)(atb)=(bta)(atb)=bt(aat)b

 其中,  
     
      
       
       
         S 
        
       
      
        \mathbf{S} 
       
      
    S 等于
  
      
       
        
        
          S 
         
        
          = 
         
         
         
           ∑ 
          
          
          
            j 
           
          
            = 
           
          
            1 
           
          
         
           n 
          
         
         
         
           x 
          
         
           j 
          
         
         
         
           x 
          
         
           j 
          
         
           t 
          
         
        
       
         \mathbf{S}=\sum_{j=1}^{n}\mathbf{x}_j\mathbf{x}_j^t 
        
       
     S=j=1∑nxjxjt
  
     
      
       
       
         S 
        
       
      
        \mathbf{S} 
       
      
    S 被称为 scatter 矩阵,它只不过是 
     
      
       
       
         n 
        
       
         − 
        
       
         1 
        
       
      
        n-1 
       
      
    n−1乘上样本协方差矩阵  
     
      
       
        
        
          Σ 
         
        
          ^ 
         
        
       
      
        \hat{\Sigma} 
       
      
    Σ^:
 
 此时,
 
 那么最小化  
     
      
       
       
         J 
        
       
      
        \mathbf{J} 
       
      
    J 等价于最大化
 
4. 拉格朗日乘子法
同时,因为前文假设 
     
      
       
        
        
          e 
         
        
          i 
         
        
       
      
        \mathbf{e_i} 
       
      
    ei是正交单位向量, 也要限制所有
  
      
       
        
         
         
           e 
          
         
           i 
          
         
           t 
          
         
         
         
           e 
          
         
           i 
          
         
        
          = 
         
        
          1 
         
        
          , 
         
         
        
          i 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          … 
         
        
          , 
         
        
          n 
         
        
       
         \mathbf{e}_{i}^t\mathbf{e}_{i} =1 ,\quad i=1,\dots,n 
        
       
     eitei=1,i=1,…,n
 使用拉格朗日乘子法,对所有的限制使用相应的  
     
      
       
        
        
          λ 
         
        
          1 
         
        
       
         , 
        
       
         … 
        
       
         , 
        
        
        
          λ 
         
        
          k 
         
        
       
      
        \lambda_1,\dots,\lambda_k 
       
      
    λ1,…,λk
 现在,我们需要最小化新的优化函数
 
 求关于  
     
      
       
        
        
          e 
         
        
          m 
         
        
       
      
        \mathbf{e}_m 
       
      
    em的所有的偏导数:
 
 所以, 
     
      
       
        
        
          λ 
         
        
          m 
         
        
       
      
        \lambda_m 
       
      
    λm 跟  
     
      
       
        
        
          e 
         
        
          m 
         
        
       
      
        \mathbf{e}_m 
       
      
    em 分别是 scatter矩阵  
     
      
       
       
         S 
        
       
      
        \mathbf{S} 
       
      
    S的特征值与特征向量。
 
将  
     
      
       
        
        
          e 
         
        
          m 
         
        
       
      
        \mathbf{e}_m 
       
      
    em 回代下式
 
 而且使用推导结论:  
     
      
       
       
         S 
        
        
        
          e 
         
        
          m 
         
        
       
         = 
        
        
        
          λ 
         
        
          m 
         
        
        
        
          e 
         
        
          m 
         
        
       
      
        \mathbf{S}\mathbf{e}_m=\lambda_m\mathbf{e}_m 
       
      
    Sem=λmem
 可以得到
 
 因此,为了最小化  
     
      
       
       
         J 
        
       
      
        \mathbf{J} 
       
      
    J,将  
     
      
       
       
         S 
        
       
      
        \mathbf{S} 
       
      
    S的  
     
      
       
       
         k 
        
       
      
        k 
       
      
    k 个特征向量对应于  
     
      
       
       
         k 
        
       
      
        k 
       
      
    k 个最大特征值作为  
     
      
       
       
         W 
        
       
      
        \mathbf{W} 
       
      
    W 的基底。
- S \mathbf{S} S的特征值越大,对应特征向量方向的方差越大。注意,这个结论还没证明,在下面一篇文章给出证明,先假设这个结论是正确的。
直观地,从在主成分分析系列(一)概览及数据为何要中心化这篇文章中例子来看,
 
 这个结果正是我们所期望的:将  
     
      
       
       
         x 
        
       
      
        \mathbf{x} 
       
      
    x 投影到方差最大的  
     
      
       
       
         k 
        
       
      
        k 
       
      
    k 维子空间中
 这是非常直观的:将注意力限制在分散最大的方向上。
因此,PCA 可以被认为是通过旋转旧轴(因为轴需要满足过原点,相互正交地限制)来寻找新的正交基,直到找到最大方差的方向。
 
5.PCA用作数据逼近
令  
     
      
       
       
         { 
        
        
         
         
           e 
          
         
           1 
          
         
        
          , 
         
         
         
           e 
          
         
           2 
          
         
        
          , 
         
        
          … 
         
        
          , 
         
         
         
           e 
          
         
           d 
          
         
        
       
         } 
        
       
      
        \{\mathbf {e_1,e_2,…,e_d}\} 
       
      
    {e1,e2,…,ed}是 scatter 矩阵  
     
      
       
       
         S 
        
       
      
        \mathbf{S} 
       
      
    S 的所有特征向量,并且是按照它们对应的特征值大小降序排列的。那么
 不需要任何近似,任何的样本  
     
      
       
        
        
          x 
         
        
          i 
         
        
       
      
        \mathbf{x_i} 
       
      
    xi都能写成
 
 系数  
      
       
        
         
         
           α 
          
         
           m 
          
         
        
          = 
         
         
         
           x 
          
         
           i 
          
         
           t 
          
         
         
         
           e 
          
         
           m 
          
         
        
       
         \alpha_m=\mathbf{x}_i^{t}\mathbf{e}_m 
        
       
     αm=xitem被称作主成分(principle component )
- k k k 越大,近似越好
- 成分是按照重要性排序的,越重要的越放在前面。
 因此 PCA 将 x i \mathbf{x}_i xi 的前 ¥k$ 个最重要的分量作为 x i \mathbf{x}_i xi的近似值
6.最后一步
现在我们已经知道如何投影数据,最后一步是改变坐标以获得最终的  
     
      
       
       
         k 
        
       
      
        k 
       
      
    k维向量 
     
      
       
       
         y 
        
       
      
        \mathbf{y} 
       
      
    y
 
 令矩阵
 
 则坐标变换是
 
 在  
     
      
       
        
        
          E 
         
        
          t 
         
        
       
      
        \mathbf{E}_t 
       
      
    Et 下,特征向量成为标准基:

7. PCA算法的流程

8. PCA算法的例子

 
9. PCA 算法的缺点
- PCA 旨在准确表示数据,而不是数据分类。
- 然而,最大方差的方向对于分类可能是无用的
  
参考文献
Introduction to Statistical Machine Learning
 Lecture 2
 Anders Eriksson
 School of Computer Science
 University of Adelaide, Australia



















