python之Boostrap自助法介绍
发布日期:2021-10-07 11:13:29 浏览次数:11 分类:技术文章

本文共 1812 字,大约阅读时间需要 6 分钟。

介绍

英语Bootstrap的意思是靴带,来自短语:“pull oneself up by one′s bootstrap”,18世纪德国文学家拉斯伯(Rudolf Erich Raspe)的小说《巴龙历险记(或译为终极天将)》(Adventures of Baron Munchausen) 记述道:“巴龙掉到湖里沉到湖底,在他绝望的时候,他用自己靴子上的带子把自己拉了上来。”现意指不借助别人的力量,凭自己的努力,终于获得成功。在这里“bootstrap”法是指用原样本自身的数据抽样得出新的样本及统计量,根据其意现在普遍将其译为“自助法”。 

它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下: 
  (1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。 
  (2) 根据抽出的样本计算给定的统计量T。 
  (3) 重复上述N次(一般大于1000),得到N个统计量T。 
  (4) 计算上述N个统计量T的样本方差,得到统计量的方差。 
  应该说Bootstrap是现代统计学较为流行的一种统计方法,在小样本时效果很好。通过方差的估计可以构造置信区间等,其运用范围得到进一步延伸。

Jackknife: 和上面要介绍的Bootstrap功能类似,只是有一点细节不一样,即每次从样本中抽样时候只是去除几个样本(而不是抽样),就像小刀一样割去一部分。

用于random forest的数据采样

  1. 从原始样本库里随机产生一个样本。
  2. 放回到库中。
  3. 继续1; 
    上述过程重复n次,产生了一个规模为n的数据集 XX

在随机森林中,我们会构建m个数据集,从而训练m个决策树,通过m个决策树来共同投票决定最终的结果。这就是重采样构建数据和投票机制来塑造的随机森林模型。

来个例子和代码

这里写图片描述 

我们举个例子:假设我们的蓝色点代表男生;黄色点代表女生,我们想知道他们的比例是否大体相当。那么我们采用bootstrap的步骤则是: 
1. 每次采样10个人,看男女比例。 
2. 重复上述过程10000次,把每次的男女比例求平均,代表最终的男女比例。

代码

import numpy as np  from sklearn.utils import resampledef scalegirl(samples):    count =0.0    total = samples.size    for sex in samples:        if(sex==0):            count+=1.0    print(count)    return count/(total-count)boy = (np.ones(1000))girl = (np.zeros(800))#girl/boy=0.8print(girl.shape)all = np.hstack((boy, girl))scale = 0.0iter = 10000for i in range(iter):    bootstrapSamples = resample(all,n_samples=100,replace=1)    print(bootstrapSamples)    tempscale = scalegirl(bootstrapSamples)    print(tempscale)    scale+=tempscaleprint(scale/iter)print(all)》》0.815429978263103

总结

  1. 从上个例子中,我们可以看到,通过自采样的方法,从统计角度,得到的男女比例和真实的值非常接近。这也是自采样的本质所在。
  2. 这种看似简单的方法,对后来的很多技术都产生了深远的影响。机器学习中的Bagging,AdaBoost等方法其实都蕴含了Bootstrap的思想。因为里面既有部分到全体的模拟概念,还有统计的含义,还有投票的概念。
  3. 有时候我们无法得知真相,只有通过样本来推断。
  4. 当今计算机技术的高度发展,使统计研究及其应用跃上了一个新台阶。
  5. 这不仅提高了计算的速度,而且可以把统计学家从求解数学难题中释放出来,并逐渐形成一种面向应用的、基于大量计算的统计思维——模拟抽样统计推断, Bootstrap 法就是其中的一种。

转载地址:https://blog.csdn.net/mingyuli/article/details/81223463 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:numpy.split()函数
下一篇:各种熵总结

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 01时14分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章