查看全课大纲(第 8 / 82 节)
  1. 1.函数与数据泛化
  2. 2.向量:从几何直觉到高维空间
  3. 3.矩阵与张量
  4. 4.特征值与特征向量:矩阵变换的不动方向
  5. 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
  6. 6.概率与统计:机器学习的数学基础
  7. 7.独立性与随机变量:贝叶斯公式与二项分布
  8. 8.期望、方差与协方差:随机变量的数字画像
  9. 9.联合概率:当一条轴不够用的时候
  10. 10.概率分布(一):从伯努利到伽马函数
  11. 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
  12. 12.机器学习的模型:找输入与输出的关系
  13. 13.机器学习的应用
  14. 14.过拟合
  15. 15.机器学习的分类
  16. 16.有监督学习:从房价预测说起
  17. 17.损失函数
  18. 18.梯度下降(上):更新规则与学习速率
  19. 19.梯度下降(2)
  20. 20.牛顿方法
  21. 21.KNN简介
  22. 22.距离测算
  23. 23.朴素贝叶斯
  24. 24.朴素贝叶斯的实际应用
  25. 25.信息熵:决策树构建的度量基础
  26. 26.信息增益与决策树的构建
  27. 27.ID3算法
  28. 28.决策树节点的划分
  29. 29.CART树
  30. 30.Bagging
  31. 31.Boosting:自适应提升算法
  32. 32.Gradient Boosting
  33. 33.线性模型:回归与分类的同一副骨架
  34. 34.最小二乘:把最优参数直接解出来
  35. 35.最小二乘法的几何与概率视角
  36. 36.极大似然:给最小二乘一个概率出身
  37. 37.逻辑回归(1):把线性模型接到分类上
  38. 38.逻辑回归(2):损失函数与多分类
  39. 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
  40. 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
  41. 41.优化方法(1):坐标下降与前向选择
  42. 42.优化方法(2):前向策略与最小角回归
  43. 43.拉格朗日乘子法(1):从无约束到等式约束
  44. 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
  45. 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
  46. 46.最大间隔:把分类问题变成优化问题
  47. 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
  48. 48.支持向量:边界上的少数派
  49. 49.SVM 计算过程:一笔到底算完,再走进核方法
  50. 50.贝叶斯公式:概率即信念
  51. 51.隐含变量和概率模型:给看不见的原因建模
  52. 52.EM 算法:期望与最大化的迭代
  53. 53.琴生不等式:EM 的数学钥匙
  54. 54.三个硬币问题:EM 的复盘与衔接
  55. 55.高斯混合模型:用隐变量解释双峰数据
  56. 56.隐马尔可夫模型
  57. 57.隐马尔可夫模型(2):前向算法与动态混合模型
  58. 58.隐马尔可夫模型在 NLP 中的运用
  59. 59.EM 算法:把「为什么收敛」推到底
  60. 60.HMM 在 NLP 中的运用:从分词到机器翻译
  61. 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
  62. 62.高维下的高斯模型
  63. 63.主题模型:从词袋到隐含主题
  64. 64.Dirichlet 分布(1)
  65. 65.Dirichlet 分布(2)
  66. 66.统计学习内容回顾
  67. 67.K-means 算法
  68. 68.PCA 降维
  69. 69.SVD 降维
  70. 70.从聚类到流形
  71. 71.局部线性嵌入
  72. 72.随机邻域嵌入:SNE 与 t-SNE
  73. 73.无参模型:让数据自己说话
  74. 74.高斯过程:函数空间里的正态分布
  75. 75.高斯过程(2):噪声、正则化与核的线性组合
  76. 76.神经网络简介:从感知器到自编码器
  77. 77.反向传播:把误差一层层传回去
  78. 78.卷积神经网络(CNN):让特征自己学出来
  79. 79.循环神经网络(RNN):给网络装上记忆
  80. 80.深度学习回顾:静态一类,动态一类
  81. 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
  82. 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传

期望、方差与协方差:随机变量的数字画像

约 18 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · 机器学习算法精讲

上一节认识了随机变量——取值清单加上概率分布。但对着一张概率表逐条念,显然太笨:我们需要几个”数字画像”,一眼看穿一个分布的重心与脾气。本节三位主角:期望(重心在哪)、方差与标准差(围绕重心散得多开)、协方差(两个变量是否同进同退)。它们是机器学习里出镜率最高的统计量——后面章节的损失、波动、特征关联,全都从这三个词出发。

