协方差矩阵、相关矩阵与 PCA:一份基础知识笔记

在数据分析、机器学习和科研中,经常会遇到下面几个概念:

  • 数据矩阵 XX
  • 协方差矩阵(covariance matrix)
  • 相关矩阵(correlation matrix)
  • PCA(Principal Component Analysis,主成分分析)

它们经常一起出现,但初学时也很容易混淆:

  • 协方差矩阵和相关矩阵有什么区别?
  • 为什么 PCA 研究的是协方差矩阵,而不是原始数据矩阵?
  • 特征值和主成分分别代表什么?
  • 什么叫“前几个特征值很大”?

这篇笔记试图把这些概念放在同一个框架里说明清楚,作为一份可反复查阅的基础知识整理。


1. 数据矩阵 XX 是什么?

设数据矩阵为:

XRD×TX \in \mathbb{R}^{D \times T}

其中:

  • DD:特征维度数
  • TT:样本数

常见约定是:

  • 每一列是一个样本
  • 每一行是一个特征维度

也就是说,第 ttxtRDx_t \in \mathbb{R}^D 表示第 tt 个样本。

例如,如果有 3 个特征、100 个样本,那么:

XR3×100X \in \mathbb{R}^{3 \times 100}

此时:

  • 第 1 行可能是“身高”
  • 第 2 行可能是“体重”
  • 第 3 行可能是“年龄”

2. 为什么不能只看 XX 本身?

数据矩阵 XX 当然包含原始信息,但如果我们关心的是:

  • 不同特征之间是否相关
  • 哪些方向上的变化最大
  • 数据是否存在低维结构

那么直接看 XX 往往不够直观。

因为这些问题本质上都不是在问“某个样本是多少”,而是在问:

不同维度如何一起变化?

这类问题要靠二阶统计量来描述,也就是协方差和相关性。


3. 协方差矩阵是什么?

3.1 单个协方差的定义

对两个随机变量 XiX_iXjX_j,它们的协方差定义为:

Cov(Xi,Xj)=E[(Xiμi)(Xjμj)]\mathrm{Cov}(X_i, X_j) = \mathbb{E}[(X_i - \mu_i)(X_j - \mu_j)]

其中 μi=E[Xi]\mu_i = \mathbb{E}[X_i]μj=E[Xj]\mu_j = \mathbb{E}[X_j]

它反映的是:

  • 如果 XiX_i 大时 XjX_j 也往往大,协方差为正
  • 如果 XiX_i 大时 XjX_j 往往小,协方差为负
  • 如果两者没有明显线性共同变化,协方差接近 0

3.2 协方差矩阵的定义

对一个 DD 维随机向量 xx,协方差矩阵定义为:

Σ=Cov(x)=E[(xμ)(xμ)]\Sigma = \mathrm{Cov}(x) = \mathbb{E}[(x-\mu)(x-\mu)^\top]

其中 μ=E[x]\mu = \mathbb{E}[x]

它是一个 D×DD \times D 矩阵:

Σ=[Var(x1)Cov(x1,x2)Cov(x2,x1)Var(x2)]\Sigma = \begin{bmatrix} \mathrm{Var}(x_1) & \mathrm{Cov}(x_1,x_2) & \cdots \\ \mathrm{Cov}(x_2,x_1) & \mathrm{Var}(x_2) & \cdots \\ \vdots & \vdots & \ddots \end{bmatrix}

这里:

  • 对角元是每个维度的方差
  • 非对角元是不同维度之间的协方差

所以协方差矩阵描述的是:

各个维度之间如何共同波动。


3.3 样本协方差矩阵

如果实际拿到的是数据矩阵 XX,通常先做中心化:

Xc=XXˉX_c = X - \bar X

其中 Xˉ\bar X 表示每一维减去自己的样本均值。

样本协方差矩阵常写作:

Σ1TXcXc\Sigma \approx \frac{1}{T} X_c X_c^\top

有时也写成 1T1\frac{1}{T-1},这取决于采用的是总体还是无偏样本估计。


4. 相关矩阵是什么?

协方差有一个问题:它受量纲和尺度影响很大。

例如:

  • 身高用厘米计
  • 体重用公斤计

即使它们相关程度相近,不同单位也会让协方差数值差很多。

因此常常引入相关系数

Corr(Xi,Xj)=Cov(Xi,Xj)σiσj\mathrm{Corr}(X_i, X_j) = \frac{\mathrm{Cov}(X_i, X_j)} {\sigma_i \sigma_j}

其中 σi=Var(Xi)\sigma_i = \sqrt{\mathrm{Var}(X_i)}

把所有维度之间的相关系数组成矩阵,就得到相关矩阵:

R=Corr(x)R = \mathrm{Corr}(x)

它有几个重要性质:

  • 对角元恒为 1
  • 非对角元都在 [1,1][-1,1] 之间
  • 去除了尺度差异,更适合比较“相关强弱”

