统计基础


文档摘要

统计基础 统计学(statistics)提供了描述数据、量化不确定性的语言。本文件涵盖分布、随机变量、PMF、PDF、CDF、期望、方差、矩以及中心极限定理,这些概念是每一个 ML 评估指标和损失函数的根基。 统计学是从数据中学习的科学。你收集观测值,把它们总结起来,再得出结论,而这些结论往往是关于你无法直接测量的事物。 想象一下,你想知道某个国家所有成年人的平均身高。你不可能去测量每一个人,所以你测量一个样本,再用统计方法对整个人群做出有依据的估计。

统计基础

统计学(statistics)提供了描述数据、量化不确定性的语言。本文件涵盖分布、随机变量、PMF、PDF、CDF、期望、方差、矩以及中心极限定理,这些概念是每一个 ML 评估指标和损失函数的根基。

  • 统计学是从数据中学习的科学。你收集观测值,把它们总结起来,再得出结论,而这些结论往往是关于你无法直接测量的事物。

  • 想象一下,你想知道某个国家所有成年人的平均身高。你不可能去测量每一个人,所以你测量一个样本,再用统计方法对整个人群做出有依据的估计。

  • 统计学主要分两大支:

    • 描述性统计(descriptive statistics):总结你已有的数据(均值、图表、表格)
    • 推断性统计(inferential statistics):用样本对更大的群体下结论
  • 统计学的基本构件是分布(distribution),它描述数值是如何散布的。其余的一切——均值、检验、预测——都源于对分布的理解。

  • **频数分布(frequency distribution)**统计每个值(或值的区间)在数据中出现的次数。可以把考试分数分箱,然后数每个箱里有多少学生,得到的就是一张直方图。

  • **概率分布(probability distribution)**用概率代替原始计数。它不再是「有 12 名学生得分在 70 到 80 之间」,而是说「得分在 70 到 80 之间的概率是 0.24」。当数据是连续的时候,直方图的柱子会变成一条光滑的曲线。

频数分布表现为直方图,概率分布表现为光滑曲线

  • 左边的直方图是用你实际收集的数据构建的。右边的光滑曲线是一个数学模型,描述数据背后的规律。一个是经验性的,另一个是理论性的。

  • 要在数学上处理分布,我们需要一种把数值赋予结果的方法。这正是**随机变量(random variable)**所做的事。

  • 随机变量是一个把实验的每个结果映射到一个实数的函数。抛一枚硬币:结果是「正面」或「反面」,但随机变量 X 把它转成 X(\text{heads}) = 1X(\text{tails}) = 0。于是我们就可以做算术了。

随机变量把结果(硬币、骰子)映射到数轴上

  • **离散型(discrete)**随机变量取可数个值:10 次抛掷中正面的次数、掷一颗骰子的点数、你一小时内收到的邮件数。

  • **连续型(continuous)**随机变量可以取某个区间内的任意值:你的精确身高、下一班公交车到达的时间、正午的温度。

  • 这种区分很重要,因为它改变了我们计算概率的方式。对于离散变量,我们求和;对于连续变量,我们求积分(回顾第 3 章的积分)。

  • 对于离散型随机变量,**概率质量函数(probability mass function,PMF)**给出每个具体值的概率:

P(X = x) = p(x), \quad \text{where } \sum_{x} p(x) = 1
  • 对于连续型随机变量,**概率密度函数(probability density function,PDF)**给出落在某个区间内的概率。任意单个精确值的概率都是零;只有区间才有正的概率:
P(a \le X \le b) = \int_a^b f(x)\, dx, \quad \text{where } \int_{-\infty}^{\infty} f(x)\, dx = 1
  • 既然我们能把数值赋予结果,最自然的问题就是:平均来看我们期望得到什么值?

  • **期望(expectation,或期望值 expected value)**是所有可能值的加权平均,权重就是概率。可以把它想象成分布的「重心」。

  • 如果你多次掷一颗均匀的骰子,平均点数会收敛到 3.5。这就是期望值,哪怕你永远不可能真的掷出 3.5。

  • 对于离散型随机变量:

E[X] = \sum_{x} x \cdot p(x)
  • 对于连续型随机变量(用到第 3 章的积分):
E[X] = \int_{-\infty}^{\infty} x \cdot f(x)\, dx
  • 例子:一颗均匀的六面骰,对于 x = 1, 2, 3, 4, 5, 6 都有 p(x) = 1/6
E[X] = 1 \cdot \tfrac{1}{6} + 2 \cdot \tfrac{1}{6} + 3 \cdot \tfrac{1}{6} + 4 \cdot \tfrac{1}{6} + 5 \cdot \tfrac{1}{6} + 6 \cdot \tfrac{1}{6} = \frac{21}{6} = 3.5
  • 期望是线性的,即 E[aX + b] = aE[X] + b。这个性质极为有用,在 ML 的损失函数中反复出现。

  • 期望告诉我们中心在哪里,但对于数值有多分散却只字未提。要描述分布的完整形状,我们需要矩(moments)

  • 矩是 X 的某个幂的期望。第 k 阶**原点矩(raw moment)**是:

\mu_k' = E[X^k]
  • 一阶原点矩(k = 1)就是均值:\mu_1' = E[X] = \mu

  • 原点矩是从零开始度量的。很多时候我们更关心相对于均值的偏离。第 k 阶**中心矩(central moment)**把度量中心移到均值处:

\mu_k = E[(X - \mu)^k]
  • 一阶中心矩永远是零(高于均值和低于均值的偏离相互抵消)。二阶中心矩就是方差(variance)

  • 为了在不同尺度上比较分布,我们用标准差 \sigma 的适当幂次来做标准化(standardise)

