计算机中bootstrapping 是很没意思_Bootstrapping算法(附python代码)

Bootstrapping算法是一种解决有限样本情况下建立样本分布的方法,尤其在数据集小、划分训练测试集困难时有效。通过多次随机抽样,可以得到接近真实比例的统计结果。在计算机领域,这种模拟抽样技术对于统计推断具有重要意义。
摘要由CSDN通过智能技术生成

0c9fce4eabab78933c69fce2de3a5712.png

简介

Bootstrapping算法就是利用有限的样本经由多次重复抽样,建立起足以代表母体样本分布之新样本,在机器学习中解决了样本不足的问题。

在西瓜书第二章提到,自助法在数据集较小、难以有效划分训练/测试集时很有用,将多次随机抽样作为训练集,将初始数据作为测试集。

假定盒子中有蓝、黄共n个小球,自助样本可按如下步骤获得:

  1. 从盒中随机抽取一个小球并记录其颜色;
  2. 把小球放入盒中;
  3. 混匀。再随机抽取一个小球,记下其颜色;
  4. 放回盒子中,混匀,重新抽取;
  5. 重复步骤③和④n次,便可得到一个自助样本。重复上述抽样过程M次,便可得到M个自助样本。

案例

8f4e7824f9e69bbb40d149dc1992ddb0.png

我们举个例子:假设我们想知道蓝球和黄球的比例是否大体相当。那么我们采用bootstrapping的步骤则是:

1. 每次采样10个球

2. 重复上述过程10000次,把每次的蓝、黄球比例求平均,代表最终的蓝、黄球比例。

代码

import numpy as np  
from sklearn.utils import resample  
  
def scaleyellow(samples):  
    count = 0.0  
    total = samples.size  
    for colour in samples:  
        if (colour == 0):  
            count += 1.0  
    # print(count)  
    return count / (total - count)  
  
  
blue = (np.ones(1000))  
yellow = (np.zeros(800))  
  
# yellow/blue=0.8  
  
all = np.hstack((blue, yellow))  
scale = 0.0  
iter = 10000  
for i in range(iter):  
    bootstrapSamples = resample(all, n_samples=100, replace=1)  
    # print(bootstrapSamples)  
    tempscale = scaleyellow(bootstrapSamples)  
    scale += tempscale  
print(scale / iter)  
  
>>>0.8133598040468601

总结

  • 从上个例子中,我们可以看到,通过自采样的方法,从统计角度,得到的蓝、黄球比例和真实的值非常接近。
  • 有时候我们无法得知真相,只有通过样本来推断。
  • 当今计算机技术的高度发展,使统计研究及其应用跃上了一个新台阶。
  • 这不仅提高了计算的速度,而且可以把统计学家从求解数学难题中释放出来,并逐渐形成一种面向应用的、基于大量计算的统计思维——模拟抽样统计推断, Bootstrap 法就是其中的一种。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值