💡 核心导读

  • 期望 = 考虑了概率的均值:每个取值乘上它的概率再求和;普通均值人人各占一份,期望按概率占权重。
  • 方差 = 标准差的平方:“方”字说的就是平方;先量每个点到期望的”距离”,平方消去正负号,再按概率取平均。
  • 均值 ± 标准差:机器学习里最常见的波动可视化,也是统计显著性检验的看图起点。
  • 协方差 = 两个变量偏移乘积的均值:象限图解——同涨同跌得正、此涨彼跌得负、四象限均匀则约为 0。
  • 协方差为 0 ≠ 独立:圆上的点协方差恰好为 0,却有能用方程描述的强关联。

期望:考虑到概率的均值

先从最熟悉的均值说起。1 到 10 十个数,全部加起来除以 10 就是均值。讲师坦言:“我有时候喜欢叫均值,因为均值特别容易理解,就把所有数一加一除。”

掷骰子掷一万次,把所有点数加起来除以一万,会趋近多少?不用真的掷一万次——只要每个面等概率,(1+2+…+6)/6 就是答案。讲师的小妙算:1+6=7、2+5=7、3+4=7,三对 7 平摊给 6 个面,每面 7/2——3.5。掷的次数越多,平均点数就越贴着它。

但这个 3.5 埋着一个假设:每个面都是 1/6(均匀分布)。一旦概率被调整,均值就会跟着变。期望(expectation)就是考虑到概率分布的均值——每个取值乘上它的概率,再求和(不用再除以个数,概率本身就是权重):

E[X]=∑ixi⋅P(X=xi)E[X] = \sum_{i} x_i \cdot P(X = x_i)

讲师举的调整版骰子:掷出 1 的概率是 1/2,掷出 2~6 的概率各为 1/10(五份合起来正好 1/2)。“一半的可能性掷出的都是 1”,均值被往 1 这边拉——这个新的均值一定小于 3.5,到底小多少,代码马上作答。期望还能推广到随机变量的函数:把函数值当成新的取值,套同一个加权求和——

E[g(X)]=∑ig(xi)⋅P(X=xi)E[g(X)] = \sum_{i} g(x_i) \cdot P(X = x_i)

这个记号 E[g(X)] 马上会在方差那里派上用场。

def expectation(values, probs):
    """离散随机变量的期望:值 × 概率 的加权求和。"""
    return sum(v * p for v, p in zip(values, probs))

faces = [1, 2, 3, 4, 5, 6]
uniform = [1/6] * 6                    # 骰子 A:六个面均等
biased = [1/2] + [1/10] * 5            # 骰子 B:掷出 1 的概率一半,2~6 各 1/10
print(f"均匀骰子的期望 = {expectation(faces, uniform):.1f}")
print(f"偏心骰子的期望 = {expectation(faces, biased):.1f}")
均匀骰子的期望 = 3.5
偏心骰子的期望 = 2.5

偏心骰子的期望是 2.5——一半的概率被押在 1 上,均值整整被拉低了 1。同一颗骰子,分布一变,重心就挪了窝。

方差与标准差:围绕重心的散布

只知道重心(期望)还不够——两组数据可以有相同的期望,脾气却完全不同。方差(variance)与标准差(standard deviation)就是量”散得多开”的。先记牢一条关系,讲师特意点破:方差有个”方”字,说的就是平方——

Var(X)=Std(X)2\mathrm{Var}(X) = \mathrm{Std}(X)^2

标准差怎么直观理解?讲师的原话思路:给了一堆取值,先求出期望;然后每个点到期望求一个距离,“把这些距离求一个均值”——这是标准差的直觉画像。不过距离有正有负,所以定义里补了一步:差值平方之后全变正数,再按概率加权平均,这就是方差:

Var(X)=E[(X−E[X])2],Std(X)=Var(X)\mathrm{Var}(X) = E\big[(X - E[X])^2\big], \quad \mathrm{Std}(X) = \sqrt{\mathrm{Var}(X)}

机器学习里经常能见到这两个量的”看图版”:以均值为中心,画出”均值 + 一个标准差、均值 − 一个标准差”的区间带——论文里柱状图顶端的误差棒、曲线周围的阴影带都是它。讲师提到,这样的图常被用来判断两个量在统计上是否 significant(显著)——两条带子若明显错开,量之间的高下就更可信。

def expectation(values, probs):
    """离散随机变量的期望:值 × 概率 的加权求和。"""
    return sum(v * p for v, p in zip(values, probs))