\tilde{\mu}_k = \frac{\mu_k}{\sigma^k}
  • 每一阶矩刻画分布形状的一个不同方面:

钟形曲线上标注了各阶矩所刻画的含义:均值(中心)、方差(离散度)、偏度(不对称性)、峰度(尾部厚度)

  • 第 1 阶矩(均值):分布的中心在哪里。那个平衡点。

  • 第 2 阶矩(方差):数值围绕均值有多分散。方差越大越宽。

  • 第 3 阶矩(偏度 skewness):分布是向左倾还是向右倾。偏度为零意味着对称。

  • 第 4 阶矩(峰度 kurtosis):尾部有多重。峰度越高,极端离群点越多。

  • 让我们对一个具体的数据集算一遍全部四阶矩:X = \{2, 4, 4, 4, 5, 5, 7, 9\}

  • 第 1 步:均值(一阶原点矩)

\mu = \frac{2 + 4 + 4 + 4 + 5 + 5 + 7 + 9}{8} = \frac{40}{8} = 5
  • 第 2 步:方差(二阶中心矩)。把每个值减去均值,平方,再求平均:
\sigma^2 = \frac{(2{-}5)^2 + (4{-}5)^2 + (4{-}5)^2 + (4{-}5)^2 + (5{-}5)^2 + (5{-}5)^2 + (7{-}5)^2 + (9{-}5)^2}{8}
= \frac{9 + 1 + 1 + 1 + 0 + 0 + 4 + 16}{8} = \frac{32}{8} = 4
  • **标准差(standard deviation)**是 \sigma = \sqrt{4} = 2

  • 第 3 步:偏度(标准化的三阶中心矩)。把偏离立方,求平均,再除以 \sigma^3

\tilde{\mu}_3 = \frac{1}{8} \cdot \frac{(-3)^3 + (-1)^3 + (-1)^3 + (-1)^3 + 0^3 + 0^3 + 2^3 + 4^3}{2^3}
= \frac{1}{8} \cdot \frac{-27 -1 -1 -1 + 0 + 0 + 8 + 64}{8} = \frac{42}{64} = 0.656
  • 偏度为正意味着右尾更长,这很合理,因为 9 远高于均值。

  • 第 4 步:峰度(标准化的四阶中心矩)。把偏离取四次方:

\tilde{\mu}_4 = \frac{1}{8} \cdot \frac{(-3)^4 + (-1)^4 + (-1)^4 + (-1)^4 + 0^4 + 0^4 + 2^4 + 4^4}{2^4}
= \frac{1}{8} \cdot \frac{81 + 1 + 1 + 1 + 0 + 0 + 16 + 256}{16} = \frac{356}{128} = 2.781
  • 正态分布的峰度是 3(称为「常峰态 mesokurtic」)。我们算出的 2.781 与之接近,说明尾部大致正常。峰度大于 3(「尖峰态 leptokurtic」)表示尾部更重;小于 3(「低峰态 platykurtic」)表示尾部更轻。有些公式会减去 3 来报告超额峰度(excess kurtosis),所以我们的超额峰度会是 -0.219

编程练习(使用 CoLab 或 notebook)

  1. 计算一颗灌铅骰子的期望值,其中 6 点的概率是 0.3,其余各面均分剩下的概率。用 100,000 次模拟来验证。
import jax import jax.numpy as jnp # 灌铅骰子:6 点概率为 0.3,其余各面均分 0.7 probs = jnp.array([0.14, 0.14, 0.14, 0.14, 0.14, 0.30]) faces = jnp.array([1, 2, 3, 4, 5, 6]) # 用公式计算期望值 ev = jnp.sum(faces * probs) print(f"Expected value (formula): {ev:.4f}") # 模拟 key = jax.random.PRNGKey(42) rolls = jax.random.choice(key, faces, shape=(100_000,), p=probs) print(f"Expected value (simulation): {rolls.mean():.4f}")
  1. 计算上述示例数据集的全部四阶矩(均值、方差、偏度、峰度),然后修改数据,观察每阶矩如何变化。
import jax.numpy as jnp x = jnp.array([2, 4, 4, 4, 5, 5, 7, 9], dtype=jnp.float32) mean = jnp.mean(x) variance = jnp.mean((x - mean) ** 2) std = jnp.sqrt(variance) skewness = jnp.mean(((x - mean) / std) ** 3) kurtosis = jnp.mean(((x - mean) / std) ** 4) print(f"Mean: {mean:.3f}") print(f"Variance: {variance:.3f}") print(f"Std Dev: {std:.3f}") print(f"Skewness: {skewness:.3f}") print(f"Kurtosis: {kurtosis:.3f}") print(f"Excess K: {kurtosis - 3:.3f}")
  1. 把一颗均匀骰子的 PMF 和 CDF 并排可视化。试着改变概率,看看形状如何变化。
import jax.numpy as jnp import matplotlib.pyplot as plt faces = jnp.array([1, 2, 3, 4, 5, 6]) pmf = jnp.ones(6) / 6 # 均匀骰子;试着改改这些值! cdf = jnp.cumsum(pmf) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) ax1.bar(faces, pmf, color="#3498db", alpha=0.8) ax1.set_title("PMF") ax1.set_xlabel("Face") ax1.set_ylabel("P(X = x)") ax1.set_ylim(0, 0.5) ax2.step(faces, cdf, where="mid", color="#e74c3c", linewidth=2) ax2.set_title("CDF") ax2.set_xlabel("Face") ax2.set_ylabel("P(X ≤ x)") ax2.set_ylim(0, 1.1) plt.tight_layout() plt.show()

发布者: 作者: HenryNdubuaku 转发
评论区 (0)
U