十分钟搞懂主成分分析PCA

文章目录

  • 几个疑问
  • 基本思路
  • 计算PCA的步骤
  • 与SVD的关系

几个疑问

  • PCA是干什么的?

首先有一组数据蓝色点,PCA所谓的降维操作就是找到一个新的坐标系(旋转的两条直线式垂直的,我们可以用一组标准正交基来指示),然后减掉其中一些维度,使误差足够小。
十分钟搞懂主成分分析PCA_第1张图片

  • PCA与协方差矩阵的关系
  • PCA与SVD的关系

基本思路

假设我们有一个数据 X n ∗ m X_{n*m} Xnm,其中n代表了特征的个数,m代表了样本数。首先对 X X X的特征进行零均值化。
协方差矩阵 C n ∗ n = X X T C_{n*n} = XX^T Cnn=XXT(这里应该除以m,不妨碍推导),C的对角线代表了特征自身的方差,而其他位置比如 C i , j C_{i,j} Ci,j代表了特征 i i i和特征 j j j之间的协方差。

我们想要对原来的数据X做一个行变换 A n ∗ n A_{n*n} Ann,把原来的特征组合成新的特征,而新的特征之间没有关联,也就是新的矩阵 Y n ∗ m Y_{n*m} Ynm的协方差矩阵里只有对角线元素,其他位置都是0.

Want: Y Y T = Λ YY^T=\Lambda YYT=Λ Λ \Lambda Λ是一个对角阵
带入 Y = A X Y=AX Y=AX得到 ( A X ) ( A X ) T = Λ (AX)(AX)^T=\Lambda (AX)(AX)T=Λ,展开得到 A X X T A T = Λ AXX^TA^T=\Lambda AXXTAT=Λ,同志们这不就是对 X X T XX^T XXT进行对角化吗?因为 X X T XX^T XXT是实对称矩阵,一定可以对角化 X X T = Q Λ Q T XX^T=Q{\Lambda}Q^T XXT=QΛQT,原式中的 A A A就是对角化后的特征向量矩阵 Q T Q^T QT

其中特征值 Λ \Lambda Λ大小代表了 Y Y Y里面特征的方差大小,特征值越大,特征的方差越大,信息量越多。我们挑选主成分的话,只要挑选前面比较大的特征值对应的特征就可以了。

计算PCA的步骤

总结一下PCA的步骤:

  1. 将原始数据按列组成n行m列矩阵X
  2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
  3. 求出协方差矩阵 C = 1 / m ∗ X X T C=1/m * XX^T C=1/mXXT
  4. 求出协方差矩阵的特征值 Λ \Lambda Λ及对应的特征向量 Q Q Q
  5. 将特征向量按对应特征值大小从左到右按列排列成矩阵,取前k行组成矩阵 Q Q Q
  6. Y = Q T X Y=Q^TX Y=QTX即为降维到k维后的数据

与SVD的关系

以上就是先求协方差矩阵然后特征值分解的方法,那么可以不求协方差矩阵吗?可以,直接用SVD。
SVD可以分解任意矩阵: X = U Σ V T X = U \Sigma V ^ T X=UΣVT
上面通过 X X T XX^T XXT特征值分解其实得到的就是这里的 U U U矩阵,通过成熟的SVD方法很容易求得这些矩阵。

参考:
Machine Learning — Singular Value Decomposition (SVD) & Principal Component Analysis (PCA)
从PCA和SVD的关系拾遗
PCA的数学原理

你可能感兴趣的:(数学基础,PCA,SVD,协方差矩阵)