第九部分 · 概率、统计与信息
多元高斯与协方差:相关性的几何
上一课我们给一个随机变量配上了均值与方差。但现实的量从不孤立——身高牵着体重、像素挨着像素。要描述它们"一起怎么动",方差得长成一整张矩阵,钟形曲线得铺成一座山。而那座山的等高线,是一个会拉伸、会倾斜的椭圆——它的主轴,正是我们早就埋下的特征向量。
留下的问题:那是一个变量的故事。可真实数据动辄是几十、几百个变量同时出现,而且彼此相关:知道一个人很高,你就会预期他偏重——身高和体重不是各掷各的骰子。单变量的方差 σ² 只会说"每个变量自己抖多厉害",完全说不出"两个变量一起怎么抖"。怎么把"相关"写成数学?
本课新增:协方差与协方差矩阵 Σ——一次性记下每对变量"同涨同跌还是反着来";相关系数 ρ——把相关强度标准化到 [−1,1];以及多元高斯——把钟形曲线推广到多维。最妙的是,协方差矩阵的几何画像是一个椭圆,它的主轴恰是第 22 课的特征向量、第 23 课的主成分。相关性的几何,和线性代数在此重逢。
协方差:两个变量是否"一起动"
先把问题缩到最小:两个随机变量 X、Y(比如身高、体重)。方差只问"X 自己偏离它的均值多厉害"。我们现在要问一个新问题:当 X 高于它的均值时,Y 倾向于也高,还是反而低?这就是协方差:
Cov(X, Y) = 𝔼[ (X − μₓ)(Y − μᵧ) ]
读作"协方差等于:X 减它的均值 μₓ,乘上 Y 减它的均值 μᵧ,再求期望(平均)"。看这个乘积的符号就懂它的精神:
- X、Y 同时都高于均值(两个括号都正),或同时都低于均值(两个都负)——乘积为正。这样的样本多,协方差就为正:同涨同跌。
- X 高的时候 Y 偏偏低(一正一负)——乘积为负。这样的多,协方差为负:此消彼长。
- X 高低和 Y 完全没关系,正负乘积互相抵消——协方差≈ 0:不相关。
注意一个特例:当 Y 就是 X 自己时,Cov(X,X) = 𝔼[(X−μₓ)²] = σ²ₓ——协方差退回成方差。所以方差只是协方差的"自己跟自己"那一格。协方差是方差概念的自然推广:一个量"自抖"是方差,两个量"共抖"是协方差。
相关系数:把协方差洗干净
协方差有个恼人的毛病:它带单位、看量纲。身高用米还是厘米算,协方差的数值会差出一万倍,可"身高体重的关联强弱"明明没变。我们想要一个纯粹表示强弱、不受单位影响的数。办法是除掉两个变量各自的标准差,把它标准化,得到相关系数 ρ(希腊字母 rho):
ρ = Cov(X, Y) / (σₓ · σᵧ)
读作"相关系数 = 协方差,除以两个变量标准差的乘积"。这一除,单位被约掉了,ρ 永远落在 [−1, 1](读作"负一到正一之间"):
- ρ = +1:完美正相关,两个量像绑在一根直线上同涨同跌。
- ρ = −1:完美负相关,一个涨另一个等比例地跌。
- ρ = 0:线性不相关——画出来是一团没有方向偏好的圆点云。
"洗干净"是关键一步:现在不论变量用什么单位、什么量级,ρ = 0.8 就是 ρ = 0.8,强相关一目了然。机器学习里看特征之间冗不冗余、做特征选择,常常先看一眼这张相关系数。
协方差矩阵:把所有两两关系装进一张方阵
两个变量好办,可数据常有 d 个变量。它们两两之间有 d×d 组关系。线性代数早就给过我们收纳"一大堆数"的容器——第 11 课的矩阵。我们把所有方差与协方差排成一张方阵,叫协方差矩阵 Σ(大写希腊字母 Sigma):
Σ = [ σ²ₓ , Cov(X,Y) ; Cov(X,Y) , σ²ᵧ ]
读作"一个 2×2 矩阵:左上是 X 的方差,右下是 Y 的方差,两个对角外的格子都是 X 与 Y 的协方差"。它有两个一眼可见的特点:对角线是各变量自己的方差(自抖),非对角线是两两协方差(共抖),而且关于对角线对称——因为 Cov(X,Y) = Cov(Y,X)。维度更高时,Σ 就是一张更大的对称方阵,第 i 行第 j 列那一格,记的是第 i 个和第 j 个变量的协方差。一张 Σ,就把一团高维数据"内部怎么一起抖"完整地编码了下来。
多元高斯:钟形曲线铺成一座山
把上一课的高斯推到多维,就得到机器学习里最重要的多维分布——多元高斯,记作 N(μ, Σ)(读作"均值向量 mu、协方差矩阵 Sigma 的多元正态分布")。它由两样东西完全决定:
- 均值向量 μ:这座"概率山"的山峰立在哪(中心位置,每个维度一个均值)。
- 协方差矩阵 Σ:这座山的形状——朝哪个方向铺得宽、哪个方向窄、整体是正着摆还是斜着歪。
在二维里想象它:一座中间最高、四周平滑塌下去的"概率小山",点越密集的地方山越高。我们看它的等高线(俯视,把同样高度连起来)——这是理解 Σ 的钥匙:
- 若 X、Y 方差相等且不相关(ρ=0),等高线是一个正圆。
- 若两者方差不等但仍不相关,等高线是一个正着摆的椭圆(沿坐标轴拉长)。
- 一旦相关(ρ≠0),椭圆就会倾斜——正相关向右上方斜,负相关向左上方斜。倾斜的角度与瘦长程度,正是 Σ 这张矩阵的"长相"。
于是抽象的协方差矩阵,有了一个看得见摸得着的形状:一个椭圆。下面的小实验让你亲手转动这个椭圆。
主轴就是特征向量:埋下的伏笔回收了
盯住上面那个倾斜的椭圆,问一个关键问题:它的"最胖的方向"和"最瘦的方向"指向哪?这两个互相垂直的方向,就是椭圆的主轴。而它们不是别的——正是第 22 课里我们定义的、协方差矩阵 Σ 的特征向量:被这张矩阵作用时只缩放、不转向的那些特殊方向。对应的特征值 λ(读作"lambda")则给出该方向上的方差大小——轴的半长正是 √λ(读作"根号 lambda")。
这就是为什么 PCA 能"找到数据最值得看的方向":它做的,本质上就是把协方差矩阵 Σ 做特征分解,挑出特征值最大的几个方向——也就是这个椭圆最长的几条轴。当年(21、22 课)我们为"哪个方向被变换只拉伸不转向""怎么把高维压扁"埋下的线性代数,到了这里,被概率世界里一个具体到能拖动的椭圆,完完整整地回收了。代数与几何、确定与随机,在协方差矩阵上合流。
一个必须记住的警告:相关 ≠ 因果
协方差和相关系数极其有用,但它们只回答一个很窄的问题:"两个量在数据里是否一起变化。"它们绝不回答"谁导致了谁"。这是统计学里被违反得最多、代价最惨的一条铁律。
夏天里,冰淇淋销量和溺水人数高度正相关——难道吃冰淇淋会淹死人?当然不是。背后藏着一个共同的"幕后推手":气温。天一热,买冰淇淋的多了,下水游泳的也多了,于是两个数同涨。它们之间有强相关 ρ,却没有任何因果。强行把相关读成因果,会得出"禁售冰淇淋以防溺水"这种荒谬结论。机器学习模型整天在数据里捕捉相关性,所以使用者更要时刻清醒:模型学到的是"一起动",不是"谁推动谁"。
常见误解
- "相关系数 ρ=0 就说明两个变量没有任何关系。"只说明没有线性关系。ρ 只嗅得出"一条直线"式的关联。比如 Y = X² 这种漂亮的抛物线关系,关系强得不能再强,可正负两半恰好抵消,ρ 可能正好是 0。看到 ρ=0 就断言"无关",会漏掉所有非线性的结构。
- "相关就是因果。"前一节那条警告,值得再钉一遍:协方差 / 相关只描述"一起动",背后可能是 A 导致 B、B 导致 A、或者两者都被第三个混杂因素(如气温)推动,甚至纯属巧合。要谈因果,得靠对照实验或专门的因果推断,绝不能从一个高 ρ 直接读出。
- "协方差矩阵随便填几个数就行。"不行。一个合法的协方差矩阵必须对称,而且必须"半正定"——通俗说,它代表的椭圆不能"翻面"或塌成虚的,每个特征值都得 ≥ 0(方差不可能为负)。这等价于:|ρ| ≤ 1。乱填一个 |ρ|>1 的"协方差",对应的高斯分布根本不存在。