主成分分析 PCA
本文目的:证明通过奇异值分解(SVD)找到的变换矩阵 V,可以完美地把原本有相关性的高维数据 X,转换成完全不相关的低维数据 C
起点与目标
- 输入数据: 我们有一个 m×n 的矩阵 X(代表 m 个样本,n 个特征),并且已经去中心化(均值为 0)。
- 原始协方差: 因为均值为 0,数据 X 的协方差矩阵可以表示为 Var[x]=m−11X⊤X。这个矩阵通常不是对角阵,意味着原始特征之间存在线性相关性。
- 目标: 找到一个新的表示 C。我们希望 C 的各个特征之间是完全独立、线性无关的。在数学上,这就等价于要求 C 的协方差矩阵 Var[c] 必须是一个对角矩阵(非对角线元素全为 0 的矩阵)。
引入奇异值分解 (SVD)
为了找到这个变换,引入矩阵的奇异值分解(SVD)。任何一个矩阵 X 都可以被分解为三个矩阵的乘积:
X=UΣV⊤
这三个矩阵各具性质,如下:
- U 和 V 都是正交矩阵。正交矩阵的最重要性质就是:它们自己的转置乘以自己等于单位矩阵 I。所以:U⊤U=I 且 V⊤V=I。
- Σ 是一个对角矩阵(对角线上是奇异值,其余都是 0)。既然是对角阵,那么它的转置等于它本身 Σ⊤=Σ,且它与自己相乘就是对角线元素的平方 Σ2。
计算原始协方差
现在,把 SVD 的公式代入到原始的 X⊤X 中,。根据矩阵转置的规则 (AB)⊤=B⊤A⊤:
X⊤X=(UΣV⊤)⊤(UΣV⊤)
X⊤X=(V⊤⊤Σ⊤U⊤)(UΣV⊤)
X⊤X=VΣ⊤U⊤UΣV⊤
继续:
- 因为 U 是正交阵,所以中间的 U⊤U=I(被消去了)。
- 因为 Σ 是对角阵,所以 Σ⊤=Σ。
公式简化为:
X⊤X=VΣIΣV⊤=VΣ2V⊤
结论:X 的协方差可以表示为 Var[x]=m−11VΣ2V⊤。(这个协方差)
证明 C 的协方差是对角阵 (最后一段)
证明C协方差是对角阵就完成了降维工作
证明:如果用 V 作为变换矩阵,把 X 投影成 C(即 C=XV),新数据 C 的协方差矩阵是对角阵
我们来计算 C 的协方差:
Var[c]=m−11C⊤C
把 C=XV 代入进去:
C⊤C=(XV)⊤(XV)
C⊤C=V⊤X⊤XV
注意到中间出现了 X⊤X!我们在上一步已经算出来 X⊤X=VΣ2V⊤ 了,直接把它替换进去:
C⊤C=V⊤(VΣ2V⊤)V
再次利用正交矩阵的性质(V⊤V=I),首尾两端都被消去了:
C⊤C=(V⊤V)Σ2(V⊤V)
C⊤C=I⋅Σ2⋅I=Σ2
最终结论:
Var[c]=m−11Σ2
结论
因为 Σ 是一个对角矩阵,那么它的平方 Σ2 毫无疑问也是一个对角矩阵。
这就完美证明了:如果我们用 SVD 分解出来的右奇异向量矩阵 V 对原始数据进行线性变换(C=XV),得到的新数据 C 的协方差矩阵是对角的。也就是说,C 中的各个元素彼此之间是线性无关的。PCA成功实现
最核心的技巧就是利用正交矩阵的性质(U⊤U=I,V⊤V=I)来消除复杂的项。
推荐阅读:
奇异值和奇异矩阵