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》
说在后面
关于机器学习的内容还未结束,请持续关注该专栏的后续文章。
或者关注我的知乎账号:温如