统计抽样与重抽样入门

数据是应用机器学习的硬通货。因此,有效收集和使用数据非常重要。

数据抽样是指从领域中选择观测值,以估计总体参数的统计方法。而数据重抽样则是指经济地利用已收集数据集,以改进总体参数估计并帮助量化估计不确定性的方法。

数据抽样和数据重抽样都是预测建模问题中需要的方法。

在本教程中,您将了解用于收集和最佳利用数据的统计抽样和统计重抽样方法。

完成本教程后,您将了解:

  • 抽样是一个主动收集观测值的过程,意在估计总体变量。
  • 重抽样是一种经济地使用数据样本以提高总体参数准确性并量化其不确定性的方法。
  • 事实上,重抽样方法使用的是一种嵌套的重抽样方法。

通过我的新书《机器学习统计学》**快速启动您的项目**,书中包含所有示例的*分步教程*和*Python源代码*文件。

让我们开始吧。

A Gentle Introduction to Statistical Sampling and Resampling

统计抽样与重抽样入门
照片由 Ed Dunens 拍摄,保留部分权利。

教程概述

本教程分为两部分;它们是:

  1. 统计抽样
  2. 统计重抽样

需要机器学习统计学方面的帮助吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

统计抽样

每一行数据都代表了对世界上某个事物的观察。

在处理数据时,我们通常无法获取所有可能的观测值。这可能有很多原因;例如:

  • 进行更多观测可能困难或昂贵。
  • 将所有观测值收集在一起可能具有挑战性。
  • 预计未来会有更多的观测。

在某个领域中进行的观测代表了某个更广泛的、理想化的、未知的总体中所有可能观测的样本。这是一个很有用的概念,因为我们可以看到观测与理想化总体之间的分离和关系。

我们还可以看到,即使我们打算对所有可用数据使用大数据基础设施,这些数据仍然代表了来自理想化总体的观测样本。

尽管如此,我们可能希望估计总体的属性。我们通过使用观测样本来做到这一点。

抽样包括选择总体的一部分进行观察,以便可以估计整个总体的某些情况。

— 第1页,《抽样》,第三版,2012年。

如何抽样

统计抽样是从一个总体中选择子集的过程,其目标是估计总体的属性。

抽样是一个主动的过程。它有一个估计总体属性的目标,并能控制抽样的发生方式。这种控制还不足以影响产生每个观测值的过程,例如进行实验。因此,抽样作为一个领域,恰好位于纯粹不受控制的观察和受控实验之间。

抽样通常与密切相关的实验设计领域区分开来,因为在实验中,人们故意扰动总体的一部分,以观察该行动的效果。[…] 抽样也通常与观察性研究区分开来,在观察性研究中,人们对如何获得对总体的观察几乎没有或根本没有控制。

— 第1-2页,《抽样》,第三版,2012年。

与处理更全面或完整的数据集相比,抽样有很多好处,包括降低成本和提高速度。

为了进行抽样,您需要仔细定义您的总体以及选择(并可能拒绝)观测值成为数据样本一部分的方法。这很可能由您希望使用样本估计的总体参数来定义。

在收集数据样本之前需要考虑的一些方面包括:

  • 样本目标。您希望使用样本估计的总体属性。
  • 总体。理论上可以进行观测的范围或领域。
  • 选择标准。用于接受或拒绝样本中观测值的方法。
  • 样本大小。构成样本的观测值数量。

一些显而易见的问题 […] 是如何最好地获取样本并进行观测,以及一旦样本数据到手,如何最好地使用它们来估计整个总体的特征。获取观测值涉及样本大小、如何选择样本、使用何种观测方法以及记录哪些测量值等问题。

— 第1页,《抽样》,第三版,2012年。

统计抽样是一个庞大的研究领域,但在应用机器学习中,您可能主要会使用三种抽样类型:简单随机抽样、系统抽样和分层抽样。

  • 简单随机抽样:从领域中以均匀概率抽取样本。
  • 系统抽样:按照预先指定的模式(如按间隔)抽取样本。
  • 分层抽样:在预先指定的类别(即层)内抽取样本。

尽管这些是您可能遇到的更常见的抽样类型,但还有其他技术。

抽样误差

抽样要求我们从一小组观测值中对总体进行统计推断。