5. 协方差矩阵和相关矩阵的区别

可以这样简单区分:

协方差矩阵

关注的是:

  • 真实方差大小
  • 实际波动尺度
  • 带单位的信息

适合回答:

  • 哪些方向上的绝对变化更大?
  • 数据能量集中在哪里?

相关矩阵

关注的是:

  • 去掉尺度影响后的结构关系
  • 不同维度之间的标准化线性相关

适合回答:

  • 哪些维度关系更紧密?
  • 在不考虑量纲的前提下,结构上是否相关?

一句话概括:

协方差矩阵保留“大小”,相关矩阵强调“结构”。


6. 什么时候看协方差,什么时候看相关矩阵?

这没有绝对规则,但有常见经验。

更适合看协方差矩阵的情况

  • 各个维度量纲一致
  • 你关心真实方差和能量分布
  • 你想做 PCA 并解释“每个方向有多少方差”

更适合看相关矩阵的情况

  • 不同维度量纲不同
  • 不同维度方差差异很大
  • 你主要关心结构相关性,而不是绝对尺度

在实际分析中,经常两者都看:

  • 用相关矩阵看变量之间的关联结构
  • 用协方差矩阵或其谱看全局主方向

7. PCA 到底在做什么?

PCA 的目标是:

找到数据中变化最大的方向,并用尽可能少的几个方向解释大部分数据变化。

更具体地说,PCA 寻找一组正交方向,使得:

  • 第一个方向上的投影方差最大
  • 第二个方向在与第一个正交的前提下方差最大
  • 依此类推

这些方向就是主成分方向


8. 为什么 PCA 研究的是协方差矩阵?

PCA 关心的是“哪个方向上的方差最大”。

而方差方向的信息正好包含在协方差矩阵里。

设协方差矩阵为:

Σ=Cov(x)\Sigma = \mathrm{Cov}(x)

对它做特征值分解:

Σ=UΛU\Sigma = U \Lambda U^\top

其中:

  • UU 的列向量是特征向量
  • Λ=diag(λ1,,λD)\Lambda = \mathrm{diag}(\lambda_1,\dots,\lambda_D) 是特征值矩阵

通常按大小排序:

λ1λ2λD0\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_D \ge 0

那么:

  • 特征向量给出主成分方向
  • 特征值给出沿这些方向的方差大小

因此,PCA 本质上就是在分析协方差矩阵的谱结构。


9. PCA 里的特征值意味着什么?

PCA 中每个特征值 λi\lambda_i 表示:

数据沿第 ii 个主成分方向的方差。

所以:

  • 特征值越大,说明这个方向越重要
  • 特征值越小,说明这个方向上的变化越弱

如果出现下面这种情况:

λ1,λ2,λ3,λ4 很大,后面都很小\lambda_1,\lambda_2,\lambda_3,\lambda_4 \text{ 很大,后面都很小}

就意味着:

  • 数据主要分布在前 4 个主方向上
  • 后面方向上的变化很弱
  • 数据虽然处在高维空间里,但本质上接近一个低维结构

这就是常说的“前几个主特征值很大”。


10. 什么叫“低维结构”?

“低维结构”并不是说数据真的只有几维,而是说:

数据的大部分变化,可以由少数几个方向解释。

例如,原始数据可能有 100 个维度,但如果前 3 个主成分就解释了 95% 的方差,那么可以说:

  • 数据有明显的低维主结构
  • 有效自由度远小于原始维数

这也是 PCA 常被用来做降维的原因。


11. PCA 与降维的关系

PCA 常用于降维,是因为它可以保留“最重要”的方向。

例如,如果只保留前 kk 个主成分,那么实际上就是把数据投影到一个 kk 维子空间中。

如果前 kk 个特征值已经占据了绝大多数总方差,那么这种降维通常损失不大。

常见指标是累计解释方差比

λ1++λkλ1++λD\frac{\lambda_1 + \cdots + \lambda_k} {\lambda_1 + \cdots + \lambda_D}

它表示前 kk 个主成分解释了多少比例的数据方差。


12. 为什么不是直接看 XX 的特征值?

这是很容易混淆的点。

严格地说,PCA 通常不看 XX 本身的特征值,而是看:

  • Cov(X)\mathrm{Cov}(X) 的特征值
  • 或等价地,中心化后数据矩阵的奇异值

原因有两个:

第一,XX 往往不是方阵

如果 XRD×TX \in \mathbb{R}^{D \times T},通常 DTD \neq T,这时 XX 没有通常意义下的特征值分解。

第二,PCA 关心的是“方差沿方向的分布”

这属于协方差结构,而不是原始矩阵本身的代数性质。

因此更准确的说法是:

PCA 研究的是协方差矩阵的特征值和特征向量,而不是原始数据矩阵 XX 的特征值。


13. PCA 与 SVD 的关系

设中心化后的数据矩阵为 XcX_c,对它做奇异值分解:

Xc=USVX_c = U S V^\top

