跳转至

P2-5.3 样本(sample)、估计(estimation)、误差(error)

Section ID: P2-5.3 Version: v2026.07.20

在 P2-5.2 中,我们把一组数据的形状看作分布(distribution),把中心看作均值(mean),把扩散看作方差(variance)。现在把问题再往前推一步。

如果我们看不到全部数据,该怎么办?只看一部分数据,能不能对整体发言?而且,这样的说法有多大可能出错?

样本(sample)、估计(estimation)、误差(error)正是在这个问题里出现的。

这里会重新整理 总体(population)样本(sample)估计(estimation)误差(error)抽样偏差(sampling bias)。如果 5.2 讲的是读取一组数据的形状和中心,那么这一节讲的是当我们手里的数据不是全部而只是部分时,会出现什么限制。

术语 英文 核心问题
总体 population 我们想知道的整体是什么?
样本 sample 我们实际观察到的部分是什么?
估计 estimation 怎样用部分去猜整体的值?
误差 error 这个猜测可能和真实值差多远?

这个流程在 AI 里也非常重要。模型看不到现实的全部。我们手里的数据集(dataset)永远只是现实的一部分。所以 AI 训练始终带着一个问题:只用部分数据,能在多大程度上说明整体情况?

这里不会把统计推断的公式算得很细,而是把重点放在:用部分数据谈整体时,会出现哪些限制与误差。如果在这里先抓住总体、样本、估计、误差之间的关系,后面再看泛化(generalization)、评估分数、数据集偏差时,就能更谨慎、更准确地读这些数字。

核心判断标准:样本(sample)、估计(estimation)、误差(error)

  • 能把 总体(population) 解释为感兴趣的整体对象。
  • 能把 样本(sample) 解释为从总体中实际观察到的一部分。
  • 能把 估计(estimation) 解释为用样本去计算总体的值。
  • 能把 估计值(estimate)真实值(true value) 的差解释为 误差(error)
  • 能说明样本变了,估计值也可能跟着变。
  • 能区分 抽样偏差(sampling bias)随机波动(random variation)
  • 能说明 AI 的训练数据不是现实的全部,而只是样本。

三个判断标准

标准 为什么重要 这里需要的理解层次
区分总体和样本 如果不把整体和部分分开,数据到底代表什么就会变得模糊。 理解总体是整体,样本是实际拿到手的部分。
估计是用部分去谈整体 用样本去猜整体性质,是统计与评估的基本动作。 把估计理解成看着部分、谨慎地谈整体性质。
看到数据集本身也是样本 机器学习学习的不是全部现实,而是收集到的部分数据。 理解数据集不是现实整体,而只是样本。

总体是我们关心的整体

总体(population)是我们想知道的整体对象。

例如,可以想下面这些问题。

  • 某个服务全部用户的平均使用时长是多少?
  • 全国高中生的平均数学成绩是多少?
  • 某种产品全部购买者的复购率是多少?
  • 现实里所有会进入系统的图像中,包含行人的比例是多少?

在这些问题里,我们关心的整体对象就是总体。全部用户、全国高中生、全部购买者、现实里会进入的全部图像,都可以成为总体。

问题在于,我们往往无法总是观察到总体的全部。可能成本太高,可能时间太长,可能数据属于未来还没有出现,也可能现实世界一直在变化。

所以我们需要样本。

样本是实际观察到的部分

样本(sample)是从总体中实际观察到的一部分。比如,在全部用户里抽到的 1 万名用户日志、在全国高中生中参与调查的 2 千名学生、全部购买者里回答问卷的人、现实图像里收集到的一组训练图像,都可以看成样本。

样本不是全部。如果样本能够较好地代表总体,它就可以成为我们估计整体性质的依据。

下面这张图先展示总体和样本的包含关系。样本不是和总体并排存在的另一个世界,而是总体中实际被观察到的一部分。数据集(dataset)可以看作把这个被观察到的样本整理成文件、表格、记录后的结果。

flowchart TD
  subgraph P["总体"]
    direction TB
    P1["我们想了解的完整目标"]
    subgraph S["样本"]
      S1["从总体中观测到的子集"]
    end
  end

  S --> D["数据集<br/>对收集样本整理后的记录"]

下面这张图展示的是:先从总体里抽出样本,再用这个样本做出对总体的估计。