我们可以从样本中概括出总体的属性。这种估计和概括的过程比处理所有可能的观测值要快得多,但会包含误差。在许多情况下,我们可以量化我们估计的不确定性,并添加误差条,例如置信区间。

在数据样本中引入误差的方式有很多种。

两种主要类型的误差包括选择偏差和抽样误差。

  • 选择偏差。当抽取观测值的方法以某种方式使样本产生偏斜时引起。
  • 抽样误差。由于抽取观测值的随机性以某种方式使样本产生偏斜时引起。

可能还存在其他类型的误差,例如在进行观测或测量的方式上存在系统性误差。

在这些以及更多的情况下,样本的统计属性可能与理想化总体中预期的不同,这反过来又可能影响正在估计的总体属性。

简单的方法,如审查原始观测、汇总统计和可视化,可以帮助暴露简单的错误,例如测量损坏以及某类观测值的过多或过少代表。

尽管如此,在抽样和从抽样中得出关于总体的结论时都必须小心谨慎。

统计重抽样

一旦我们有了数据样本,就可以用它来估计总体参数。

问题在于我们只有一个总体参数的估计值,对该估计值的变异性或不确定性知之甚少。

解决这个问题的一种方法是从我们的数据样本中多次估计总体参数。这被称为重抽样。

统计重抽样方法是描述如何经济地利用可用数据来估计总体参数的程序。其结果既可以是参数的更准确估计(例如取估计值的平均值),也可以是对估计不确定性的量化(例如添加置信区间)。

重抽样方法非常易于使用,几乎不需要数学知识。与可能需要深厚技术技能才能选择和解释的专门统计方法相比,它们是易于理解和实现的方法。

重抽样方法 […] 易于学习和应用。除了入门级的高中代数,它们不需要任何数学知识,却适用于极其广泛的学科领域。

— 第xiii页,《重抽样方法:数据分析实用指南》,2005年。

这些方法的一个缺点是它们在计算上可能非常昂贵,需要数十、数百甚至数千次重抽样才能得出对总体参数的稳健估计。

关键思想是从原始数据中进行重抽样——可以直接进行,也可以通过拟合模型——来创建重复的数据集,从中可以评估感兴趣分位数的变异性,而无需冗长且易出错的分析计算。因为这种方法涉及用许多重复的数据集重复原始数据分析程序,所以这些有时被称为计算机密集型方法。

— 第3页,《自助法及其应用》,1997年。

从原始数据样本中得到的每个新子样本都用于估计总体参数。然后可以使用统计工具来考虑估计的总体参数样本,以量化期望值和方差,从而提供估计不确定性的度量。

统计抽样方法可用于从原始样本中选择子样本。

一个关键的区别是该过程必须重复多次。这样做的问题是,样本之间会存在一些关系,因为观测值会在多个子样本中共享。这意味着子样本和估计的总体参数并非严格独立同分布。这对下游对估计的总体参数样本进行的统计检验有影响,即可能需要配对的统计检验。

您可能会遇到的两种常用重抽样方法是k折交叉验证和自助法(bootstrap)。

  • 自助法(Bootstrap)。从数据集中有放回地抽取样本(允许同一个样本在样本中出现多次),那些未被抽入数据样本的实例可用于测试集。
  • k折交叉验证(k-fold Cross-Validation)。将数据集划分为k个组,每个组都有机会被用作留出的测试集,而其余的组则作为训练集。

k折交叉验证方法特别适用于评估预测模型,这些模型在一个数据子集上重复训练,并在第二个留出的数据子集上进行评估。

通常,用于估计模型性能的重抽样技术操作类似:一部分样本用于拟合模型,其余样本用于估计模型的效力。这个过程重复多次,结果被汇总和总结。技术上的差异通常集中在选择子样本的方法上。

— 第69页,《应用预测建模》,2013年。

自助法(bootstrap)方法可以用于相同的目的,但它是一种更通用、更简单的方法,旨在估计总体参数。

扩展

本节列出了一些您可能希望探索的扩展本教程的想法。

  • 列出两个在机器学习项目中需要统计抽样的例子。
  • 列出两个在机器学习项目中需要统计重抽样的例子。
  • 找一篇使用重抽样方法,而该方法又使用了嵌套统计抽样方法的论文(提示:k折交叉验证和分层抽样)。