def variance(values, probs):
    """方差:到期望距离的平方,按概率加权平均(标准差的平方)。"""
    mu = expectation(values, probs)
    return expectation([(v - mu) ** 2 for v in values], probs)

faces = [1, 2, 3, 4, 5, 6]
uniform = [1/6] * 6
biased = [1/2] + [1/10] * 5
print(f"均匀骰子:方差 = {variance(faces, uniform):.4f},标准差 = {variance(faces, uniform) ** 0.5:.4f}")
print(f"偏心骰子:方差 = {variance(faces, biased):.4f},标准差 = {variance(faces, biased) ** 0.5:.4f}")
均匀骰子:方差 = 2.9167,标准差 = 1.7078
偏心骰子:方差 = 3.2500,标准差 = 1.8028

有意思的对比:偏心骰子的期望更靠左(2.5 < 3.5),方差反而更大(3.25 > 2.9167)——一半的点挤在 1 上,另一半摊开在 2~6,比六面均摊散得更开。期望与方差各管一件事:一个管重心,一个管散布。

协方差:两个变量是否同进同退

单个随机变量的故事讲完了,接下来看两个。协方差(covariance)这个名字里,co 就是 co-worker、cooperate 里那个”合作”——两个变量合作的方差。定义依然是”偏移乘偏移求均值”:

Cov(X,Y)=E[(X−E[X])(Y−E[Y])]\mathrm{Cov}(X, Y) = E\big[(X - E[X])(Y - E[Y])\big]

X 到它期望的偏移,乘上 Y 到它期望的偏移,把乘积按分布求均值。讲师靠一张散点图把它讲透了:

  1. 平面上画出一堆点,每个点有自己的 x 和 y;
  2. 所有点往横轴投影求均值,得到 E[X]E[X](一条竖直参考线);往纵轴投影求均值,得到 E[Y]E[Y](一条水平参考线);两线交出中心点,把平面分成四个象限;
  3. 逐点算偏移乘积 (x−E[X])(y−E[Y])(x - E[X])(y - E[Y]):第一象限(x、y 都比均值大)与第三象限(都比均值小,负负得正)的点贡献正数;第二、第四象限(一大一小)的点贡献负数;
  4. 把所有乘积平均,就是协方差。

于是符号会说话:点主要落在一、三象限——x 变大 y 也跟着变大,正相关,乘积多为正,协方差是正数;点主要落在二、四象限——x 变大 y 反而变小,负相关,协方差是负数;如果两个变量独立,点在四个象限里分布均匀,“有多少个正就有多少个负”,互相抵消,协方差趋于 0。

讲师亲设的关键一问:独立时协方差为 0,那反过来,协方差为 0 就独立吗?课件里那张圆图当场给出否定:圆上的点在四个象限里的个数一样多,正负乘积恰好抵消,协方差算出来是 0;可是”它们根本就不独立,有很强的 pattern,特别清楚的关系”——整张图可以用一个方程 x2+y2=1x^2 + y^2 = 1 描述。所以协方差为 0 只能说明没有线性相关,绝对不等于没有关系。

课件还展示了一组散点画廊,数值从 1、0.8、0.4 到 0,再到 −0.4、−1:数值越贴近 ±1,点越像紧贴一条斜线;越接近 0 越像一团云;负号只是把斜线倒了个方向。讲师顺势发问:“为什么这个协方差大于一、小于一?“这里按”正确性优先”补一句澄清:这组图标注的其实是相关系数(correlation)——协方差除以两个变量的标准差,标准化之后才被压进 −1 到 1;裸协方差本身没有这个界,量纲一变数值就跟着变。本节先抓住最要紧的一点:协方差的符号,说明线性相关的方向。

下面用三组小数据把象限故事变成数字(点数少,你可以逐点手验):

def cov(xs, ys):
    """协方差:各点到各自期望的偏移,对应相乘再取均值。"""
    mx = sum(xs) / len(xs)
    my = sum(ys) / len(ys)
    return sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / len(xs)

pos_x = [1, 2, 3, 4, 5, 6]
pos_y = [2, 3, 5, 4, 6, 8]      # x 变大,y 也跟着变大
neg_y = [8, 6, 5, 3, 2, 1]      # x 变大,y 反而变小
c = 0.7071                      # 圆上对角点的坐标(约等于 √2/2)
circ_x = [1, 0, -1, 0, c, -c, -c, c]
circ_y = [0, 1, 0, -1, c, c, -c, -c]   # 8 个点全落在圆 x²+y²=1 上

