协方差矩阵、相关矩阵与 PCA:一份基础知识笔记
在数据分析、机器学习和科研中,经常会遇到下面几个概念:
- 数据矩阵
- 协方差矩阵(covariance matrix)
- 相关矩阵(correlation matrix)
- PCA(Principal Component Analysis,主成分分析)
它们经常一起出现,但初学时也很容易混淆:
- 协方差矩阵和相关矩阵有什么区别?
- 为什么 PCA 研究的是协方差矩阵,而不是原始数据矩阵?
- 特征值和主成分分别代表什么?
- 什么叫“前几个特征值很大”?
这篇笔记试图把这些概念放在同一个框架里说明清楚,作为一份可反复查阅的基础知识整理。
1. 数据矩阵 是什么?
设数据矩阵为:
其中:
- :特征维度数
- :样本数
常见约定是:
- 每一列是一个样本
- 每一行是一个特征维度
也就是说,第 列 表示第 个样本。
例如,如果有 3 个特征、100 个样本,那么:
此时:
- 第 1 行可能是“身高”
- 第 2 行可能是“体重”
- 第 3 行可能是“年龄”
2. 为什么不能只看 本身?
数据矩阵 当然包含原始信息,但如果我们关心的是:
- 不同特征之间是否相关
- 哪些方向上的变化最大
- 数据是否存在低维结构
那么直接看 往往不够直观。
因为这些问题本质上都不是在问“某个样本是多少”,而是在问:
不同维度如何一起变化?
这类问题要靠二阶统计量来描述,也就是协方差和相关性。
3. 协方差矩阵是什么?
3.1 单个协方差的定义
对两个随机变量 和 ,它们的协方差定义为:
其中 ,。
它反映的是:
- 如果 大时 也往往大,协方差为正
- 如果 大时 往往小,协方差为负
- 如果两者没有明显线性共同变化,协方差接近 0
3.2 协方差矩阵的定义
对一个 维随机向量 ,协方差矩阵定义为:
其中 。
它是一个 矩阵:
这里:
- 对角元是每个维度的方差
- 非对角元是不同维度之间的协方差
所以协方差矩阵描述的是:
各个维度之间如何共同波动。
3.3 样本协方差矩阵
如果实际拿到的是数据矩阵 ,通常先做中心化:
其中 表示每一维减去自己的样本均值。
样本协方差矩阵常写作:
有时也写成 ,这取决于采用的是总体还是无偏样本估计。
4. 相关矩阵是什么?
协方差有一个问题:它受量纲和尺度影响很大。
例如:
- 身高用厘米计
- 体重用公斤计
即使它们相关程度相近,不同单位也会让协方差数值差很多。
因此常常引入相关系数:
其中 。
把所有维度之间的相关系数组成矩阵,就得到相关矩阵:
它有几个重要性质:
- 对角元恒为 1
- 非对角元都在 之间
- 去除了尺度差异,更适合比较“相关强弱”
5. 协方差矩阵和相关矩阵的区别
可以这样简单区分:
协方差矩阵
关注的是:
- 真实方差大小
- 实际波动尺度
- 带单位的信息
适合回答:
- 哪些方向上的绝对变化更大?
- 数据能量集中在哪里?
相关矩阵
关注的是:
- 去掉尺度影响后的结构关系
- 不同维度之间的标准化线性相关
适合回答:
- 哪些维度关系更紧密?
- 在不考虑量纲的前提下,结构上是否相关?
一句话概括:
协方差矩阵保留“大小”,相关矩阵强调“结构”。
6. 什么时候看协方差,什么时候看相关矩阵?
这没有绝对规则,但有常见经验。
更适合看协方差矩阵的情况
- 各个维度量纲一致
- 你关心真实方差和能量分布
- 你想做 PCA 并解释“每个方向有多少方差”
更适合看相关矩阵的情况
- 不同维度量纲不同
- 不同维度方差差异很大
- 你主要关心结构相关性,而不是绝对尺度
在实际分析中,经常两者都看:
- 用相关矩阵看变量之间的关联结构
- 用协方差矩阵或其谱看全局主方向
7. PCA 到底在做什么?
PCA 的目标是:
找到数据中变化最大的方向,并用尽可能少的几个方向解释大部分数据变化。
更具体地说,PCA 寻找一组正交方向,使得:
- 第一个方向上的投影方差最大
- 第二个方向在与第一个正交的前提下方差最大
- 依此类推
这些方向就是主成分方向。
8. 为什么 PCA 研究的是协方差矩阵?
PCA 关心的是“哪个方向上的方差最大”。
而方差方向的信息正好包含在协方差矩阵里。
设协方差矩阵为:
对它做特征值分解:
其中:
- 的列向量是特征向量
- 是特征值矩阵
通常按大小排序:
那么:
- 特征向量给出主成分方向
- 特征值给出沿这些方向的方差大小
因此,PCA 本质上就是在分析协方差矩阵的谱结构。
9. PCA 里的特征值意味着什么?
PCA 中每个特征值 表示:
数据沿第 个主成分方向的方差。
所以:
- 特征值越大,说明这个方向越重要
- 特征值越小,说明这个方向上的变化越弱
如果出现下面这种情况:
就意味着:
- 数据主要分布在前 4 个主方向上
- 后面方向上的变化很弱
- 数据虽然处在高维空间里,但本质上接近一个低维结构
这就是常说的“前几个主特征值很大”。
10. 什么叫“低维结构”?
“低维结构”并不是说数据真的只有几维,而是说:
数据的大部分变化,可以由少数几个方向解释。
例如,原始数据可能有 100 个维度,但如果前 3 个主成分就解释了 95% 的方差,那么可以说:
- 数据有明显的低维主结构
- 有效自由度远小于原始维数
这也是 PCA 常被用来做降维的原因。
11. PCA 与降维的关系
PCA 常用于降维,是因为它可以保留“最重要”的方向。
例如,如果只保留前 个主成分,那么实际上就是把数据投影到一个 维子空间中。
如果前 个特征值已经占据了绝大多数总方差,那么这种降维通常损失不大。
常见指标是累计解释方差比:
它表示前 个主成分解释了多少比例的数据方差。
12. 为什么不是直接看 的特征值?
这是很容易混淆的点。
严格地说,PCA 通常不看 本身的特征值,而是看:
- 的特征值
- 或等价地,中心化后数据矩阵的奇异值
原因有两个:
第一, 往往不是方阵
如果 ,通常 ,这时 没有通常意义下的特征值分解。
第二,PCA 关心的是“方差沿方向的分布”
这属于协方差结构,而不是原始矩阵本身的代数性质。
因此更准确的说法是:
PCA 研究的是协方差矩阵的特征值和特征向量,而不是原始数据矩阵 的特征值。
13. PCA 与 SVD 的关系
设中心化后的数据矩阵为 ,对它做奇异值分解:
那么:
而样本协方差矩阵满足:
所以可以看出:
- 协方差矩阵的特征向量 = 左奇异向量
- 协方差矩阵的特征值 = 奇异值平方再乘上归一化系数
因此,在数值计算中,PCA 常常通过 SVD 来做。
一句话总结:
PCA 的谱分析,本质上等价于对中心化数据矩阵做 SVD。
14. 协方差矩阵、相关矩阵、PCA 三者之间的关系
可以把三者放在同一张图景里理解:
数据矩阵
保存原始样本。
协方差矩阵
描述各维度如何共同变化,保留尺度信息。
相关矩阵
描述标准化后的相关结构,消除量纲影响。
PCA
通过分析协方差矩阵(或有时分析相关矩阵)的特征值与特征向量,找到主方向和低维结构。
所以,PCA 可以看作是:
对数据二阶结构的一种谱分析方法。
15. PCA 是基于协方差矩阵,还是相关矩阵?
这两种做法都存在。
基于协方差矩阵的 PCA
适合:
- 各维度量纲一致
- 希望保留真实方差大小
- 方差本身有意义
基于相关矩阵的 PCA
适合:
- 各维度尺度差异很大
- 不希望大方差变量主导结果
- 更关心归一化后的结构
从操作上说,先对每一维做标准化,再做 PCA,就相当于在相关矩阵上做 PCA。
16. 如何理解“相关性强”与“谱集中”?
这两者相关,但不是完全同一个概念。
相关性强
强调的是:
- 不同维度之间两两相关明显
- 相关矩阵中非对角元较大
谱集中
强调的是:
- 大部分方差集中在少数几个方向上
- 协方差矩阵的前几个特征值特别大
它们常常一起出现,因为如果很多维度受少数公共因子驱动,就会导致:
- 两两相关增强
- 谱变得集中
但概念上仍然值得区分:
- 相关矩阵更偏向“两两关系”
- 特征值谱更偏向“全局结构”
17. 实际分析时可以看什么?
如果你想快速判断一个数据集的结构,常见可以看三类东西:
1. 均值与标准差
先了解每个变量的基本尺度。
2. 相关矩阵热图
查看不同变量之间是否存在明显相关关系。
3. 特征值谱 / explained variance
查看数据是不是由少数主方向主导。
这三步通常就足以建立对数据结构的初步认识。
18. 常见误区
误区一:协方差大就一定说明相关强
不一定。协方差会受变量尺度影响。
方差很大的变量,即使结构上相关程度一般,也可能表现出较大协方差。
误区二:相关系数接近 0 就说明完全没关系
不一定。它只表示线性相关性弱,并不排除非线性关系。
误区三:PCA 找到的是“最重要的特征”
更准确地说,PCA 找到的是方差最大的方向,不一定等于任务上最重要的方向。
误区四:PCA 看的是原始数据矩阵 的特征值
通常不是。PCA 看的是协方差矩阵的特征值,或者等价地看中心化数据矩阵的奇异值。
19. 一份最简记忆版
如果只记最核心的内容,可以记下面几句:
数据矩阵
存的是样本本身。
协方差矩阵
描述变量如何共同变化,保留尺度。
相关矩阵
描述标准化后的相关结构,消除尺度影响。
PCA
通过分析协方差矩阵的特征值和特征向量,找到变化最大的主方向。
特征值大
表示这个方向上的方差大,解释的数据变化更多。
前几个特征值很大
表示数据存在明显低维主结构。
20. 结语
协方差矩阵、相关矩阵和 PCA 是理解数据结构时最基础也最重要的一组工具。
它们分别回答不同层面的问题:
- 协方差矩阵:变量如何共同波动?
- 相关矩阵:去掉尺度后,变量之间的结构关系如何?
- PCA:数据最主要的变化方向是什么?是否存在低维主结构?
把这几个概念区分清楚之后,很多后续问题都会自然很多,比如:
- 什么时候该标准化?
- 为什么要看特征值谱?
- 为什么有时 PCA 要基于相关矩阵而不是协方差矩阵?
- 什么时候可以说数据“本质上是低维的”?
这些问题看似分散,其实都建立在同一个核心事实上:
想理解数据,不只是看样本值本身,更重要的是看变量之间如何共同变化。