从总体中抽出样本并用样本形成估计值的流程

看样本时最重要的问题是:这个样本是否足够代表整体? 所以还要一起检查样本是否太小、是否某个群体被放得过重、是否有没被观察到的群体、以及收集方式是否让某些值被漏掉。

如果样本不能很好代表整体,那么用这个样本算出来的估计值就可能不稳定,或者偏向某一边。

估计是用部分去谈整体

估计(estimation)是利用样本来计算总体某个值的行为。

例如,假设你想知道某个服务全部用户的平均使用时长,但你看不到全部用户。于是你改为抽取 1 万名用户的日志作为样本,再去计算平均值。这时,在总体里你想知道的是全部用户的平均使用时长,实际拿到的是样本中这 1 万名用户的使用时长,而估计就是用样本均值去猜总体均值。

在统计里,人们常把总体真正的性质叫作 参数(parameter),把从样本里计算出来的值叫作 统计量(statistic)

区分 英文 工作性的解释
参数 parameter 总体真实拥有的性质
统计量 statistic 从样本中算出来的值
估计值 estimate 为了猜参数而计算出来的值

在 AI 语境里,parameter 这个词也常常表示模型参数(model parameter)。所以在这里必须把统计里的参数(parameter)和模型里的参数(parameter)区分开。统计中的 parameter 指总体真实的性质,模型中的 parameter 指模型通过学习去调整的数字。

同一个英文单词,在不同语境里意思会变。

误差是估计值和真实值之间的差

误差(error)是估计值与真实值之间的差。比如总体真实平均值是 50,而用样本估计出来的平均值是 47,那么误差就是 -3

现实中,我们常常不知道总体的真实值。所以误差并不总能被精确算出来。但我们必须承认误差可能存在。

下面这张图展示的是:把估计值与真实值之间的差,读作误差。

把估计值与真实值之间的差读成误差的图

如果把误差只理解成“失败”,就会出问题。在统计里,误差是一种语言,用来承认:只要我们是用部分去谈整体,就很难完全没有差距。换句话说,只要通过样本来估计,就不可能把整体完全看清,差距可能出现,而这个差距就被当作误差处理。

AI 模型的预测误差也可以用类似的视角来看。模型给出的预测与真实值不同,就会产生误差。在训练中,我们会把这个误差转成损失(loss),并试图把它降下来。

样本一变,估计值也会变

如果从同一个总体中多次抽样,每次拿到的样本可能都不一样。这样一来,样本均值也可能每次都稍有不同。

例如,就算全部用户真实的平均使用时长是 50 分钟,某个样本可能算出 48 分钟,另一个样本可能算出 52 分钟,第三个样本又可能算出 49 分钟。

这种差别叫作 抽样波动(sampling variation)。只要使用样本,估计值就会带着这种波动。

下面这张图展示的是:如果从同一个总体里多次抽取样本,估计值可能围绕真实值上下摆动。这种摆动是只要使用样本就会自然出现的问题。

比较抽样波动与抽样偏差的图

关键在于:样本一变,估计值也可能跟着变。 只有抓住这个感觉,后面读模型评估结果时才会更谨慎。一次评估分数未必是绝对真理,不同的测试样本可能给出不同分数。如果可以重复评估,就应该把平均水平和波动性一起看。

抽样偏差更危险

我们必须把“样本变化带来的自然波动”和“样本从一开始就偏向一边”这两件事分开。

抽样偏差(sampling bias)指的是样本不能很好代表总体的状态。比如只大量收集了年轻用户、只收集了某个地区的数据、问卷里只留下愿意回答的人,或者日志里只保留成功案例,这时都应该怀疑抽样偏差。

如果拿这样的样本去估计整体,结果就可能系统性地偏掉。随机波动是抽样时自然出现的摆动,抽样偏差则是由于收集方式本身,使样本朝某个方向偏过去的问题。

在 AI 里,抽样偏差非常重要。如果训练数据偏向某个群体、某种场景、某种语言、某种设备环境,模型也可能朝那个方向偏过去。

抽样波动和抽样偏差都会让估计不稳定,但它们的性质不同。

区分 英文 含义 应对视角
抽样波动 sampling variation 抽样时自然出现的摆动 更多样本、重复评估、检查波动性
抽样偏差 sampling bias 因收集方式而导致样本偏向一边的问题 检查收集方式、确认缺失群体、审查数据构成

