评论

收藏

[网络数据] PCA原理补充

网络安全 网络安全 发布于:2021-07-01 09:09 | 阅读数:459 | 评论:0

  PCA(Principal Component Analysis)是一种常用的数据分析方法。前面转了一篇关于PCA原理的文章,其中有些部分写的不是很清晰,因此做一个补充。
方差和协方差
  下图是一个正态分布,均值和方差提供了对数据在特征空间的分布进行衡量的手段。如图所示,大部分的数据都分布在                              μ                      ±                      3                      σ                          \mu\pm3\sigma               μ±3σ区间中。
DSC0000.png

  而方差的计算公式如下,
                                                                                   σ                                     (                                     x                                     ,                                     x                                     )                                                                                                             =                                     E                                     [                                     (                                     x                                     −                                     E                                     (                                     x                                     )                                     )                                     (                                     x                                     −                                     E                                     (                                     x                                     )                                     )                                     ]                                                                                                                                                                              =                                     E                                     [                                     (                                     x                                     −                                     E                                     (                                     x                                     )                                                   )                                        2                                                  ]                                                                         \begin{aligned} \sigma(x,x) &=E[(x-E(x))(x-E(x))]\\ &=E[(x-E(x))^2] \end{aligned}                   σ(x,x)​=E[(x−E(x))(x−E(x))]=E[(x−E(x))2]​
  从上式可以看出,方差只能用来表示数据平行于坐标轴(例如                              x                      ,                      y                          x,y               x,y)的数据分布,考虑下图二维的数据分布,
DSC0001.png

  借助上图中的数据,我们可以计算出                              x                          x               x方向的方差                              σ                      (                      x                      ,                      x                      )                          \sigma(x,x)               σ(x,x),以及                              y                          y               y方向的方差                              σ                      (                      y                      ,                      y                      )                          \sigma(y,y)               σ(y,y)。但是数据在                              x                          x               x和                              y                          y               y方向上的分布并没有描述出图中的对角线相关关系,这时候就有了协方差,利用协方差可以描述多维随机变量之间(多维特征空间)的相关关系,协方差的计算公式如下所示,
                                     σ                         (                         x                         ,                         y                         )                         =                         E                         [                         (                         x                         −                         E                         (                         x                         )                         )                         (                         y                         −                         E                         (                         y                         )                         )                         ]                               \sigma(x,y)=E[(x-E(x))(y-E(y))]                   σ(x,y)=E[(x−E(x))(y−E(y))]
  接下来,以二维数据为例,将计算的                              x                          x               x和                              y                          y               y方向方差以及                              x                      ,                      y                          x,y               x,y的协方差,构成一个协方差矩阵,用                              Σ                          \Sigma               Σ表示,如下所示,
                                     Σ                         =                                   (                                                                                             σ                                           (                                           x                                           ,                                           x                                           )                                                                                                                   σ                                           (                                           x                                           ,                                           y                                           )                                                                                                                                       σ                                           (                                           y                                           ,                                           x                                           )                                                                                                                   σ                                           (                                           y                                           ,                                           y                                           )                                                                                        )                                        \Sigma = \begin{pmatrix} \sigma(x,x) & \sigma(x,y)\\ \sigma(y,x) & \sigma(y,y) \end{pmatrix}                   Σ=(σ(x,x)σ(y,x)​σ(x,y)σ(y,y)​)
  其中,                              σ                      (                      x                      ,                      y                      )                      =                      σ                      (                      y                      ,                      x                      )                          \sigma(x,y)=\sigma(y,x)               σ(x,y)=σ(y,x),所以它是一个对称矩阵。对于二维特征空间,协方差矩阵为                              2                      ×                      2                          2\times2               2×2,对于                              N                          N               N维特征空间,协方差矩阵为                              N                      ×                      N                          N\times N               N×N。
  下图展示了数据分布不同,对应的协方差矩阵的不同。
DSC0002.jpg

PCA
  那么如何利用协方差矩阵去提取出数据的主成分?这里以二维为例,即在特征空间中找到某一向量(方向),如果将我们的所有数据投影到这个向量上,能保证数据的范围,即方差最大。
  假如我们已经找到了向量                                       v                         ⃗                                  \vec{v}               v            ,我们的数据矩阵为                              D                          D               D(已经进行了Standardization,均值为0),                              D                          D               D在向量                                       v                         ⃗                                  \vec{v}               v            上的投影为                                                 v                            ⃗                                  T                              D                          \vec{v}^TD               v             TD,投影后的数据的方差计算如下式所示(下面计算中都略去了对样本数的平均项                                       1                         m                                  \frac{1}{m}               m1​),
                                                                                                                v                                           ⃗                                                      T                                                  D                                     (                                                                  v                                           ⃗                                                      T                                                  D                                                   )                                        T                                                                                                                          =                                                                  v                                           ⃗                                                      T                                                  D                                                   D                                        T                                                                v                                        ⃗                                                                                                                                                                                           =                                                                  v                                           ⃗                                                      T                                                  Σ                                                   v                                        ⃗                                                                                      \begin{aligned} \vec{v}^TD(\vec{v}^TD)^T&= \vec{v}^TDD^T\vec{v}\\ &=\vec{v}^T\Sigma\vec{v} \end{aligned}                   v                      TD(v                      TD)T​=v                      TDDTv                     =v                      TΣv                     ​
  上式中比较关键的一步是                                   D                                   D                            T                                  =                         Σ                              DD^T=\Sigma                  DDT=Σ(只有在我们的原始数据每一个维度,即feature,先经过feature scale,变为均值为0,才能得到这个结果)。
  接下来我们的优化目标就是使得上式的方差取得最大值,在这里我们将向量                                       v                         ⃗                                  \vec{v}               v            限定为单位长度,即                                                 v                            ⃗                                  T                                       v                         ⃗                              =                      1                          \vec{v}^T\vec{v}=1               v             Tv            =1。
Rayleigh商
  由于协方差矩阵                              Σ                          \Sigma               Σ是对称阵,则上述问题就转化为如下的Rayleigh商,
                                     R                         (                                   v                            ⃗                                  )                         =                                                                       v                                     ⃗                                              T                                          Σ                                           v                                  ⃗                                                                                     v                                     ⃗                                              T                                                      v                                  ⃗                                                             R(\vec{v})=\frac{\vec{v}^T\Sigma\vec{v}}{\vec{v}^T\vec{v}}                   R(v             )=v                     Tv                    v                     TΣv                    ​
  由于协方差矩阵                              Σ                          \Sigma               Σ是对称阵,所以一定可以对角化进行特征分解。由定理可得,                                   R                         (                                   v                            ⃗                                  )                              R(\vec{v})                  R(v             )的最大值在矩阵                                   Σ                              \Sigma                  Σ对应最大特征值所对应的特征向量处取得。
                                                                                   m                                     a                                     x                                     R                                     (                                                   v                                        ⃗                                                  )                                     =                                                   λ                                                       m                                           a                                           x                                                                                                                                            m                                     i                                     n                                     R                                     (                                                   v                                        ⃗                                                  )                                     =                                                   λ                                                       m                                           i                                           n                                                                                                    \begin{aligned} maxR(\vec{v})=\lambda_{max}\\ minR(\vec{v})=\lambda_{min} \end{aligned}                   maxR(v                     )=λmax​minR(v                     )=λmin​​
  至此,关于为何在PCA时需要对数据的协方差矩阵进行特征分解,然后取得主成分的原理已经介绍完毕。
  下面是不同协方差矩阵时所进行的特征分解,
  协方差为0,
DSC0003.jpg

  协方差不为0,


  
关注下面的标签,发现更多相似文章