正如我们已经确定的,从较小的样本中对大体量总体得出结论是统计学中的一个主要任务,在机器学习中尤为重要,因为我们在样本数据上训练模型,期望它们能推广到未见过的数据(即总体)。然而,我们选择样本的方式非常重要。如果样本不能准确反映总体,我们得出的任何推断都可能具有误导性或完全不正确。这就是抽样方法的用武之地。用于推断的任何抽样方法的主要目标是获得一个代表性样本。代表性样本能反映与研究相关的总体特征。例如,如果我们正在分析不同订阅层级的用户满意度,我们的样本应理想地包含每个层级用户的比例代表。未能实现代表性会导致抽样偏差,这是一种系统性误差,表现为总体中某些部分在样本中被过度或不足地表示。偏差会损害我们统计推断的有效性。抽样技术大致分为两种类型:概率抽样和非概率抽样。概率抽样: 在这些方法中,总体中的每个元素都有已知且非零的被选中进入样本的概率。这一特征非常重要,因为它使我们能够使用概率论对总体进行推断,并且重要地,能够量化与我们的估计相关的不确定性(抽样误差)。非概率抽样: 这些方法依赖于主观判断或便利性,而非随机化。选择概率是未知的,因此无法可靠地将结果推广到更广泛的总体,或使用标准统计理论估计误差范围。为了严谨的统计推断,强烈建议使用概率抽样方法。我们来看看一些常用技术。常用概率抽样方法1. 简单随机抽样 (SRS)这是最基本的概率抽样形式。在简单随机抽样中,总体的每个成员都有完全相同的被选中机会,并且任何给定大小为 $n$ 的可能样本都有相同的被选中机会。运作方式: 您为每个总体成员分配一个唯一编号,并使用随机数生成器选择 $n$ 个数字。与这些数字对应的成员构成样本。优点: 易于理解和实施,尤其是在有现成工具(如 Python 的 random 或 numpy.random 模块中的函数)时。它构成了许多统计推断程序的理论依据。缺点: 需要一份完整的全体总体成员名单(抽样框),这可能不存在或难以创建。如果总体庞大且地理分布广泛,它可能效率不高。它也不能保证特定亚群体的代表性,除非样本量非常大。2. 分层随机抽样当总体包含对分析很重要的不同亚群(分层)时,分层抽样通常比简单随机抽样更有效。运作方式: 首先,根据相关特征(例如,年龄组、地理区域、产品使用水平)将总体划分为相互独立且穷尽的分层。然后,在每个分层内部进行简单随机抽样。从每个分层抽取的样本大小可以与该分层在总体中的大小成比例(比例分配),或根据其他标准(例如,分层内的变异性)进行调整。优点: 确保所有重要亚群体的充分代表性,与相同大小的简单随机抽样相比,可能为总体提供更精确的估计,特别是在分层内部相对同质但彼此不同时。允许在每个分层内进行单独分析。缺点: 需要了解总体中每个成员的分层相关特征。实施起来可能比简单随机抽样更复杂。3. 系统抽样系统抽样提供了一种更具结构性但仍属于概率性的方法。运作方式: 从总体有序列表的前 $k$ 个元素中选择一个随机起点。然后,选择此后的每第 $k$ 个元素。抽样间隔 $k$ 的计算公式为 $k = N/n$,其中 $N$ 是总体大小,$n$ 是所需样本大小。优点: 通常比简单随机抽样更容易、更快速地实施,特别是处理物理列表或项目流(例如,生产线上的质量控制)时。如果列表顺序是随机的或与所测量变量无关,则可以提供良好的代表性。缺点: 主要风险是周期性。如果列表存在与抽样间隔 $k$ 一致的循环模式,样本可能会变得非常不具代表性。要求抽样框按逻辑顺序排列。4. 整群抽样当总体自然分为群体或整群(例如,城市、学校、公司部门),并且难以获得完整的个体列表,但整群列表可用时,整群抽样会很有用。运作方式: 将总体划分为整群。随机选择一个整群样本。然后,将选定整群中的所有成员纳入最终样本。(这是一阶段整群抽样。还存在多阶段变体,您可能会在选定整群内部抽取个体样本)。优点: 当总体地理分布广泛或自然分组时,比简单随机抽样或分层抽样更具成本效益和实用性。不需要整个总体的抽样框,只需要选定整群的抽样框。缺点: 往往比相同大小的简单随机抽样或分层抽样具有更高的抽样误差,特别是当整群内的元素彼此相似(整群内相关性高)但整群之间差异很大时。分析比简单随机抽样更复杂。digraph SamplingMethods { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10]; edge [fontsize=9, fontname="Arial"]; subgraph cluster_stratified { label = "分层抽样"; bgcolor="#e9ecef"; PopS [label="总体", shape=cylinder, style=filled, fillcolor="#ced4da"]; Stratum1 [label="分层 1", style=filled, fillcolor="#a5d8ff"]; Stratum2 [label="分层 2", style=filled, fillcolor="#b2f2bb"]; Stratum3 [label="分层 3", style=filled, fillcolor="#ffec99"]; SampleS [label="样本", shape=cylinder, style=filled, fillcolor="#868e96"]; PopS -> Stratum1 [label="划分"]; PopS -> Stratum2 [label="划分"]; PopS -> Stratum3 [label="划分"]; Stratum1 -> SampleS [label="SRS"]; Stratum2 -> SampleS [label="SRS"]; Stratum3 -> SampleS [label="SRS"]; } subgraph cluster_cluster { label = "整群抽样"; bgcolor="#e9ecef"; PopC [label="总体", shape=cylinder, style=filled, fillcolor="#ced4da"]; Cluster1 [label="整群 A", style=filled, fillcolor="#ffc9c9"]; Cluster2 [label="整群 B", style=filled, fillcolor="#bac8ff"]; Cluster3 [label="整群 C", style=filled, fillcolor="#96f2d7"]; Cluster4 [label="整群 D", style=filled, fillcolor="#ffd8a8"]; SampleC [label="样本", shape=cylinder, style=filled, fillcolor="#868e96"]; PopC -> Cluster1 [label="划分"]; PopC -> Cluster2 [label="划分"]; PopC -> Cluster3 [label="划分"]; PopC -> Cluster4 [label="划分"]; Cluster1 -> SampleC [label="选择所有", style=dashed, color="#fa5252"]; // Select Cluster A Cluster3 -> SampleC [label="选择所有", style=dashed, color="#12b886"]; // Select Cluster C {rank=same; Cluster1 Cluster2 Cluster3 Cluster4} } PopS -> PopC [style=invis, minlen=3]; }分层抽样(从所有分层中抽样)与整群抽样(从选定整群中抽取所有元素)的比较。非概率抽样虽然不太适合正式的统计推断,但非概率方法有时也会使用,特别是在初步性研究或概率抽样不切实际时。例子包括:便利抽样: 选择最容易接触到的个体(例如,调查街上行人)。容易出现明显的偏差。配额抽样: 旨在从各种亚群体中获取特定数量的参与者,但以非随机方式选择他们(例如,在每个群体内根据便利性完成配额)。判断抽样: 研究人员利用他们的专业知识选择他们认为最有代表性或最有信息量的个体。这些方法的主要限制是无法评估样本的代表性或量化误差范围。结果应谨慎解读,通常不应推广到总体。机器学习场景中的抽样抽样方法与机器学习工作流程直接相关:数据分割: 将数据集分割为训练集、验证集和测试集时,我们通常使用随机抽样来确保每个子集都具有整体数据集的代表性。对于类别不平衡的分类问题,基于类别标签的分层抽样通常对于确保类别分布在分割中得到保持非常重要。Scikit-learn 中像 train_test_split 这样的函数通常有分层选项。交叉验证: 像 k 折交叉验证这样的技术涉及反复将数据分割为训练折叠和验证折叠。分层版本(例如,Scikit-learn 中的 StratifiedKFold)对于在每个折叠中保持类别比例很重要,尤其是在数据不平衡的情况下。处理大型数据集: 当数据集过大而无法完全载入内存时,抽样技术可能用于选择一个可管理的子集进行初步模型开发或分析。此处抽样方法的选择会影响从子集获得的见解是否可以可靠地推断。理解这些抽样方法很重要,因为样本的质量直接影响您所做统计推断的可靠性,无论是估计总体参数、执行假设检验,还是评估机器学习模型的泛化表现。选择合适的方法取决于总体结构、可用资源以及您分析的目标。