数据集是被整理过的样本

数据集(dataset)并不只是“数据很多地堆在一起”。在 AI 训练语境里,它通常是把收集到的样本整理成模型能够读取的形式。也就是说,先从现实中观察、记录需要的字段,再整理成文件、表格、图像文件夹、标签文件,之后才成为可用于训练或评估的数据集。

数据集不是现实的全部。数据集会受到收集时间、收集方式、记录格式、清洗标准、标注标准的影响。所以看数据集时,要一起问:这里把什么当作总体?样本是怎么收集的?有没有缺失的群体或场景?标签按什么标准贴上?训练用数据和评估用数据又是如何分开的?

这个视角会成为之后理解数据集准备(dataset preparation)、标签(label)、训练数据(training data)、测试数据(test data)的基础。

训练数据也是现实的样本

AI 的训练数据(training data)不是现实的全部,而是从现实里收集到的一部分样本。比如,现实中全部用户的行为更接近总体,收集到的日志数据是样本,训练数据集则是模型真正看到的样本。

所以,即使模型在训练数据上表现很好,也不能立刻说它在整个现实里都会稳定表现良好。在训练数据上做得好,只能说明它在那个样本上做得好;至于在新的现实数据上是否也能做好,需要另外确认。

这个问题会进一步连到机器学习里一个更大的主题:泛化(generalization)

下面这张图展示的是:现实世界的一部分先被收集成数据集,而这个数据集又继续被分成训练数据和测试数据。

flowchart TD
  A["现实世界<br/>我们无法完整检查的整个世界"]
  B["数据集<br/>从现实中收集的样本"]
  C["训练数据<br/>用于学习模式的样本"]
  D["测试数据<br/>用于估计性能的样本"]

  A -->|收集| B
  B -->|划分| C
  B -->|划分| D

为什么要把测试数据单独留出来

在评估模型时,之所以要把 测试数据(test data) 单独留出来,也可以从样本与估计的视角来理解。

即使模型只是把训练数据背下来,它在训练数据上的表现也可能很好。所以我们要用训练中没见过的数据去检查模型。也就是说,训练数据是模型学习所用的样本,而测试数据则是用来检查模型的另一份样本。

测试成绩也是对现实整体表现的估计值。如果测试数据不够有代表性,评估结果就可能不稳定,或者偏离现实表现。测试分数是对现实表现的估计,而测试数据的构成会影响这个估计的可信度。

这个视角会成为后面理解 train/test split、validation data、cross-validation 的基础。

用案例来看

案例 1. 只看 1 万名 App 用户日志,就能说明全部用户吗

假设一个服务团队想了解全部用户的行为,但现实里只收集到了最近 1 万名用户的日志。1 万条日志看起来很多,但仍然不能据此直接断定全部用户的行为都一样。

但从统计视角看,这 1 万名用户的日志仍然是全部用户里的一个 样本(sample)。我们可以用这个样本去计算平均使用时长或流失率,但这些值不是 总体(population) 的真实值,而是 估计(estimation)。如果换一批样本,结果也可能稍有变化。

更大的问题是抽样偏差。比如,若最近新用户被过度包含,或者某个地区用户的日志被收集得特别多,那么算出来的结果就可能系统性地错误反映全部用户的行为。这时问题已经不只是分数稍有波动,而是样本本身就偏向了一边。

这个案例说明,AI 数据集也应该被读成 收集到的样本,而不是 现实整体。训练数据和测试数据最终也都是样本,所以模型性能数字不能被解释成现实表现的完整证明,而应被解释成从样本中计算出来的估计值。

检查清单

  • 能把 总体(population) 解释为感兴趣的整体对象。
  • 能把 样本(sample) 解释为从总体中实际观察到的一部分。
  • 能把 估计(estimation) 解释为用样本去猜总体的值。
  • 能区分统计里的 参数(parameter) 与模型里的 参数(model parameter)
  • 能把 误差(error) 解释为估计值与真实值之间的差。
  • 能区分 抽样波动(sampling variation)抽样偏差(sampling bias)
  • 能把 训练数据(training data)测试数据(test data) 解释为现实整体的样本。
  • 能把模型评估分数谨慎地读成对现实表现的估计值。
  • 能在不把数据集当成现实整体的前提下,把总体与样本重新分开来说明。

来源与参考资料