那么:

XcXc=US2UX_c X_c^\top = U S^2 U^\top

而样本协方差矩阵满足:

Σ1TXcXc\Sigma \approx \frac{1}{T} X_c X_c^\top

所以可以看出:

  • 协方差矩阵的特征向量 = XcX_c 左奇异向量
  • 协方差矩阵的特征值 = 奇异值平方再乘上归一化系数

因此,在数值计算中,PCA 常常通过 SVD 来做。

一句话总结:

PCA 的谱分析,本质上等价于对中心化数据矩阵做 SVD。


14. 协方差矩阵、相关矩阵、PCA 三者之间的关系

可以把三者放在同一张图景里理解:

数据矩阵 XX

保存原始样本。

协方差矩阵 Cov(X)\mathrm{Cov}(X)

描述各维度如何共同变化,保留尺度信息。

相关矩阵 Corr(X)\mathrm{Corr}(X)

描述标准化后的相关结构,消除量纲影响。

PCA

通过分析协方差矩阵(或有时分析相关矩阵)的特征值与特征向量,找到主方向和低维结构。

所以,PCA 可以看作是:

对数据二阶结构的一种谱分析方法。


15. PCA 是基于协方差矩阵,还是相关矩阵?

这两种做法都存在。

基于协方差矩阵的 PCA

适合:

  • 各维度量纲一致
  • 希望保留真实方差大小
  • 方差本身有意义

基于相关矩阵的 PCA

适合:

  • 各维度尺度差异很大
  • 不希望大方差变量主导结果
  • 更关心归一化后的结构

从操作上说,先对每一维做标准化,再做 PCA,就相当于在相关矩阵上做 PCA。


16. 如何理解“相关性强”与“谱集中”?

这两者相关,但不是完全同一个概念。

相关性强

强调的是:

  • 不同维度之间两两相关明显
  • 相关矩阵中非对角元较大

谱集中

强调的是:

  • 大部分方差集中在少数几个方向上
  • 协方差矩阵的前几个特征值特别大

它们常常一起出现,因为如果很多维度受少数公共因子驱动,就会导致:

  • 两两相关增强
  • 谱变得集中

但概念上仍然值得区分:

  • 相关矩阵更偏向“两两关系”
  • 特征值谱更偏向“全局结构”

17. 实际分析时可以看什么?

如果你想快速判断一个数据集的结构,常见可以看三类东西:

1. 均值与标准差

先了解每个变量的基本尺度。

2. 相关矩阵热图

查看不同变量之间是否存在明显相关关系。

3. 特征值谱 / explained variance

查看数据是不是由少数主方向主导。

这三步通常就足以建立对数据结构的初步认识。


18. 常见误区

误区一:协方差大就一定说明相关强

不一定。协方差会受变量尺度影响。
方差很大的变量,即使结构上相关程度一般,也可能表现出较大协方差。

误区二:相关系数接近 0 就说明完全没关系

不一定。它只表示线性相关性弱,并不排除非线性关系。

误区三:PCA 找到的是“最重要的特征”

更准确地说,PCA 找到的是方差最大的方向,不一定等于任务上最重要的方向。

误区四:PCA 看的是原始数据矩阵 XX 的特征值

通常不是。PCA 看的是协方差矩阵的特征值,或者等价地看中心化数据矩阵的奇异值。


19. 一份最简记忆版

如果只记最核心的内容,可以记下面几句:

数据矩阵 XX
存的是样本本身。

协方差矩阵 Cov(X)\mathrm{Cov}(X)
描述变量如何共同变化,保留尺度。

相关矩阵 Corr(X)\mathrm{Corr}(X)
描述标准化后的相关结构,消除尺度影响。

PCA
通过分析协方差矩阵的特征值和特征向量,找到变化最大的主方向。

特征值大
表示这个方向上的方差大,解释的数据变化更多。

前几个特征值很大
表示数据存在明显低维主结构。


20. 结语

协方差矩阵、相关矩阵和 PCA 是理解数据结构时最基础也最重要的一组工具。

它们分别回答不同层面的问题:

  • 协方差矩阵:变量如何共同波动?
  • 相关矩阵:去掉尺度后,变量之间的结构关系如何?
  • PCA:数据最主要的变化方向是什么?是否存在低维主结构?

把这几个概念区分清楚之后,很多后续问题都会自然很多,比如:

  • 什么时候该标准化?
  • 为什么要看特征值谱?
  • 为什么有时 PCA 要基于相关矩阵而不是协方差矩阵?
  • 什么时候可以说数据“本质上是低维的”?

这些问题看似分散,其实都建立在同一个核心事实上:

想理解数据,不只是看样本值本身,更重要的是看变量之间如何共同变化。


协方差矩阵、相关矩阵与 PCA:一份基础知识笔记
https://minxing-liu.github.io/2026/03/16/covariance-correlation-pca-notes/
作者
Kent Liu
发布于
2026年3月16日
许可协议