理解bootstrapping

复习一下bootstrapping。

统计中我们常常需要做参数估计,具体问题可以描述为:
给定一系列数据x_1,x_2,...,x_n \sim i.i.d. F(x|\theta),假设它们是从分布F中采样得到的,参数估计就是希望估计分布F中的\theta

bootstrapping算法的目的就是为了估计\theta从而得到F的分布的预测。具体地,它的思想对已有的观测值x_1,x_2,...,x_n进行多次重复的抽样,每次抽样都可以得到一个预测的经验分布函数,根据这些不同抽样得到的经验分布函数,可以得到一个更好的关于统计量分布的估计。

打个比方,如果现在有N个学生的身高数据,需要估计的统计量是学生的平均身高。bootstraping的方法可以替我们确定身高平均值的置信区间。步骤大致如下:

  • 从N个数据中随机抽取N个数据(有放回)构成一个样本
  • 计算每个样本的均值
  • 重复步骤1,2知道计算足够多的次数(如100次)

根据这些步骤得到的100次结果,我们可以得出95%的置信区间,即覆盖了95%的样本均值的区间。换言之,超出这个范围的身高均值,出现的次数都小于5%,也可以说它的p值<0.05。

以上所说的可以理解为bootstrapping百分位法,它假设样本均值与总体均值的分布大致相似,但这个假设在现实中很难保证成立。一个更好的方法是bootstrapping经验法。具体的核心思想可以概括为:

计算总体均值\mu的置信区间的本质是回答这样一个问题:样本均值\bar{x}的分布是如何围绕总体均值\mu变化的。换言之,我们想知道残差\delta=\mu-\bar{x}的分布。\delta就是当我们使用\bar{x}来估计\mu的误差。虽然我们不知道\delta的分布,但是它可以由\bar{x}^{*}如何围绕\bar{x}变化(即\delta^{*}的分布)来近似。这里\delta^{*}是利用 Bootstrap 样本计算的均值与原始样本均值之间的差:
\delta^{*} = \bar{x}^{*} - \bar{x}

传统的区间估计往往需要先知道F的分布,但这有点陷入鸡生蛋蛋生鸡的困境了。相反的,bootstrapping方法则无需已知F分布,提供了一种灵活的判断统计量的方法。

在做机器学习或者深度学习实验室,往往有些实验结果会被要求提供p值。一个可行的方法就是使用bootstrapping。将测试集中的数据做随机抽样得到一些样本,通过模型预测得到每个样本关于某metric的平均值,这样就能计算出其p值了。

参考:
https://zhuanlan.zhihu.com/p/146438101
https://www.cnblogs.com/wangprince2017/p/9973114.html
https://zhuanlan.zhihu.com/p/41099219

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。