print(f"正相关点集的协方差: {cov(pos_x, pos_y):.4f}")
print(f"负相关点集的协方差: {cov(pos_x, neg_y):.4f}")
print(f"圆上 8 点的协方差:   {cov(circ_x, circ_y):.4f}")
正相关点集的协方差: 3.1667
负相关点集的协方差: -4.0833
圆上 8 点的协方差:   0.0000

正相关 3.1667、负相关 −4.0833,符号与象限分布严丝合缝。最妙的是第三行:圆上 8 个点的协方差恰好是 0——一、三象限的 4 个正乘积与二、四象限的 4 个负乘积精确抵消;可这 8 个点全被 x2+y2=1x^2 + y^2 = 1 这一个方程拴在一起,关联明明白白。“协方差为 0 ≠ 独立”,从此有了自己亲手算出来的证据。

📝 动手练一练

  1. 概念辨析:随机变量 XX 与 YY 的协方差 Cov(X,Y)=0\mathrm{Cov}(X, Y) = 0,能不能断定两者没有任何关系?请构造一个反例。
👉 点击查看参考答案

不能。协方差为 0 只排除线性相关。反例:设 XX 服从 [−1,1][-1, 1] 上的均匀分布,令 Y=X2Y = X^2。知道 XX 就能完全算出 YY(YY 是 XX 的确定函数),两者显然不独立;但

Cov(X,Y)=E[XY]−E[X]⋅E[Y]=E[X3]−E[X]⋅E[X2]=0−0=0\mathrm{Cov}(X, Y) = E[XY] - E[X] \cdot E[Y] = E[X^3] - E[X] \cdot E[X^2] = 0 - 0 = 0

因为 XX 的分布关于 0 对称,奇次幂的期望全为 0(E[X]=0E[X] = 0、E[X3]=0E[X^3] = 0)。这与正文里的圆是同一招:对称性让正负乘积抵消,协方差归零,关联却纹丝不动。

  1. 代码实践:讲师直观描述标准差时说的是”每个点到期望的距离,这些距离的均值”;而正式定义是”距离平方的均值,再开方”。用代码把两种口径都算出来(均匀骰子),看看差多少、差在哪。
👉 点击查看参考答案
faces = [1, 2, 3, 4, 5, 6]
probs = [1/6] * 6
mu = sum(v * p for v, p in zip(faces, probs))
mad = sum(abs(v - mu) * p for v, p in zip(faces, probs))
std = sum((v - mu) ** 2 * p for v, p in zip(faces, probs)) ** 0.5
print(f"期望 E[X] = {mu}")
print(f"到期望的距离的均值(平均绝对偏差)= {mad:.4f}")
print(f"标准差(距离平方的均值的平方根)= {std:.4f}")
期望 E[X] = 3.5
到期望的距离的均值(平均绝对偏差)= 1.5000
标准差(距离平方的均值的平方根)= 1.7078

两种口径回答同一个问题(“平均离期望多远”),数值同一量级:平均绝对偏差 1.5,标准差约 1.71。平方版略大,因为平方放大了远端点的贡献——离期望 2.5 的两个面(1 和 6),平方后是 6.25,是近端点(距离 0.5,平方 0.25)的 25 倍。标准差采用平方而不是绝对值,让”散布”的定义便于计算和推广,而”距离平方的均值”本身还顺势定义了方差——这门课后面的大量公式都建立在这个选择上。

本章小结

期望是考虑到概率的均值——概率就是权重,偏心骰子把 3.5 拉到 2.5 就是它的工作现场。方差是标准差的平方——“方”即平方;标准差度量每个点到期望的平均距离(平方口径),“均值 ± 标准差”是它最常见的出场装扮。协方差把两个变量的偏移乘起来求均值:符号说明线性方向——正为同涨同跌、负为此涨彼跌、0 为没有线性关系;但圆的例子钉死了”协方差为 0 ≠ 独立”。往后走,把变量两两的协方差排成矩阵(协方差矩阵),第 16 章 PCA 降维会用它来找数据的主要方向。

📋 行动清单

  • 手算偏心骰子的期望与方差(P(1)=1/2、P(2~6)=1/10),与代码输出对照(应为 2.5 与 3.25)
  • 任取一组二维数据,以 (E[X],E[Y])(E[X], E[Y]) 为中心画十字线,数四个象限的点数、预判协方差符号,再动手算验证
  • 用”圆”的例子向身边人讲清”协方差为 0 不等于独立”:一象限配三象限、二象限配四象限,正负恰好抵消

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第2章课件:机器学习的数学基础 II(概率)
    下载