Bootstrap简介Bootstrap方法是非常有用的一种统计学上的估计方法,是斯坦福统计系的教授Bradley Efron(我曾有幸去教授办公室约谈了一次)在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。

因为该方法充分利用了给定的观测信息,不需要模型其他的假设和增加新的观测,并且具有稳健性和效率高的特点。1980年代以来,随着计算机技术被引入到统计实践中来,此方法越来越受欢迎,在机器学习领域应用也很广泛。

首先,Bootstrap通过重抽样,可以避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以用于创造数据的随机性。比如,我们所熟知的随机森林算法第一步就是从原始训练数据集中,应用bootstrap方法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类回归树。

具体讲解

下面我们用一个例子具体介绍bootstrap的原理和用法:

假设我们有两个金融资产X和Y,我们现在想要合理配置这两个资产,使得其资产组合的风险最小。也就是找到一个

,使得

最小。这个问题几十年前马尔可维茨已经在其投资组合理论里给出了解答,最优的

表达式如下:

但是现实生活中实际上我们并不知道

,

以及

的值,故而只能通过X和Y的一系列样本对其进行估计。并用估计值

,

以及

代替

,

以及

插入公式:

所以我们唯一的任务就是合理地估计

,

以及

,传统方法中我们一般会考虑直接使用样本方差(sample variance)去估计

,

以及

的值,然而自从有了Bootstrap之后,我们有了另一种方法与途径,可以更好地去做估计总体的分布特性,即不仅可以估计

,还可以估计

的方差、中位数等值。下面就讲讲Bootstrap究竟是如何做到这一点的:

Bootstrap步骤:

1. 在原有的样本中通过重抽样抽取一定数量(比如100)的新样本,重抽样(Re-sample)的意思就是有放回的抽取,即一个数据有可以被重复抽取超过一次。

2. 基于产生的新样本,计算我们需要估计的统计量。

在这例子中,我们需要估计的统计量是

,那么我们就需要基于新样本的计算样本方差、协方差的值作为

,

以及

,然后通过上面公式算出一个

3. 重复上述步骤n次(一般是n>1000次)。

在这个例子中,通过n次(假设n=1000),我们就可以得到1000个

。也就是

4. 最后,我们可以计算被估计量的均值和方差(不用关注最后的具体数值,这与原本的样本有关):

我们发现,通过Bootstrap方法我们竟然不仅可以估计

的值( 这点普通方法也可以很容易做到),还可以估计

的accuracy也就是其Standard Error。这可是只利用原有的样本进行一次估计所做不到的。那么Bootstrap对于分布特性的估计效果究竟如何呢?请看下图:

左边是真实的

分别,右边则是基于bootstrap方法得到的1000个

的分布,可以看到,二者是比较相近的,也就是说Bootstrap有着不错的估计效果。而且当重复次数增多,Bootstrap的估计效果会更好。

不仅是

的标准差,如果我们想要估计

的中位数、分位数等统计量,也是可以通过Boostrap方法做到的,其整个流程可以用下面一张图诠释:

本质上,Bootstrap方法,是将一次的估计过程,重复上千次上万次,从而便得到了得到上千个甚至上万个的估计值,于是利用这不止一个的估计值,我们就可以估计

均值以外的其他统计量:比如标准差、中位数等。

本文部分图片来源:《An Introduction to Statistical Learning with Applications in R》

说在后面

关于机器学习的内容还未结束,请持续关注该专栏的后续文章。

或者关注我的知乎账号:温如

更多推荐

bootstrap再抽样_【机器学习】Bootstrap详解