如果您探索了这些扩展中的任何一个,我很想知道。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

书籍

文章

总结

在本教程中,您了解了用于收集和最佳利用数据的统计抽样和统计重抽样方法。

具体来说,你学到了:

  • 抽样是一个主动收集观测值的过程,意在估计总体变量。
  • 重抽样是一种经济地使用数据样本以提高总体参数准确性并量化其不确定性的方法。
  • 事实上,重抽样方法使用的是一种嵌套的重抽样方法。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习统计学!

Statistical Methods for Machine Learning

培养对统计学的实用理解

...通过在 python 中编写代码

在我的新电子书中探索如何实现
机器学习的统计方法

它提供关于以下主题的自学教程
假设检验、相关性、非参数统计、重采样,以及更多...

探索如何将数据转化为知识

跳过学术理论。只看结果。

查看内容

对《统计抽样与重抽样简明介绍》的12条回应

  1. Wesley 2018年6月15日,上午8:28 #

    谢谢,很棒的教程。我有一个问题。我想对一个时间序列建模。是应该留出序列的最后一部分来验证拟合,还是对序列进行抽样以在整个序列范围内进行验证更合适?仅用序列的最后一部分来验证是一种不好的做法吗?

  2. JCastro 2019年10月5日,上午11:44 #

    谢谢你,Jason,我有一个问题:既然重抽样方法是用来量化参数估计的不确定性,那么它们与置信区间有何不同?我的意思是,我们为什么不直接使用置信区间来达到这个目的,重抽样有什么优势吗?

  3. mehrnaz 2019年10月19日,下午6:15 #

    我想对我的数据使用抽样方法。我该如何以及在哪里做呢?

    • Jason Brownlee 2019年10月20日,上午6:18 #

      或许可以从教程中的代码开始,并根据你的数据集进行修改?

      这有帮助吗?

  4. mehrnaz 2019年10月20日,上午1:16 #

    在weka中,spread subsample和resample有什么区别?

    • Jason Brownlee 2019年10月20日,上午6:20 #

      在Weka里?抱歉我不知道。或许你可以把你的问题发到Weka用户组?

  5. Eugenia 2021年1月7日,下午5:29 #

    嗨,Jason,

    我们总是需要对时间序列数据进行重抽样吗?我有一个充电站的每小时时间序列数据。如果一天只有3个人给车充电,那么那一天的数据集中我只有3个每小时的观测值吗?我应该进行重抽样然后插值吗?当我这样做时,我能得到很好的预测。但我想知道这是否总是必要的。当我不这样做时,预测结果偏差很大。

    你有没有关于如何截断时间序列数据的教程?目前,我需要忽略数据中的暑假并将其截断。我使用了“iloc”方法,但我想知道截断(使用truncate函数)会不会更好。用“iloc”我会得到零值。我不想要零值。我想从1月到5月,然后从8月到12月,就像6月和7月“不存在”一样。这可能吗?

    谢谢,抱歉有拼写错误(我是国际人士)

    • Jason Brownlee 2021年1月8日,上午5:41 #

      不,只有在它能帮助你重新构建预测问题时才进行重抽样。

      如果你不确定,可以探索多种不同的数据准备方法,并借此机会了解你的问题。

  6. Ian 2024年5月5日,下午10:54 #

    在最后一行
    “Resampling methods, in fact, make use of a nested resampling method.”(事实上,重抽样方法使用的是一种嵌套的重抽样方法。)
    你的意思是不是
    “Resampling methods, in fact, make use of a nested sampling method.”?(事实上,重抽样方法使用的是一种嵌套的抽样方法。)

    所以你基本上得出的结论(或总结?)是,重抽样方法“本质上就是嵌套的抽样方法”,对吗?

    • James Carmichael 2024年5月6日,上午7:11 #

      嗨,Ian……是的,没错。你提供的句子可以被解释为暗示重抽样方法利用了一种嵌套的抽样方法。重抽样方法通常涉及从数据集中重复抽取样本,这确实可以被视为一种嵌套抽样的形式,即一个抽样过程包含在另一个抽样过程中。这种嵌套结构在交叉验证、自助法和置换检验等技术中很常见。所以,从本质上讲,重抽样方法可以被看作是一种嵌套抽样的形式。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。